【问题标题】:UART - wrong symbols on PCUART - PC 上的错误符号
【发布时间】:2015-07-08 18:30:46
【问题描述】:
  1. 我正在编写一个简单的程序来将数据从 MCU 传输到 PC。
  2. 我正在使用 FTDI 电缆来实现这一点。
  3. 我发送的数据是从 0 到 9 的字符串数字(0x30 到 0x39 作为 ascii 代码)。
  4. MCU 和 PC 终端均配置为 9600 kbps、8 位、无奇偶校验、无流控、一位停止位。
  5. 当数据从 MCU 传输到 PC 时 - 符号错误。
  6. 当 MCU 的 TX 和 RX 线都相互连接时 - 我可以看到,所有发送的符号都被 MCU 接收了。
  7. 当 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


【解决方案1】:

您描述的症状表明 PC 和 MCU 之间的时序不匹配。 UART 串​​行通信可以容忍任一端的波特率不匹配

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

【讨论】:

    【解决方案2】:

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

    非常感谢您的帮助!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      相关资源
      最近更新 更多