一句话: 累加和 CRC = 0xFF - 所有字节的累加和的低 8 位。接收端累加和 + CRC == 0xFF 就是正确帧。手工写测试命令时不用跑代码算——一张纸上加加减减,五秒出 CRC。
适合谁读:用串口助手调试协议、手工算 CRC 总算错的嵌入式开发者。
公式
CRC = 0xFF - (Byte1 + Byte2 + ... + ByteN) 的低 8 位例子
发命令:73 74 00 04 07 01 01
累加和 = 0x73 + 0x74 + 0x00 + 0x04 + 0x07 + 0x01 + 0x01 = 115 + 116 + 0 + 4 + 7 + 1 + 1 = 244 = 0xF4 CRC = 0xFF - 0xF4 = 0x0B完整帧:73 74 00 04 07 01 01 0B 0D 0A
接收端验证
接收到的所有数据字节累加 + CRC = 0xFF → 帧正确把整帧字节加起来(不含 CRC 和帧尾),加上 CRC 字节,结果 = 0xFF。不是 0xFF → 数据传输错误或手动算错了。
为什么用累加和不用 CRC16
累加和缺一个 bit 翻转可能检测不出来。但串口调试场景值在于快——不需要查表、不需要库、纸笔五秒算完。对可靠性要求高的场景用 CRC16 或 CRC32,串口助手测试用累加和够了。
有用的话点个收藏,下次调试直接用。有问题欢迎评论区交流,看到了都会回。