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.

[参考译文] RTOS/PROCESSOR-SDK-AM437X:UART 读取问题

Guru**** 2587345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/594233/rtos-processor-sdk-am437x-uart-read-issue

器件型号:PROCESSOR-SDK-AM437X

工具/软件:TI-RTOS

当前开发环境:

Windows 7

CCS v6.1.2.00015

目标处理器 Sitara AM437X

NDK 2_24_03_35

PDK_AM437X_1_0_4

PROCESSOR_SDK_RTOS_AM437X_3_01_00_06

我们正在尝试将 UART 3集成到我们的系统中。

UART 1的行为正常且可以理解。

我们尝试使用 UART 3、其阻塞模式配置与 UART 1相同。

UART 1作为 调试端口运行、它接受键盘命令并输出状态。 它在阻塞模式下运行、这样 UART_READ() 操作 会导致线程阻塞、直到接收到字符为止。

此接口的性质意味着 UART 1 FIFO 通常为空、因为它正在等待用户的手动输入。

我们尝试 以类似的方式使用 UART 3、但我们连接到一个 GPS 设备、该设备 向我们广播数据。 我们看到 的是 UART_READ() 操作会将数据返回给应用程序,直到它第一次遇到 FIFO 为空。 一旦处于此状态、线程就会阻止、但不会返回数据。 我们在系统中配置了数据分析仪、因此我们可以看到正在从 GPS 器件传输的数据包。 UART_RXFIFO_LVL 寄存 器也在递增、表明数据正被压入 UART FIFO。

我们更希望在二进制模式下运行 UART 3、但 也尝试了文本模式。  GPS 数据是 NMEA,因此是简单的 ASCII 接口,因此我们应该能够使用与 UART 1相同的操作特性配置 UART 3?

总结:一旦遇到第一个 FIFO 为空, UART 3将不会将任何后续接收到的数据返回给应用程序。 但是 UART 1可以吗?

如果对这一问题的经验有任何想法或资料,将不胜感激。  

谢谢

SI

         

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将此主题移至器件论坛。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否使用 TI AM437x EVM 或您自己的电路板? 我们有多种类型的 AM437x EVM、该电路板使用 UART 实例0。

    在您的设置中、问题出在 UART 3中。 我相信您自己为此添加了代码、从而启用 PRCM 域并更改 PINMUX。 我们有一个有关如何更改 AM335x、 www.ti.com/.../sprac32.pdf 上的 UART 实例的示例 相同的步骤适用于 AM437x、请先检查步骤是否正确。

    此致、Eric