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.

[参考译文] CC1201:TERM_ON_BAD_packet_EN 未按建议运行

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1351478/cc1201-term_on_bad_packet_en-not-working-as-suggested

器件型号:CC1201

在 CC1201用户指南中、针对 RFEND_CFG0.TERM_ON_BAD_PACKE_EN 说明了以下内容:

启用坏数据包终止
0在错误数据包上终止被禁用。 当接收到错误数据包(地址、长度或 CRC 错误)时、无线电会保持在 RX 状态、而不管 RFEND_CFG1.RXOFF_MODE 如何。
1启用坏数据包终止。 当接收到错误的数据包时、RFEND_CFG1.RXOFF_MODE 被忽略且无线电进入空闲模式(如果使用了 eWOR、则进入睡眠模式)

但是、如果我将 RFEND_CFG0.TERM_ON_BAD_packet_EN 设置为1、则 cc1201会保持 RX 模式、即使存在带有 CRC 错误(LQI_VAL、 Pkt_crc_OK = 0)。

图42:RXDCM 状态图显示、如果数据包有故障、它首先会切换到 RX_END 状态、然后返回 RX。 这里不显示向空闲的转换。 这与 RFEND_CFG0.TERM_ON_BAD_packet_EN 的描述相矛盾。

这是文档中的错误还是我误解了什么?

我的预期是、如果接收到错误的消息、空闲状态将在 RFEND_CFG0.TERM_ON_BAD_packet_EN = 1时更改。

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

    状态图显示了 RX 占空比模式的性能、以说明其工作原理。

    无法针对器件的所有可能设置制作此类图表、因此您可以假设在本例中、TERM_ON BAD_packet 具有其默认值0。

    这意味着当接收到带有 CRC 错误的数据包时、器件保持在 RX 中(通过 RX_END)。

    设置 TERM_ON_BAD_packet_EN = 1将使 RX 终止。

    我已经多次测试此功能、从未见过它的行为与预期不符。

    如果您有其他经验、则需要提供详细的测试设置以及寄存器设置和代码、还需要提供导致 CRC 错误的数据包、以便我们可以尝试在这里重现问题。

    Siri

     

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

    尊敬的 Siri:

    感谢您的答复。 不幸的是,我的经验与你不同。 请参阅逻辑分析仪的以下图片:

    CRC 有效:

    CRC 无效:

    如您所见、即使 LQI_VAL 表示 CRC 错误、CC1201也保持在 RX 状态。

    您将在以下文件中找到我的芯片配置: e2e.ti.com/.../cc120x_5F00_registers.inc.h

    在我的测试用例中、CC1201保持在 RX 模式、接收后会以手动方式重新设置为 RX 模式。 该消息由另一个 CC1201 (SmartRF Studio 7 - e2e.ti.com/.../cc1201_5F00_cfg1.xml)发送

    希望这有助于重现该问题。

    此致、Andreas

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

    从您的寄存器设置中:

    CC120x_REG_entry (PKT_CFG0)      、0x0028、true、0x28)、

    这意味着  PKT_BIT_LEN = 2

    根据文档:

    在固定数据包长度模式下、该字段(非零时)指示在发送/接收 PKT_LEN 字节数后要发送/接收的位数。 当 PKT_LEN_BIT!= 0时、不支持 CRC

    我看到您没有使用固定的数据包长度、因此我不明白您为什么设置 PKT_BIT_LEN。

    可能是、即使使用变量模式、将此设置为!= 0也会影响 CRC 行为。

    除了寄存器设置之外、请向我提供测试代码(或伪代码)、以便我知道您是如何进入 RX 模式(是正常 RX 模式、WOR 模式还是占空比模式)、以及您何时读取不同的寄存器以便能够重现此处的情况。

    Siri

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

    感谢您的回复。 我明白了! 我在 PKT_CFG0寄存器中错误地设置了 BIT3、而不是 RFEND_CFG0寄存器。

    正确的设置包括:

    PKT_CFG0  : 0x20
    RFEND_CFG0: 0x08

    现在一切都正常。 这也解释了"length_config"和"PKT_bit_LEN"之间的设置。

    感谢您的所有帮助!