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

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
帮顶,帮顶
asssdz-382474 回答时间: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时钟开了没有,它可是要配置时钟的

大师,我查了资料,上面没有讲到要开时钟啊,请指示,谢谢
12下一页

所属标签

相似问题

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