串行控制台通信如何在微控制器中工作?
How does serial console communication work in a microcontroller?
我的疑问是关于通信的物理层,我从实践中知道,例如使用 teraterm 与 MCU 通信只是启用和配置 UART 外围设备,然后通过 USB 连接微控制器和瞧。
但我还不明白,如果 USB 连接到 DN 和 DP,而 UART 使用 RX 和 TX,主机如何有效地与微控制器通信?
您需要使用uart转usb(反之亦然)的uart-usb接口IC。
有两种可能。
- 您连接到 USB/UART 网桥,例如 FTDI 或 Prolific 制造的设备,
- 微控制器有一个 USB 设备控制器和 USB 堆栈实现 CDC/ACM 设备 class(虚拟 COM 端口)。
首先,桥接芯片将 CDC/ACM 设备提供给主机,并与连接到微控制器 UART 的 UART 交换数据。 I/O 设置波特率等控制对 USB 连接没有影响,而是用于配置 UART link。
在桥接布置中,桥接芯片可能在微板上,也可能在USB/serial转接线中。此外,在内部,桥接芯片是一个带有 CDC/ACM 设备堆栈的微控制器。
与 RS-232 不同,USB 不是点对点全双工连接,也不仅仅是电气连接; USB 需要相当复杂的设备和主机控制器,并且与 UART 串行连接相比更类似于 PCI 等设备总线。 CDC/ACM class 设备符合特定协议以允许“虚拟”UART 出现在主机上。您在 PC 上看到的 UART 是仿真的,实际上并不是桥中的 UART。
实际的物理USB连接是主从连接,数据和I/O控制命令(如波特率和流量控制)在USB数据包中发送,被解包、解释并传输到应用程序通过 CDC/ACM USB 堆栈层。在这种安排中,device,充当从机不能发起交换;而是 host 不断轮询设备,该设备可能 return 包含其“tx”数据的数据包。 USB 的轮询和数据速率足够快,允许单工主从交换模拟全双工 UART 连接,吞吐量高于典型的真实 UART 通常可以达到的吞吐量,当然也比物理 RS-xxx 更快连接。
您可以通过使用 WireShark 等工具观察原始 USB 数据交换来了解这一切的工作原理。您会看到交换的不仅仅是您的应用程序“串行”数据。
我的疑问是关于通信的物理层,我从实践中知道,例如使用 teraterm 与 MCU 通信只是启用和配置 UART 外围设备,然后通过 USB 连接微控制器和瞧。
但我还不明白,如果 USB 连接到 DN 和 DP,而 UART 使用 RX 和 TX,主机如何有效地与微控制器通信?
您需要使用uart转usb(反之亦然)的uart-usb接口IC。
有两种可能。
- 您连接到 USB/UART 网桥,例如 FTDI 或 Prolific 制造的设备,
- 微控制器有一个 USB 设备控制器和 USB 堆栈实现 CDC/ACM 设备 class(虚拟 COM 端口)。
首先,桥接芯片将 CDC/ACM 设备提供给主机,并与连接到微控制器 UART 的 UART 交换数据。 I/O 设置波特率等控制对 USB 连接没有影响,而是用于配置 UART link。
在桥接布置中,桥接芯片可能在微板上,也可能在USB/serial转接线中。此外,在内部,桥接芯片是一个带有 CDC/ACM 设备堆栈的微控制器。
与 RS-232 不同,USB 不是点对点全双工连接,也不仅仅是电气连接; USB 需要相当复杂的设备和主机控制器,并且与 UART 串行连接相比更类似于 PCI 等设备总线。 CDC/ACM class 设备符合特定协议以允许“虚拟”UART 出现在主机上。您在 PC 上看到的 UART 是仿真的,实际上并不是桥中的 UART。
实际的物理USB连接是主从连接,数据和I/O控制命令(如波特率和流量控制)在USB数据包中发送,被解包、解释并传输到应用程序通过 CDC/ACM USB 堆栈层。在这种安排中,device,充当从机不能发起交换;而是 host 不断轮询设备,该设备可能 return 包含其“tx”数据的数据包。 USB 的轮询和数据速率足够快,允许单工主从交换模拟全双工 UART 连接,吞吐量高于典型的真实 UART 通常可以达到的吞吐量,当然也比物理 RS-xxx 更快连接。
您可以通过使用 WireShark 等工具观察原始 USB 数据交换来了解这一切的工作原理。您会看到交换的不仅仅是您的应用程序“串行”数据。