晚上好…
我从2355示例代码复制并粘贴了 CRC 示例。 我正在通过它运行6个字节、然后将其与消息一起堆叠。 在接收端、我解析前6个字节并通过 CRC 运行、然后对照传输消息的最后两个字节对其进行验证、以验证消息。 我每隔27毫秒就会收到一条消息、我发现通过 rcv crc 和 main 只需大约7us。 我发现、当我发送四条不同的消息(每条消息8字节- 6个有效载荷、2个 CRC)时、所有的消息看起来传输良好、 通过射频链路和接收器上 MSP 的 RX 引脚...通过调试器,我还发现第1个 CRC 校验正常,第2个消息在阵列中看起来很好,但在运行正确的第2个消息6字节后 CRC 它产生的 CRC 与 TX 端完全不同..... 有人能向我解释一下原因吗? 它是否必须与它在以某种方式接收第一条消息时使用第一条消息的种子有关? 或者、您希望 CRC 匹配吗?
下面是一份 CRC 代码的副本、我使用过:
unsigned int crc (char *有效载荷){ unsigned int crc_result; unsigned int i、k; const unsigned int CRC_Init = 0xFFFF; CRCINIRES = CRC_Init; for (i=0;<PAYLOAD_SIZE ;i+=2) { K =(*(有效载荷+ I)<<8)|*(有效载荷+(I+1)); CRCDIRB = k;//将数据输入 CRC __no_operation(); } CRC_RESULT = CRCINIRES; 返回 CRC_RESULT ;}