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.

[参考译文] TM4C1294KCPDT:在使用 UART 进行高速通信时无法正常通信

Guru**** 2527710 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1022598/tm4c1294kcpdt-cannot-communicate-properly-when-using-uart-for-high-speed-communication

器件型号:TM4C1294KCPDT

各位专家、您好!

我的客户无法以230,400bps 的速率与 UART 正常通信。

详细信息如下。
当它们将数据"00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"从 PC 发送到 TM4C 的 UART 时、TM4C 侧最多只能读取07的数据。
此时、Rx FIFO 显示为空(UARTFR 寄存器中的 RXFE 位= 1)。
此外、即使读取 UARTDR 寄存器、也不能读取任何正常数据。
然后、它们从 PC 发送"10 11 12 13"数据、TM4C 读取"08 09 0A 0B"。 (发送的数据和接收的数据似乎被8字节移位)

数据移位不是恒定的、但很可能会按 UART 中断 FIFO 深度选择寄存器(UARTIFLS)的 RXIFLSEL 中设置的字节数进行移位。

此外、还发现了以下内容。

  • 如果波特率降低或传输间隔增加、则此问题不太可能发生。
  • 他们已使用示波器确认传输的波形没有问题。
  • 不会产生溢出错误等错误标志。
  • 诸如 be、PE、FE、UARTRIS 和 UARTMIS 位等错误位保持为0。 没有错误。

您是否知道为什么即使通信不能正常工作也未设置错误位?

您是否知道导致此问题的原因?

此致、
Sasaki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="7882" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1022598/tm4c1294kcpdt-cannot-communicate-properly-when-using-uart-for-high-speed-communication "]
    • 不会产生溢出错误等错误标志。
    • 诸如 be、PE、FE、UARTRIS 和 UARTMIS 位等错误位保持为0。 没有错误。
    [/报价]

    他们如何测试这些标志? RX 字节是否被缓冲和清空? 当 FIFO 超过16个字节时、FE 标志处理 RX 中断比较棘手。 尝试管理32字节读取更具挑战性。

    建议在 INTRX、INTRT 中断期间首先测试状态标志。

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

    Sasaki、您好!

     一些问题:

     -您是否通过调用 UARTFIFOEnable()启用了 RXFIFO?

     -您选择了什么 UART FIFO 深度来生成 FIFO 中断?  哪种 FIFO 级别可提供更好的结果?

     -您能否设置系统乒乓缓冲器,以确保接收到所有传入的 UART 数据。 由于传入的 UART 流太快、是否有可能覆盖缓冲区中的某些数据?

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

    您好、GI-San、Charles-San、

    感谢你的答复。

    问题是中断处理程序优先级设置丢失、并且优先级保持为0。 解决此问题可以解决问题。
    此致、
    Sasaki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="93620" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1022598/tm4c1294kcpdt-cannot-communicate-properly-when-using-uart-for-high-speed-communication/3779686 #3779686"]您选择了什么 UART FIFO 级别来生成 FIFO 中断?

    这将是对发布的问题的怀疑。 当更多的 HS 模式数据通过快速且重新发生的本地中断事件进入 FIFO 时、全局中断优先级问题可能会表现出其他争用区域。