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.

[参考译文] CC1312R:SDK 6.40.00.13中的 UART2驱动程序出现问题

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1218044/cc1312r-problem-with-uart2-driver-in-sdk-6-40-00-13

器件型号:CC1312R

您好!

我们最近在项目中升级到了 SDK 6.40.00.13。 我们现在看到了 UART2驱动程序的相关问题。 在某些情况下、可能会丢失几个字节、并且在发生这种情况时还会返回错误的数据顺序。 我可以看到 UART2驱动程序中关于 SDK 6.40中的 RX 数据发生了重大变化。

在本例中、我们已将 UART 设置为

  • Ringbuffer 大小32字节
  • .rxIntFifoThr      = UART2CC26X2_FIFO_THRESHOLD_4_8
  • uartParams.readMode = UART2_Mode_Blocking;
  • uartParams.readReturnMode = UART2_ReadReturnMode_partial;
  • 波特率115200
  • 使用 RTS 和 CTS

我们使用 UART2_readTimeout 读取到大小为1024字节的缓冲区、我们实际执行的总传输约为330 KB (即我们调用 UART2_readTimeout、每次请求1024个字节都调用它例如330次。 这个用例是通过蜂窝式调制解调器下载文件)。

我们看到的是、有时在请求1024个字节时、我们仅返回16个字节、然后对 UART2_readTimeout 的调用将以一些不同的块返回请求的其余数据、 大部分时间是36个字节、后跟972个字节、例如、第三次调用 UART2_readTimeout。

问题在于返回的16个字节。 它将始终以00 00 00 00开头、这是不正确的数据。 然后16个字节和以下36个字节块中的其余数据的顺序错误。

例如(我对对应的器件进行了颜色编码、这样您就会发现收到的顺序有误)

接收到错误的数据(16个字节后32个字节)

00 00 00 00 20 25 64 0D 0A 00 5B 25 73 3A 25 64     73 3A 25 64 5D 20 30 78 25 30 38 78 0D 0A 00 5B 25 73 3A 25 64 5D 20 49 6E 76 61 6C 69 64 20 65

应为(16个字节、然后32个字节)

73 3A 25 64 5D 20 30 78 25 30 38 78 0D 0A 00 5B        25 73 3A 25 64 5D 20 49 6E 76 61 6C 69 64 20 65 76 65 6E 74 20 25 64 0D 0A 00 5B 25 73 3A 25 64

我找到了使其正常工作的一些权变措施

  • 将缓冲区大小从1024更改为961字节或更低。 更高字节似乎也可以正常工作、例如2048字节
  • 将 RX FIFO 阈值更改为 UART2CC26X2_FIFO_THRESHOLD_1_8 (这很奇怪、因为 UART API 中规定"@注意、应避免将 UART2CC26X2_FIFO_THRESHOLD_1_8作为 RX FIFO 阈值、因为使用 UART2_ReadReturnMode_Partial 时、这可能导致读取操作不可靠")

 

您能介绍一下吗?

Br、

Johannes Kjällquist ć

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

    您好、Johannes:

    感谢您提供此报告和权变措施。 您描述的问题实际上是可能发生的问题。

    因此、我们在即将推出的7.10 SDK 中提供了针对该问题的修复程序。

    然后、我建议您在新的 SDK 发布后立即试用它。

    此致、

    Arthur

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

    Arthur、您好!

    感谢您的反馈。

    事实证明,我的第一个变通办法,以更改所请求数据的大小实际上是无效的。 当我删除调试时、打印停止工作。 但是、更改阈值的第二个权变措施至少起作用了。

    期待 SDK 7.10版。

    Br、

    Johannes Kjällquist ć