我正在尝试通过 STM324x9I-EVAL 开发板上的 USB 接口(interface)实现 UART。目的是将命令串行发送到伺服 Controller (或其他硬件)。我已经在开发板上成功实现了 USB_Device_CDC 示例,但我不确定如果没有另一端带有驱动程序的 PC,它究竟是如何工作的。就其他硬件而言,USB 端口现在是否会简单地看起来像一个串行端口?还是在另一端仍然需要驱动程序或某种接口(interface)?
我确实想指出,我知道以下帖子:
Emulating UART over USB
但我不相信我的问题在该答案的范围内得到了完全回答。
最佳答案
USB 连接不像 UART 那样是点对点连接。它需要主机和设备处于主/从关系。设备无法发起数据传输;它必须由主机不断轮询。
CDC/ACM 类设备在 PC 主机上提供虚拟 COM 端口,但这不允许设备与 UART 接口(interface)通信。它在软件层面看起来像一个串行端口,但没有实现 UART 物理层。引擎盖下发生了很多事情,使它看起来像一个 PC 串行端口,但在物理层面上没有一个类似于 UART 通信。
有些设备充当 UART/USB 桥接器(例如来自 FTDI 和 Prolific),您可以(有点昂贵)从具有 USB 设备 Controller 和 UART 的微 Controller 构建自己的设备,但桥接器是 USB 设备和仍必须连接到 USB 主机;这些通常用于将 PC 连接到缺少 USB Controller 或使用 USB Controller 的软件/CPU 开销太大的微 Controller 。
从理论上讲,您可以将具有 USB 主机 Controller 的微 Controller 连接到具有 USB 设备 Controller 的微 Controller ,但是您需要分别在每个微 Controller 上安装主机和设备软件堆栈,并且一旦有了 USB 连接,实现 CDC/ACM 的效率就有些低了使用可用带宽。 CDC/ACM 类的主要目的是允许“旧版”软件在 PC 上运行。
如果您需要连接到“真正的”串行端口,您应该使用真正的 UART - 在任何情况下,它都比微 Controller 上的 USB Controller 更普遍。
关于embedded - 用于 STM32 微 Controller 的 UART over USB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30602485/