我正在尝试在STM324x9I-EVAL开发板上通过USB接口实现UART。目的是通过串行发送命令到伺服控制器(或其他硬件)。我已经成功地在开发板上实现了USB_Device_CDC示例,但不确定没有安装驱动程序的PC如何使用此功能。至于其他硬件,USB端口现在是否只是看起来像一个串行端口?还是需要在另一端安装驱动程序或某种接口?我想指出的是,我知道以下帖子:Emulating UART over USB,但我认为我的问题在那个回答的上下文中没有得到完全解答。
http://www.usb.org/developers/docs/devclass_docs/
这些文档规定了 CDC ACM 设备应该具有哪些 USB 描述符来向主机描述自己,以及它应该具有哪些接口和端点,以及串行数据将如何在 USB 事务和传输方面表示。对于Linux系统,有一个cdc_acm内核模块,它已经成为内核的标准部分很长时间了,应该可以自动与插入的任何CDC ACM设备配合使用。
对于Mac OS X系统,有一个AppleUSBCDCACM驱动程序,应该可以自动与插入的任何CDC ACM设备配合使用。
请注意,为了使这些驱动程序识别您的设备并与其配合使用,您的设备必须在其USB描述符中具有某些值,并且要求可能因您所讨论的确切驱动程序版本而异。
不,那是错误的想法。USB端口仍将看起来像USB端口,但操作系统提供的各种USB驱动程序将识别插入该端口的CDC ACM设备,并在操作系统的串行端口列表中创建一个新条目。然后,如果您运行一些只知道串行端口的软件,它可以连接到该端口。实际上,如果您制作一个复合设备,您可以将单个USB设备插入单个USB端口,实际上具有两个或更多虚拟串行端口。现在,USB端口是否会像串行端口一样简单?