UART - PC 上的错误符号

UART - wrong symbols on PC

  1. 我正在编写一个简单的程序,将数据从 MCU 传输到 PC。
  2. 我正在使用 FTDI 电缆来实现。
  3. 我发送的数据是从 0 到 9 的字符串数字(0x30 到 0x39 作为 ascii 代码)。
  4. MCU和PC端均配置为9600kbps,8位,无奇偶校验,无流控,1个停止位。
  5. 当数据从 MCU 传输到 PC 时 - 符号是错误的。
  6. 当 MCU 的 TX 和 RX 线都相互连接时 - 我可以看到,所有发送的符号都被 MCU 接收到。
  7. 当 FTDI 电缆(连接到 PC)的 TX 和 RX 线相互连接时 - 从 PC 终端发送的所有符号都被 PC 接收。

我无法理解从 MCU 向 PC 发送数据会出现什么问题。

求求你帮忙!

您描述的症状表明 PC 和 MCU 之间的时序不匹配。 UART 串​​行通信可以容忍任一端的波特率不匹配 <5%。在实践中,因为 PC 肯定是准确的,您可能会在嵌入式目标中逃脱高达 10% 的误差——但这是极端的。您的部件的波特率除数编程不正确,或者您的系统时钟不准确,或者根本不是您认为的频率。某些用于降低成本的 MCU 上的 RC 振荡器可能偏离标称值高达 +/-10%。

您应该直接使用示波器验证时钟和波特率,或者费力地验证从 PLL 到 UART 波特率发生器的每个时钟设置。

解决方案比我想象的要简单。 对于我以前的应用程序,我使用了 ATC-810 电缆(USB 转 UART,FT232BL 芯片)。 过去它有效,但现在由于某种原因它不起作用。来自 FTDI 的新驱动程序可能是... 当我使用 TTL-232R-3V3 电缆时 - 我从 MCU 发送的所有数据都在 PC 上接收!

非常感谢您的帮助!!