【发布时间】:2015-07-08 18:30:46
【问题描述】:
- 我正在编写一个简单的程序来将数据从 MCU 传输到 PC。
- 我正在使用 FTDI 电缆来实现这一点。
- 我发送的数据是从 0 到 9 的字符串数字(0x30 到 0x39 作为 ascii 代码)。
- MCU 和 PC 终端均配置为 9600 kbps、8 位、无奇偶校验、无流控、一位停止位。
- 当数据从 MCU 传输到 PC 时 - 符号错误。
- 当 MCU 的 TX 和 RX 线都相互连接时 - 我可以看到,所有发送的符号都被 MCU 接收了。
- 当 FTDI 电缆(连接到 PC)的 TX 和 RX 线相互连接时 - 从 PC 终端发送的所有符号都被 PC 接收。
我无法理解从 MCU 向 PC 发送数据时会出现什么问题。
请帮忙!
【问题讨论】:
-
即使您将两者设置为相同的波特率,您看到的行为也表明不匹配。将角色从 PC 发送到 MCU 时会发生什么?
-
使用示波器来验证信号。
-
你说
5. When the data transferred from the MCU to the PC - symbols are wrong.- 他们怎么错了?位是否移位?炒?看起来是随机的吗? -
这可能取决于PC上的接收方法,您没有提供详细信息。您是否总是使用终端仿真器接收,或者您的真实代码是否使用某种轮询(非中断)解决方案?在使用“终端”的 PC 环回测试中,您可能正在从键盘输入字符,因此这可能与 MCU 上的发射器代码进行比较,因为如果您的 实际 PC 代码轮询串行输入,它可能会丢失字节。
-
或者,也许当 MCU 以最快的速度传输时,会出现流量控制问题,尽管 9600 波特并不是特别快。您从未在环回测试中提及任何有关连接 RTS/CTS 的内容。当 MCU 以最快的速度传输到终端时,您可能需要启用(和有线)流控制。
标签: serial-port embedded uart ftdi