通过 USB 模拟 UART

问题描述 投票:0回答:2

有人知道是否可以通过 USB 模拟 UART(简单串行发送和接收)?这要如何实现?

我在 Microchip 网站上找到了此链接,但不是很容易找到。

http://www.microchip.com/forums/m522571-print.aspx

有什么想法吗?谢谢。

embedded usb emulation uart
2个回答
13
投票

您需要将设备堆栈实现为 CDC ACM 设备(也称为 虚拟 COM 端口 或 VCP)。大多数支持 USB 的微控制器供应商都有示例代码或应用说明。

鉴于此,就 Windows 而言,您的设备将看起来像 COM 端口。在设备端,您将获得传输的原始数据块。如有必要,可以为 UART 和 USB 接口实现适当的抽象层,以便为它们提供相同的接口。

一个问题是 USB 设备需要 USB 实施者论坛分配的供应商 ID,费用为 5000 美元(2016 年 7 月 23 日正确)。如果您打算在野外发布您的设备,那么您确实需要一个设备来识别您的设备并与其他设备正确运行。一些微控制器供应商将允许您免费或支付较低费用使用他们的供应商 ID 作为产品 ID 的子集,但只有当您从他们那里购买大量设备时,他们才可能这样做。

另一个问题是,在 OSX 或 Linux 上,无需任何其他驱动程序即可识别 CDC/ACM,而 Windows 则更加挑剔,需要 INF 文件将特定 USB 供应商和产品 ID 与 usbser.sys 驱动程序关联起来。然后您就进入了驱动程序签名的整个世界,这对于使用 Windows Vista 64 或任何版本的 Windows 7 来说是必不可少的。代码签名签名也会花费您金钱。如果您的供应商提供了示例 VCP 代码,他们也可能会提供签名的驱动程序。 STMicroelectronios 的 STM32 VCP 示例甚至经过 WHQL 认证,因此可以通过 Windows 更新自动获取。

因此,结果是,如果您的供应商已经提供了代码和签名驱动程序(或者您没有使用 Windows),您就可以进行实验,但要部署产品,您将需要供应商 ID 和代码签名证书。老实说,这有点雷区。

更简单的方法是使用 FTDI USB<->串行芯片。这对于没有自己的 USB 控制器的微控制器特别有用,但数据传输速率将受到微控制器和/或 FTDI 的 UART 接口而不是 USB 速度的限制。 FTDI 芯片可以使用 FTDI 的 VID/PID 按原样使用,也可以使用您自己的 VID/PID 进行自定义。自定义使您重新需要获取 VID 和签名证书,但允许唯一地识别您的设备,而不是作为通用串行端口。


11
投票

基本上,您有两种通过 USB 模拟 UART 的选项:

  1. 使用现有产品。 FTDI 公司提供知名且可靠的 UART-USB 桥接芯片,例如FT230X。优点:您不需要任何有关 USB 的详细知识。缺点:如果用于大规模生产,价格昂贵。额外的硬件,需要额外的电源。

  2. 实现USB设备类“通信设备类”(CDC)。 CDC 规范可从 USB.org 获取,请参阅此处。优点:批量生产便宜(如果您的微控制器板载 USB)。缺点:您需要有关 USB 的详细知识。

© www.soinside.com 2019 - 2024. All rights reserved.