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.

[参考译文] CC1200:AES 解密问题

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1221482/cc1200-aes-decryption-problem

器件型号:CC1200

问题来了 : 主收发器(CC1200)向从收发器发送数据包(61字节),从收发器成功接收数据包,但 AES 引擎未能对数据包进行解码。 解密后、并不会观察到 RXFIFO 发生变化。

在从收发器中接收数据包之前、使用以下命令进行初始化:

       FUNC_SPI_1_WRITE_STROBE (CC1200_sidle);

       FUNC_SPI_1_WRITE_STROBE (CC1200_SFRX);/*刷新 Rx 缓冲器*/

       FUNC_SPI_1_WRITE_STROBE (CC1200_SRX);/*设置 Rx 模式*/

收到数据包后、我检查 RXFIFO、可以看到它已由主收发器正确加密。  主器件和从器件共享相同的 HAL 函数。

在按照 SWRA483第8页所述单步执行解密过程后、RXFIFO 寄存器保持不变。  

我看到有证据表明、AES 引擎已经运行了、因为在我解码61个字节时、NONCE 第一个字节已经递增4、即已处理了4个16字节的段。  我还看到解密后工作区寄存器会发生改变、所以有些事情正在发生、但 RXFIFO (和 TXFIFO)保持不变。

怎样才能阻止 RXFIFO 在解密过程中不更新?

我的代码遵循 TI 提供的示例代码。

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

    我不明白您的意思、当您说:"当数据包被接收后、我检查 RXFIFO、我可以看到它已由主收发器正确加密。"

    您是否在执行5.3.2下所述的步骤之前从 FIFO 读取数据包?

    除了本节所述的11个步骤之外、您不应执行任何其他操作。

    无法首先读取 FIFO 来查看通过无线方式接收的原始数据、然后再进行解密。

    我已经测试了应用手册中的代码、代码会按预期运行:

    我进行了以下测试:

    TX:传输61字节长数据包(0、1、2、3、...、60)并对其进行加密。

    在接收器上:

    测试1.

    当接收到包时、直接读取 RX FIFO

    在本例中、无线电中的字节看起来是随机的

    测试2.

    当接收到一个包时、把它解密、然后读取 FIFO。

    在本例中,我读取序列0、2、3、4...

    Siri.