【发布时间】:2020-04-27 01:57:50
【问题描述】:
在 SAMD MCU 阵列之间的 SPI 通信总线上工作。
我有一个类似于{ 0x00, 0xFF, 0x00, 0xFF } 的传入数据包。
接收器芯片对传入的数据包执行 CRC16 检查。
由于我每次都期待完全相同的数据包,因此我希望在数据包有效时具有零 CRC 校验和,而不是在传输错误时具有零校验和。
我知道我可以在发送数据包时将计算出的 CRC16 添加到数据包的末尾,并且在接收端,CRC 校验将输出 0,但在这种情况下,不可能将 CRC16 校验和添加到数据包,因为数据包由 SPI 线上的多个发送芯片构成,每个芯片只填充整个数据包中自己的两个字节。
我需要在接收端加载一个初始 CRC 校验和,因此在检查传入数据包后,生成的 CRC 等于 0(如果数据包完整)。
答案here on SO其实是我要找的,不过是针对CRC32格式的,代码原理我也不是很懂,所以无法重写if for CRC16格式。
任何帮助将不胜感激!
问候, 尼可
【问题讨论】:
标签: c++ embedded packet crc16 samd21