[技术支持] 通信中常用CRC8、CRC16、C32校验数据

[复制链接]
4326|3
 楼主| 地瓜patch 发表于 2025-5-23 16:42 | 显示全部楼层 |阅读模式
数据通信中常用CRC8、CRC16、C32三种校验
三种都用过,但是不是很清楚什么情况下用CRC8,什么情况用CRC32
与校验的数据长度又关系么?数据量越大,用crc32.数据量小用crc8
dukedz 发表于 2025-5-23 19:00 | 显示全部楼层
用crc8, 碰撞的概率 1/256
用crc16, 碰撞的概率 1/65536
用crc32, 碰撞的概率 1/0x100000000

碰撞就是错误的数据被误认为正确的概率

用 crc8 碰撞概率太高,用 crc32 又会增加协议开销和计算速度(没有多余硬件crc 的时候)

所以 256 字节的数据包通常用 crc16, 譬如串口通讯的 modbus、cdbus
 楼主| 地瓜patch 发表于 2025-5-29 20:08 | 显示全部楼层
dukedz 发表于 2025-5-23 19:00
用crc8, 碰撞的概率 1/256
用crc16, 碰撞的概率 1/65536
用crc32, 碰撞的概率 1/0x100000000

又学到了
绒兔星球 发表于 2025-10-4 16:08 | 显示全部楼层
CRC8、CRC16、CRC32 是通信中常用的循环冗余校验算法,核心是通过多项式运算生成校验码,实现数据完整性检测。CRC8 生成 8 位校验码,适用于短数据(如传感器数据);CRC16 生成 16 位校验码,常用在串口、CAN 通信;CRC32 生成 32 位校验码,检错能力更强,用于以太网、存储设备。三者均通过接收端重算校验码与发送端比对,判断数据是否丢包或出错,保障通信可靠性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1927

主题

15214

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部