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.

[参考译文] CC2652R7:当 BLE 堆栈被启用时、在 UART 通信中发生组帧错误

Guru**** 2585285 points
Other Parts Discussed in Thread: CC2652R7, LP-CC2652R7, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1181050/cc2652r7-framing-errors-occur-in-uart-communication-when-ble-stack-is-enabled

器件型号:CC2652R7
Thread 中讨论的其他部件: 、SysConfig

您好!  

我们的定制板使用 CP2102N USB 串行桥接器来提供 USB 接口、该接口通过 UART 与 CC2652R7通信。

CP2102N 和 CC2652R7之间的 UART 波特率设置为3Mbps、并使用 RTS/CTS 硬件流控制。

通过 CP2102N 将数据从 USB 主机传输到 CC2652R7时、已确认以下问题。

  • 禁用 BLE 堆栈后、接收数据成功、没有任何问题。
  • 当 BLE 堆栈被启用时接收数据会导致 CC2652R7上的组帧错误。

当我们使用示波器的串行解码器监视从 CP2102N 发送到 CC2652R7的 TX 数据包并发现时序正确、两种情况下都没有假数据包。

启用无线电堆栈是否可能无法以如此高的波特率接收 UART?

射频内核的运行是否有可能导致 CC2652R7 UART 的接收时序偏差?

如果是、请告知我们如何解决此问题。

我们还确认、将 CP2102N 与 LP-CC2652R7连接会重现此问题。

因此、我们不认为问题是由定制电路板设计中的晶体引起的。

谢谢。

SDK:SimpleLink SDK 5.30.01.01

UART 驱动程序:UART2

UART 设置:

  • 停止位:无
  • 数据:8位
  • 奇偶校验:无
  • 硬件流控制:已启用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    CC2652R7的最大波特率为2.89MB。 此信息可在数据表的第7.14.5.1节 UART 特性中找到(如下所示)。

    根据器件正在进行的处理、这可能会降低最大波特率。 您能否提供有关组帧错误表现形式的更多信息? 您能否提供所发生行为的逻辑分析仪跟踪? 我还建议迁移到最新的 SDK (6.30)、因为对 UART2驱动程序进行了一些改进、这可能有助于解决您看到的行为。

    此致、

    1月  

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

    您好!  

    最新 SDK (6.30)中的 UART2驱动程序解决了帧错误问题。

    此外、波特率已设置为2.66MHz、低于规格的最大值。

    但是、仅 当启用 BLE 堆栈(运行射频内核)时、我们仍然看到缺失的数据包。

    下面是每个条件下串行解码器的捕捉。

    当然、来自 CP2102N 的传入数据包看起来是一致的、波特率不受 BLE 堆栈的存在的影响。  

    启用射频内核是否可能会导致 CC2652R7的接收器波特率不匹配?

    1) 1)禁用 BLE 堆栈时、来自 CP2102N 的传入数据包



    2) 2)启用 BLE 堆栈时、来自 CP2102N 的传入数据包  

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

    您好!

    我很高兴听到 UART2驱动程序为您提供了更好的服务! 该行为是否在所有波特率下发生? 例如、如果您将波特率设置为2MBaud、您是否仍会错过数据? 在提供的屏幕截图中、显示了发送到 CC2652R7器件的正确内容? 您能否尝试打印接收到的数据以查看传输被切断的位置? 您是否还可以尝试将 RX 环缓冲区大小增加到更大的值、并检查行为是否保持不变? 此选项可在 SysConfig 中更改。

    此致、

    1月

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

    您好!

    不能、这种行为只在较高的波特率下发生。

    当我们将波特率设置为2Mbps 时、即使启用了射频堆栈、串行通信也能按预期工作。  

    是... 这些屏幕截图显示了从串行桥(CP2102N)发送到 CC2652R7的数据包。

    我们已经检查并优化了 RX 环缓冲器的大小、但行为没有改变。

    到目前为止、我们的理解是、启用射频内核可能会降低2.89Mbps 的最大波特率、即规范中的最大波特率。

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

    您好!

    明白了。 感谢您的澄清! 我很高兴听到这种行为在较低的波特率下消失。 您能否分享 CC2652R7遗漏的数据? 它是否始终是相同的字节? 例如、它是否始终是传输中的最后一个字节? 拥有额外的任务和进程可能会降低器件可支持的最大有效波特率。 这可能是这里可能发生的情况。

    此致、

    1月

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

    您好!  
    感谢您的评论。
    确认数据丢失在数据包中的随机位置以2.89Mbps 的速率出现。
    目前、即使启用了 BT 堆栈、2.4Mbps 波特率也能提供稳定的通信、因此我们将此设置作为解决方案。