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

Hex文件格式CRC校验

[复制链接]
0度虚实 提问时间:2015-1-29 21:32 /
阅读主题, 点击返回1楼
收藏 评论19 发布时间:2015-1-29 21:32
19个回答
0度虚实 回答时间:2015-1-30 13:08:40
shaoziyang 发表于 2015-1-30 09:23
就这么简单啊,代码自己很容易实现吧。没有什么困难的。

先判断第一个字节是不是冒号,然后判断第2/3字 ...

hex记录结构我了解,就是最后这个校验码算来算去都不对,不知道怎么算的,安你的意思,代码是不是这样。
char  CRC8(char *pData, uint16_t len)  
{  
  uint16_t i;
  uint32_t result = 0;
  for(i = 0; i < len; i++)
  {
    result += pData;
  }
  result = result % 256;
  
  return (char)result;
}
shaoziyang 回答时间:2015-1-30 13:14:36
result 改用 uint8_t就可以了。
0度虚实 回答时间:2015-1-30 13:21:18
技术部-徐亚菲 发表于 2015-1-30 11:21
怎么和modbus通信协议似的!

对,协议和modbus协议数据项都一样的,一个校验码8位,一个16位的,校验方式也不一样
0度虚实 回答时间:2015-1-30 13:24:11
shaoziyang 发表于 2015-1-30 13:14
result 改用 uint8_t就可以了。

:1011000071079907E8071008D206FA0671079907D0
计算结果还是和原先一样,0x30而不是D0.
校验数据项是1011000071079907E8071008D206FA0671079907
shaoziyang 回答时间:2015-1-30 13:33:09
0度虚实 发表于 2015-1-30 13:24
:1011000071079907E8071008D206FA0671079907D0
计算结果还是和原先一样,0x30而不是D0.
校验数据项是1011 ...

计算结果是补码啊。其实直接把校验也加上,如果结果是0,说明就是正确的。

0x30+0xD0=256=0
QianFan 回答时间:2015-1-30 13:43:35
0度虚实 发表于 2015-1-30 09:05
就这么简单吗,能给个算法吗?

这个算法怎么感觉是checkSum啊。
st芯片下载的校验使用的算法是checkSum,不是CRC吧
0度虚实 回答时间:2015-1-30 13:45:08
shaoziyang 发表于 2015-1-30 13:33
计算结果是补码啊。其实直接把校验也加上,如果结果是0,说明就是正确的。

0x30+0xD0=256=0 ...

太感谢,困扰我很久了.关于补码问题,没涉及到负数,结果为什么会是补码
shaoziyang 回答时间:2015-1-30 14:07:27
0度虚实 发表于 2015-1-30 13:45
太感谢,困扰我很久了.关于补码问题,没涉及到负数,结果为什么会是补码 ...

补码这是HEX规范定义的。你想啊,最后所有数加起来,只判断是不是0,效率就比较高,也简单一些。
lkl0305 回答时间:2015-1-30 14:11:06
累加
0度虚实 回答时间:2015-1-30 14:29:37
shaoziyang 发表于 2015-1-30 14:07
补码这是HEX规范定义的。你想啊,最后所有数加起来,只判断是不是0,效率就比较高,也简单一些。 ...

嗯嗯,简单有效,感谢。
12

所属标签

相似问题

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