This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2355:CRC 问题

Guru**** 2529150 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/903865/msp430fr2355-crc-questions

器件型号:MSP430FR2355

晚上好…

我从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
;}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    对于第一条消息、CRC 结果与消息中的结果相同吗? 但 对于接下来的三条消息、CRC 结果与消息中的消息不同。

    我建议您将第二条消息更改为第一个订单、以查看它是否位于订单上或消息中的 CRC 错误。

    如您所见、通过 向 CRCINIRES 寄存器写入种子来初始化寄存器、即可开始信号计算的生成。 如果不起作用、您能否将测试数据发送给我? 我将为您进行检查。

    伊斯天

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有一个很棒的指针 此问题已在另一种情况下得到解决...

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我看到 Bruce 的回答! 我将关闭此主题。

    我忘记指针也会是一个问题!

    伊斯天