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.

[参考译文] TM4C1294NCPDT:UART

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/631242/tm4c1294ncpdt-uart

器件型号:TM4C1294NCPDT

您好!

我使用  ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\UART_echo  来测试 UART。

我已启用 uart0和 uart1、运行频率为120MHz 的时钟。

uart0上的数据接收到 uart1上的 TXD、 反之亦然。 (仅在中断处理程序中交换)。

问题说明:

两个 UART 均连接到 PC。 配置波特9600后、我将从一个 UART 向另一个 UART 发送50k 的数据文件。 如果通电并发送数据、一切都正常。

但是、当数据正在传输时、如果我关闭器件电源并打开电源、我将在 UART 的另一侧被垃圾处理。 传输完完整的50k 数据后、我继续发送数据(受限数据)、接收数据将仅是正确的。

请告诉我如何解决此问题。

此致、

Dileep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dileep、
    虽然描述有点令人困惑、但在我看来、在初始化/配置外设(对两个 UART 都有效)后、您应该立即清除 RX UART FIFO。 只有在这之后、您才会开始在主循环上传输/接收数据。
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是基于 UART 的通信的缺点。 它们依赖于字符之间的暂停来确定起始位置、如果不是、则可能会丢失同步。 这是自校正的、但可能需要一段时间。 这是串行文件传输协议使用数据包和校验和的原因之一(只有一个原因)。

    这假设您在字符之间没有暂停、如果有、则该过程应在该点纠正。 也可以通过增加停止位的数量来改进这一点。

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

    除了"停止位增加"之外、"周期性"使用"中断"可能不会带来优势? (相同的"暂停"-但对于传输的每个 char 都没有"添加位罚分"。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    中断字符通常保留用于错误信令、某些程序或连接对其响应不是很好、但显式暂停可以实现这一点。

    我建议在使用串行文件传输协议(Xmodem、Kermit 等)时、这种暂停也会自然发生。 您确实会增加一些开销、但结果会更可靠。 此外、还有大量可用协议可供选择、这些协议具有不同的吞吐量、开销和其他特性。

    Robert