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.

[参考译文] CC2640R2L:与 CC2640R2L 中 UART 相关的问题

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1013227/cc2640r2l-issue-related-to-uart-in-cc2640r2l

器件型号:CC2640R2L
主题中讨论的其他器件:CC2640

大家好、

CC2640与 UART 相关、我们面临一个问题。 如果经常发送查询、UART 将无法响应我们的查询。 在分析过程中,我们了解 到问题的原因是 TI RTOS 的 UART_READ()调用所需的时间比预期的要长得多。

通过使用 CRO,我们测量并确认 UART_READ()在接收到 Rx 字节的最后一位之后的28ms (大约)后从阻塞模式中退出。

本实验以1200波特率进行。

是否有人遇到过这类问题?是否有任何解决方案或解决方法可用于此问题?

 

器件/测试/设置信息

器件:CC2640R2L

SDK:simplelink_cc2640r2_sdk_4_20_00_04

示例:Simple Central。

 我们使用 UART 作为以下配置的唯一任务(禁用其他任务以关注此问题)。 我们进行了单字节回波实验、在该实验中、我们观察到接收回波时的延迟为43ms 至62mS (在 PC 串行终端的 Tx 和 Rx 字节之间)。

我们在 Launch Pad 上使用相同的示例以及来自驱动程序示例代码的 ReadyMade UART Echo 观察到的相同情况。

请参阅以下代码片段、该代码片段用于使用 CRO 进行单字节回显测试

观察结果

  1. 接收到 Rx 字节的最后一位后,从 UART_READ()传出大约需要28ms。 参考下图中 Rx 字节最后一位之后两个垂直光标之间的时间间隔(28ms)
  2. UART_WRITE()似乎工作正常(无附加延迟)  

此致、

Bhavin  

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

    您好、Bhavin、

    我已指派一名专家对此发表评论。 同时、您提到 在未修改 的 UART 回显 示例中观察到这种行为? 您能否验证是否能够在5.10 SDK 上看到此行为? 修改波特率时观察到的时间间隔是否不同?

    此致、

    1月

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

    您好、Jan、

    我们进行了进一步的实验,这次我们在 UART_Read() API 中读取4个字节和22个字节作为要读取的字节的数量。 观察结果是、28mS 的延迟是恒定的、无论字节数如何。

    最后一个字节的最后一位和来自 UART 读取 API 的28mS 延迟。

    以下是 CRO 图像。

    此致、

    Bhavin P

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

    您好、Bhavin、

    这些是有趣的发现。

    在延迟方面、您的目标是什么?

    我目前正在研究我们的 UART 驱动程序、以了解延迟是来自硬件还是软件。 请多多包涵。

    此致、

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

    您好 Clement、

    我们正在使用逐字节读取、这会在收到的每个字节中累积28mS 延迟、最终会影响到连接到该字节的其他器件的吞吐量。

    此致、

    Bhavin P

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

    您好、Bhavin、

    遗憾的是、我们在 CC26x0系列上提供的硬件需要软件中的一些权变措施、最终会导致您看到的延迟。 如果您可以在较大的块中进行 RX、则可以将延迟分散到较薄的位置、这就不再重要了。 如果您的情况要求您逐字节 RX、我可以考虑几种改善情况的方法:

    • 抛弃 UART 驱动程序并直接调用 driverlib -对于一次性一个字节轮询模式用例、这将是相当简单的。 器件进入待机或空闲状态所需的 CPU 时间越长、选项越少。 该文件位于 source/ti/devices/cc26x0r2/driverlib/uart.h 下、并定义 UART 驱动程序使用的所有低级控制函数。
    • 查看最新 CC26X2 SDK 中的 UART2驱动程序。 CC26x2上有一个新的传输结束中断、因此2640不会开箱即用、但应该可以将驱动程序修整为仅轮询模式组件、而这些组件不依赖于新中断。 最后,这将与第一个备选方案相似,但它提出了处理工作的不同方法。

    我认为在2640上修改现有 UARTCC26XX 驱动程序以删除此延迟、而不会比上述选项更有效。 如果您对这些选项有疑问、或者您将如何实施这些选项、请告诉我。

    谢谢
    James