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.

[参考译文] LAUNCHXL-CC1312R1:UART 设置和 RingBuffer 大小

Guru**** 2591590 points
Other Parts Discussed in Thread: CC1312R

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1063204/launchxl-cc1312r1-uart-settings-and-ringbuffer-size

器件型号:LAUNCHXL-CC1312R1
主题中讨论的其他器件:CC1312R

我有一个 Raspberry PI 以921600波特向 CC1312R 发送 ASCII 数据。  我经常收到

数据损坏(约10%)。  我在2个 Raspberry PI 之间看不到问题。  可能会出现这种情况

CC1312R 侧的配置存在问题。  我不熟悉 UART 设置

电源。  我使用了这些基本设置;

UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_full;
uartParams.readTimeout = UART_WAIT_FOREVER;
uartParams.writeTimeout = UART_WAIT_FOREVE;
uartParams.baudrate = 921600;

我已将 UART RingBuffer 大小配置为4096

将 UART FIFO 设置为1024。  我正在写入和读取96字节的数据包。  我还没有能够进行提醒

完全损坏的数据。  我是否需要设置参数来使其正确?

TW

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

    是否可以改为使用 UART2驱动程序:  

    UART2驱动程序是 UART 驱动程序的更新版本。 之所以命名为 UART2、是因为 API 中发生了变化、以支持使用现有 UART 驱动程序与应用程序向后兼容。 UART 和 UART2驱动器之间的主要差异:

    • UART2具有用于接收/发送数据的 RX 和 TX 环形缓冲器。
    • UART2使用 DMA 在 UART FIFO 与 RX 和 TX 环形缓冲器之间传输数据。
    • 用于读取和写入数据的 UART2 API 已经变得更加类似于 POSIX。
    • UART2提供事件通知、允许应用接收 TX 开始和完成事件以及 RX 错误事件。

    您是否还可以尝试降低波特率、以检查损坏的数据量是否是波特率的函数。   

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

    之三:

      谢谢。  我想为 UART 设置 DMA。  因此、UART2可能是最有效的方法。  我尝试使用较低的波特率、但它们

    实际上给了我更多损坏的数据。  我认为这是因为我在闭环处理数据以及来自 Raspberry PI 的数据

    没有足够快地到达 CC1312R。

    TW

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

    请告诉我 UART2是否有帮助。 如果没有、我们必须仔细查看您的工作。  

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

    之三:

       UART2可以提供帮助。  我在 Raspberry PI 和 CC1312之间更快地传输数据。  但是、我认为 Raspberry 的传输速度太快、

    这样、当 cc1312尝试处理接收到的数据时、大部分数据会重叠、这意味着之前的传入数据会覆盖之前的数据  

    前者有机会得到处理。  我必须减慢 Raspberry 上的传输速度、以免覆盖数据。  但我真的想推动

    Raspberry 上的传输速度、并测试 CC1312的性能。  我已经将 RX 环缓冲器扩展到40000个、没有太多的内存

    其他用途。  是否也有办法扩展 FIFO 大小?

    谢谢、

    TW

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

    如参考手册所示、FIFO 大小是固定的:

    (来自 https://www.ti.com/lit/pdf/swcu185)

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

    之三:

      新年快乐!  感谢您的回复。  根据您提供的所有信息、考虑到硬件平台和传输驱动程序算法、我认为我已经尽可能地强调了 UART 吞吐量。  我并没有那么努力解决问题、而是尝试使用特定应用实现最佳数据速率。  再次感谢您的帮助。

    TW