通过USB模拟UART

Jim*_*ell 7 embedded usb emulation uart

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

我在Microchip网站上找到了这个链接,但它不是即将发布的.

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

有任何想法吗?谢谢.

Cli*_*ord 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 Update自动获取.

因此,结果是,如果您的供应商已经提供了代码和已签名的驱动程序(或者您没有使用Windows),那么对于实验,您可以这样做,但是要部署产品,您将需要供应商ID和代码签名证书.说实话,这是一个雷区.

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

  • 我将补充一点:避免使用基于PL2303的任何USB串行加密狗 - 芯片组本身看起来很复杂,Windows和MacOSX的驱动程序都不可靠.调试嵌入式硬件并依靠串口进行调试时,真是个坏消息. (3认同)
  • 我可以使用PL2303适配器来保证窗户出现问题.如果在多个适配器上有太多数据等蓝色屏幕等.此外,我使用的这些适配器的几个变体在Linux下运行良好. (2认同)

Hab*_*abi 9

基本上,您有两种方法可以通过USB模拟UART:

  1. 使用现有产品.FTDI公司提供众所周知的固态UART-USB桥接芯片,例如FT230X.亲:您不需要任何有关USB的详细知识.缺点:如果用于大规模生产则昂贵.额外的硬件,需要额外的电力.

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