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.

[参考译文] AM3352:UART 接收超时、但 FIFO 为空

Guru**** 2581345 points
Other Parts Discussed in Thread: AMIC110

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/769619/am3352-uart-receive-timeout-but-fifo-empty

器件型号:AM3352
主题中讨论的其他器件:AMIC110

我们间歇性地得到 UART 接收超时、但接收 FIFO 为空。

我从用户手册中了解到这是不可能的。 FIFO 中必须有数据才能发生该超时。  这是已知问题吗? 解决方案还是权变措施?

我们使用的是 AM335x 和 AMIC110 Sitara 处理器技术参考手册第19章中介绍的 UART。

TI AM335x TRM 修订版 P spru73p.pdf

19.3.8.1.3.7.1超时计数器
当接收器线路(uarti_Rx)在等于4倍的时间内处于高电平时、检测到 RX 空闲条件
编程字长+ 12位。 uarti_Rx 在每个位的中途被采样。
对于睡眠模式、当 uarti_Rx 上有活动时、计数器复位。
对于超时中断、计数器仅在 RX FIFO 中有数据时计数、计数值为
当 uarti_Rx 上有活动或读取 UARTI.UART_RHR 寄存器时复位。

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

    请注意、我们在器件勘误表中提供了一些 UART 问题:

    www.ti.com/.../sprz360i.pdf

    请检查此文档、您可能会遇到勘误表。

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

    您好、Pavel、

    RE Advisory 1.0.35:UART:事务处理到 MDR1寄存器可能会对 UART 运行造成意外影响。 该描述似乎与接收超时和 FIFO 级别无关。  但是、我对此有疑问。

    听起来就像咨询中说的、访问 MDR 可能会干扰 UART 的运行。 换言之、如果您的代码未访问 MDR、UART 操作将不会受到干扰。 是这样吗? 或者、是否说在启动期间错误地初始化 MDR 可能会在 稍后的操作期间导致故障? 我们看到的问题前面是大量成功 的 UART 通信。

    即 UART 接收超时且 FIFO 为空。 一种理论是、在超时设置之前有一个小时间窗口、在此期间从 FIFO 读取最后一个字符不会阻止超时的上升。 有可能吗?

    基于 UART 中断操作的参考代码示例?

    提前感谢、

    Paul Heatherington

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

    Paul、

    [引用 user="Paul HETHERINGTON">换言之,如果您的代码未访问 MDR,则 UART 操作不会受到干扰。 是这样吗?

    是的、这也是我的理解。

    [引用 USER="Paul HETHERINGTON">关于 UART 接收超时和 FIFO 为空。 一种理论是、在超时设置之前有一个小时间窗口、在此期间从 FIFO 读取最后一个字符不会阻止超时的上升。 这是可行的吗?[/引述]

    是的、您似乎遇到了一些计时/同步问题。检查以下 e2e 线程是否有帮助:

    [引用 user="Paul HETHERINGTON"]基于 UART 中断操作的参考代码示例?

    您是否使用 AM335x TI PSDK Linux v5.02 (内核 v4.14.79)?

    此致、
    帕维尔

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

    感谢您的反馈。 我的理解是、此问题与已知的勘误表无关。 当接收 FIFO 为空时、如何产生 UART 接收超时中断、我仍然感到很不明白。

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

    这种意外/伪中断可能是由于配置错误和/或资源保护不当造成的。 例如、查看以下 e2e 线程:

    e2e.ti.com/.../2569775

    您是否使用 AM335x TI PSDK Linux v5.02 (内核 v4.14.79)?

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

    您好、Pavel、

    我们使用 Mentors Nucleus 操作系统。

    我们的中断代码不会禁用中断或使用锁定。 该处理器上的 UART 中断是否需要其中一个中断?

    再次感谢、

    Paul

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

    这是特定于软件的、我无法就 Mentors Nucleus 操作系统提出建议。 您可以与 Mentor 支持团队一起检查您的软件。

    在硬件方面、我怀疑当 FIFO 中有数据时、您会收到超时中断、但当您检查 FIFO 时、数据已传输或 FIFO 已复位/清除。

    如果您接收到超时 IRQ、您应该读取 UART_RHR 寄存器、从而清除此中断(中断复位方法)、或者当 FIFO 中没有数据时、您可以再次获得此中断。

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您没有与 e2e 主题相关的问题、请关闭/验证/解决此主题。

    此致、
    帕维尔