UART - PC 上的错误符号
UART - wrong symbols on PC
- 我正在编写一个简单的程序,将数据从 MCU 传输到 PC。
- 我正在使用 FTDI 电缆来实现。
- 我发送的数据是从 0 到 9 的字符串数字(0x30 到 0x39 作为 ascii 代码)。
- MCU和PC端均配置为9600kbps,8位,无奇偶校验,无流控,1个停止位。
- 当数据从 MCU 传输到 PC 时 - 符号是错误的。
- 当 MCU 的 TX 和 RX 线都相互连接时 - 我可以看到,所有发送的符号都被 MCU 接收到。
- 当 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 上接收!
非常感谢您的帮助!!
- 我正在编写一个简单的程序,将数据从 MCU 传输到 PC。
- 我正在使用 FTDI 电缆来实现。
- 我发送的数据是从 0 到 9 的字符串数字(0x30 到 0x39 作为 ascii 代码)。
- MCU和PC端均配置为9600kbps,8位,无奇偶校验,无流控,1个停止位。
- 当数据从 MCU 传输到 PC 时 - 符号是错误的。
- 当 MCU 的 TX 和 RX 线都相互连接时 - 我可以看到,所有发送的符号都被 MCU 接收到。
- 当 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 上接收!
非常感谢您的帮助!!