7

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

我在 Microchip 网站上找到了这个链接,但不是很及时。

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

有任何想法吗?谢谢。

4

2 回答 2

12

您需要将设备堆栈实现为 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 和签名证书,但允许您的设备被唯一标识,而不是作为通用串行端口。

于 2012-10-01T19:18:05.647 回答
10

基本上,您有两个选项可以通过 USB 模拟 UART:

  1. 使用现有产品。FTDI 公司提供众所周知的可靠的 UART-USB 桥接芯片,例如 FT230X。优点:您不需要任何有关 USB 的详细知识。缺点:如果用于大规模生产,价格会很高。额外的硬件,需要额外的力量。

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

于 2012-10-01T19:17:20.803 回答