有谁知道是否可以通过 USB 模拟 UART(简单串行发送和接收)?这将如何实现?
我在 Microchip 网站上找到了这个链接,但不是很容易找到。
http://www.microchip.com/forums/m522571-print.aspx http://www.microchip.com/forums/m522571-print.aspx
有任何想法吗?谢谢。
您需要将设备堆栈实现为 CDC ACM 设备(也称为虚拟COM端口或 VCP)。大多数支持 USB 的微控制器供应商都有示例代码或应用说明。
鉴于此,就 Windows 而言,您的设备看起来就像 COM 端口。在设备端,您将获得传输的原始数据块。可以为 UART 和 USB 接口实现适当的抽象层,以便在必要时提供相同的接口。
一个问题是 USB 设备需要由 USB 实施者论坛分配的供应商 ID,地址为5000美元费用 http://www.usb.org/developers/vendor/(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 和签名证书,但允许您的设备被唯一标识,而不是作为通用串行端口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)