串行控制台通信如何在微控制器中工作?

abr*_*uez 0 c embedded microcontroller arm uart

我的疑问是关于通信的物理层,我从实践中知道,例如使用 teraterm 与 MCU 通信只是启用和配置 UART 外设,然后通过 USB 连接微控制器和瞧。

但对我来说,如果 USB 连接到 DN 和 DP,而 UART 使用 RX 和 TX,主机如何有效地与微控制器通信,这对我来说还没有意义?

Cli*_*ord 5

有两种可能。

  1. 您连接到 USB/UART 桥接器,例如 FTDI 或 Prolific 制造的设备,
  2. 微控制器具有 USB 设备控制器和 USB 堆栈,用于实现 CDC/ACM 设备类(虚拟 COM 端口)。

在第一种情况下,桥接芯片将 CDC/ACM 设备呈现给主机,并与连接到微控制器 UART 的 UART 交换数据。设置波特率等 I/O 控制对 USB 连接没有影响,而是用于配置 UART 链接。

在此处输入图片说明

在桥接装置中,桥接芯片可能位于微型板上,也可能位于 USB/串行适配器电缆中。此外,桥接芯片内部是一个带有 CDC/ACM 设备堆栈的微控制器。

与 RS-232 不同,USB 不是点对点全双工连接,也不仅仅是电气连接;USB 需要相当复杂的设备和主机控制器,与 UART 串​​行连接相比,它更类似于 PCI 等设备总线。CDC/ACM 类设备确认特定协议以允许“虚拟”UART 出现在主机上。您在 PC 上看到的 UART 是模拟的,实际上并不是桥中的 UART。

物理实际的 USB 连接是主从连接,数据和 I/O 控制命令(如波特率和流量控制)以 USB 数据包的形式发送,通过 CDC/ACM USB 进行解包、解释和传输到应用层堆。在这种安排下,作为从设备的设备不能发起交换;相反,主机不断轮询设备,该设备可能会向其返回包含其“tx”数据的数据包。USB 的轮询和数据速率足够快,允许单工主从交换模拟全双工 UART 连接,吞吐量高于典型真实 UART 的吞吐量,当然比物理 RS​​-xxx 快联系。

通过使用 WireShark 等工具观察原始 USB 数据交换,您可以了解所有这些是如何工作的。您将看到,正在交换的不仅仅是您的应用程序“串行”数据。