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和签名证书,但允许您的设备唯一标识而不是通用串行端口.