有人知道是否可以通过USB模拟UART(简单的串行发送和接收)?这将如何实现?
我在Microchip网站上找到了此链接,但它不是即将发布的。
http://www.microchip.com/forums/m522571-print.aspx
有什么想法吗?感谢。
答案 0 :(得分:12)
您需要将设备堆栈实现为CDC ACM设备(也称为虚拟COM端口或VCP)。大多数支持USB的微控制器供应商都有示例代码或应用笔记。
鉴于此,就Windows而言,您的设备看起来像COM端口。在设备端,您将获得原始数据块传输。可以为UART和USB接口实现适当的抽象层,以便在必要时为其提供相同的接口。
一个问题是,USB设备需要USB实施者论坛分配的供应商ID,$5000 fee(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 Update自动获取。
所以结果是,如果您的供应商已经提供了代码和已签名的驱动程序(或者您没有使用Windows),那么对于实验,您可以这样做,但是要部署产品,您将需要供应商ID和代码签名证书。说实话,这是一个雷区。
更简单的方法是使用FTDI USB串行芯片。这对于没有自己的USB控制器的微控制器特别有用,但数据传输速率将受到micro和/或FTDI的UART接口而非USB速度的限制。 FTDI芯片可以使用FTDI的VID / PID原样使用,也可以使用自己的VID / PID进行自定义。自定义会使您重新需要获取VID和签名证书,但允许您的设备唯一标识而不是通用串行端口。
答案 1 :(得分:9)
基本上,您有两种方法可以通过USB模拟UART:
使用现有产品。 FTDI公司提供众所周知且坚固的UART-USB桥接芯片,例如, FT230X。亲:您不需要任何有关USB的详细知识。缺点:如果用于大规模生产则昂贵。额外的硬件需要额外的电源。
实现USB设备类“通信设备类”(CDC)。 CDC的规范可从USB.org获得,请参阅here。 Pro:批量生产便宜(如果您的微控制器上有USB)。 Con:您需要有关USB的详细知识。