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.

[参考译文] CC1352P7:如何使用专有射频实现定制 FEC?

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1415529/cc1352p7-how-to-implementing-a-custom-fec-with-proprietary-rf

器件型号:CC1352P7

工具与软件:

您好、我的朋友们、

我想知道是否有任何示例可以说明如何使用专有射频实现定制 FEC 方案?

我的主要问题是在 Tx 侧、FEC 应该覆盖整个负载加上 CRC。 在这种背景下、我想知道是否有方法可以获得针对特定有效载荷生成的 CRC、然后像线性3/4块代码一样将整个内容馈送到简单编码器?

此外、最大的问题是如何在 RX 上执行 FEC 解码、然后是 CRC 校验? 是否可以在 Rx 模式下查看原始无线数据包并使用专有射频? 此外、如果有任何 API 来计算 CRC 校验和、或者我们应该编写一个简单的代码来针对 CRC 进行计算。

非常感谢您提供任何帮助或建议。

谢谢。

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

    嗨、Omid:

    如果要查看进出调制解调器的数据、 可以在此处查看可用的调试信号: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/proprietary-rf/proprietary-rf-users-guide/rf-core/signal-routing.html

    您可以根据需要实现 CRC。 如果您选择使用我们的 CRC、您可以根据需要配置它(字节长度、多项式、初始值、如果它是使用或不使用同步字(bCrcIncSw)和带或不带标头(bCrcIncHdr)等计算得出)。 您可以在此处查看数据包格式: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/proprietary-rf/proprietary-rf-users-guide/proprietary-rf/packet-format.html?highlight=crc#crc-calculation

    您也可以关闭 CRC 计算、计算完整的自定义 CRC 并根据需要构建数据包。 如果要实现自定义 SW FEC、则应使用固定的数据包长度、以便正确解释数据包。

    此致、
    等等

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

    感谢您的答复 Theo、

    很高兴我们能够访问 CPE 信号、甚至将这些信号绑定到用于"向外"访问和回调的 GPIO。
    不过、真正的问题是如何访问数据? 例如、我可以执行以下操作:

    1.等待 CPE 信号、表明该信号在 RX 处通过解调器、然后访问数据包指针的位置。
    2.对 FEC 填充的存储器地址的内容执行信号处理。
    3.计算 CRC?

    我的意思是这个问题可以归结为这样一个事实:如果数据包指针位置被实时填充并且解调的数据可在 CPE 信号之后立即访问?

    此外、是否有代码库或代码片段可以举例说明这一点?

    谢谢  

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

    您的要求是不可能的。

    您需要获取要传输的数据、执行 SW FEC、计算 CRC、然后将数据写入 指向的 RF_cmdPropTx.pPktis 中的"缓冲区"中。

    同样、在 RX 端、您需要接收数据条目中的所有数据、然后对接收到的数据执行任何解码、CRC 计算等。

    BR

    Siri

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

    感谢您的澄清、但是否有办法访问原始数据?
    我的意思是、如果传递 CRC、我认为缓冲区会被填充、如果 CRC 校验通过、则会触发回调。 (我是说 TI 栈会自动应用于双方的 CRC)  
    如果您可以访问原始数据、我必须在哪种类型的 RX 回调中访问缓冲区、以确保正确填充了该缓冲区?

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

    对原始数据的唯一访问是通过可输出到引脚的调试信号、正如我在第一个回应中提到的:  

    https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_41_00_17/docs/proprietary-rf/proprietary-rf-users-guide/rf-core/signal-routing.html

    您可以查看  MCE_GPO0、它显示了 发送时进入调制器的二进制数据信号

    没有地方可供您检查已计算出的 CRC 等  

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

    至于前导码和/或同步字之后的数据、我认为 我可以禁用 TI 堆栈的 CRC、获取应用程序中的有效载荷缓冲区并执行 FEC 和 CRC。 对吗? 我担心的是、如果 CRC 失败、TI 堆栈不会填充缓冲区。 因此、我认为我必须禁用 CRC、但我不确定接收时将如何填充缓冲区以及何时必须访问有效负载进行处理。

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

    您指的是哪种 TI 堆栈?

    在发送/接收您想要的专有内容时、不应使用任何堆栈。

    您应使用传播 API (CMD_PROP_TX 或 CMD_PROP_TX_ADV)并直接使用射频驱动器发送命令。

    在命令中、您可以完全控制关闭 CRC、不插入长度信息、不添加长度信息等

    您还可以配置前导码和同步字。

    不会向数据包中添加任何其他内容、您在 API 中配置的内容就是您发送的内容。

    例如、如果要传输以下数据包:

    0x55 0x55 0x55 (前导码)

    0x93 0x0B 0x51 0xDE (同步)

    0x01 0x02、0x03、0x04、0x05、0x06 (有效载荷)

    0XXX 0xYY (CRC)

    然后配置 TX 命令和 setup 命令、如下所示(仅显示与格式相关的字段)

    RF_cmdPropRadioDivSetup.preamConf.nPreamBytes = 0x4; // 4 bytes preamble
    RF_cmdPropRadioDivSetup.preamConf.preamMode = 0x0; // Send 0 as the first preamble bit
    RF_cmdPropRadioDivSetup.formatConf.nSwBits = 0x20; // 32 bites sync
    RF_cmdPropTx.syncWord = 0x930B51DE;
    RF_cmdPropTx.pktConf.bUseCrc = 0x0; // Turn off CRC
    RF_cmdPropTx.pktConf.bVarLen = 0x0; Use fixed packet length
    RF_cmdPropTx.pktLen = 0x08; // Transmit 6 payload bytes and 2 CRC bytes 
    RF_cmdPropTx.pPkt = packet; // The packet you want to send (packet[] = {0x01 0x02, 0x03, 0x04, 0x05, 0x06, 0xXX, 0xYY}

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

    谢谢、我指的是专有堆栈。 我明白你在说什么。 因此、在 Rx 侧、缓冲区将始终被填充、并且可以通过回调进行访问、对吧?

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

    在 RX 端、需要使用固定的数据包长度、并为要传输的最长数据包(包括 CRC)设置足够长的数据包长度。

    由于您需要手动收集数据、因此接收方无法从放入数据条目的数据以原子方式得出长度。

    Siri