你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CRC校验

[复制链接]
gtygg 提问时间:2016-11-9 22:39 /
悬赏5ST金币未解决
//通过CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-2 ) && 0XFF00 ) 来获取高字节;
//通过CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-1 ) && 0X00FF ) 来获取低字节;


//现在遇到的问题是:获取不到正确的CRC值,请各路大神帮忙分析下,是获取方式不对,还是CRC校验程序不对,谢谢!



//CRC查表校验函数
//puchMsgg为待校验数据的首地址DataLen为待校验数据个数,返回值为校验结果
u16 CRC16( u8 puchMsgg, u8 DataLen )
{       
u8 uchCRCHi=0xFF;  //CRC高字节初始化
u8 uchCRCLo=0xFF;  //CRC低字节初始化
u8 uIndex;  //CRC循环中的索引
crc16_Base_address=0;

while( DataLen-- )  //传输消息缓冲区
{
//  uIndex=uchCRCHi^puchMsgg++;  //计算CRC         
  uIndex=uchCRCHi^puchMsgg;
  crc16_Base_address+=1;         
         
  uchCRCHi=uchCRCLo^auchCRCHi[uIndex];
  uchCRCLo=auchCRCLo[uIndex];         
}
  return( (uchCRCHi<<8) | uchCRCLo );
}       




      //CRC高低字节顺序为,高字节在前,低字节在后;
      //通过CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-2 ) && 0XFF00 ) 来获取高字节;
      //通过CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-1 ) && 0X00FF ) 来获取低字节。


      //如果接收到的高字节校验码,与计算出来的高字节校验码一致
      if( rcv_bufferfer_temp[rcv_num_temp-2]== CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-2 ) && 0XFF00 )  
                  {

                    //如果接收到的低字节校验码,与计算出来的低字节校验码一致
                    if( rcv_bufferfer_temp[rcv_num_temp-1]== CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-2 ) && 0X00FF )                   
                          {
                            rcv_data_correct= 1;  //接收到了一帧正确的数据
                                       
                          }                       
                 }

收藏 1 评论12 发布时间:2016-11-9 22:39

举报

12个回答
peter001 回答时间:2016-11-10 08:34:02
crc时钟开了没有,它可是要配置时钟的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

高二毛 回答时间:2016-11-10 08:37:58
  if( rcv_bufferfer_temp[rcv_num_temp-2]== CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_temp-2 ) && 0XFF00 )

不知道你的rcv_bufferfer_temp是U8还是U16,如果是U8,那么这个代码就不对了。==后面的部分应该右移8位
看着你的代码意思rcv_bufferfer_temp是U8的。
你看看

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

anobodykey 回答时间:2016-11-10 09:41:03
帮顶,帮顶
assssdz 回答时间:2016-11-10 12:29:50
:):):)
gtygg 回答时间:2016-11-10 19:16:48
高二毛 发表于 2016-11-10 08:37
if( rcv_bufferfer_temp[rcv_num_temp-2]== CRC16( rcv_bufferfer_temp[crc16_Base_address], rcv_num_te ...

rcv_bufferfer_temp是U8的,请指教,谢谢
gtygg 回答时间:2016-11-10 19:17:45
peter001 发表于 2016-11-10 08:34
crc时钟开了没有,它可是要配置时钟的

没有开时钟,我研究下,谢谢
天外流星_0 回答时间:2016-11-12 08:34:00
这个跟时钟还有关系?
天外流星_0 回答时间:2016-11-12 08:35:48
我估计是只管照搬CRC校验程序,完全不管其中意思的。。。。。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

gtygg 回答时间:2016-11-12 19:25:16
peter001 发表于 2016-11-10 08:34
crc时钟开了没有,它可是要配置时钟的

大师,我查了资料,上面没有讲到要开时钟啊,请指示,谢谢
peter001 回答时间:2016-11-13 00:17:04
gtygg 发表于 2016-11-12 19:25
大师,我查了资料,上面没有讲到要开时钟啊,请指示,谢谢

固件库的例程 CRC的 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zbber 回答时间:2016-11-13 08:43:07
这个跟时钟还有关系?
yhyeefocus 回答时间:2017-1-7 15:13:44
正在研究CRC。。。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版