Embedded 基于USB的UART仿真

Embedded 基于USB的UART仿真,embedded,usb,emulation,uart,Embedded,Usb,Emulation,Uart,有人知道是否有可能通过USB模拟UART(简单串行传输和接收)?这将如何实现 我在Microchip的网站上找到了这个链接,但现在还不太清楚 有什么想法吗?谢谢。基本上,通过USB模拟UART有两种选择: 使用现有产品。FTDI公司提供知名且可靠的UART-USB桥接芯片,例如FT230X。赞成:你不需要任何关于USB的详细知识。缺点:如果用于大规模生产,价格昂贵。额外的硬件,需要额外的电源 实现USB设备类“通信设备类”(CDC)。CDC的规范可从USB.org获得,请参阅。优点:批量生产便

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

我在Microchip的网站上找到了这个链接,但现在还不太清楚


有什么想法吗?谢谢。

基本上,通过USB模拟UART有两种选择:

  • 使用现有产品。FTDI公司提供知名且可靠的UART-USB桥接芯片,例如FT230X。赞成:你不需要任何关于USB的详细知识。缺点:如果用于大规模生产,价格昂贵。额外的硬件,需要额外的电源

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


  • 您需要将设备堆栈实现为CDC ACM设备(也称为虚拟COM端口或VCP)。大多数支持USB的微控制器供应商都有示例代码或应用说明

    鉴于此,就Windows而言,您的设备将看起来像一个COM端口。在设备端,您将获得传输的原始数据块。可以为UART和USB接口实现适当的抽象层,以便在必要时提供相同的接口

    一个问题是USB设备需要USB实施者论坛在a(2016年7月23日更正)分配的供应商ID。如果你打算在野外发布你的设备,如果你的设备要被识别并与其他设备正确配合,你真的需要一个。一些微控制器供应商将允许您免费或以更低的费用使用其供应商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和签名证书,但允许您的设备被唯一标识,而不是作为通用串行端口。

    使用FTDI肯定是最好的方式。FTDI?请解释一下。我的经理要求我将集成USB外围设备配置为UART。据我所知,这是不可能的,但他坚持认为是的。FTDI芯片将UART转换为USB。所以在内部,您只需要使用普通的UART外设,但在外部,您可以使用USB插入。在PC端,您可以获得一个虚拟COM端口,这样您就可以将其作为普通串行端口进行交互。这是非常干净和容易的方式,每个人都这样做。我无法想象为什么你真的需要使用芯片的USB外设。@JimFell:你可能在问@TJD:使用芯片外设的原因:批量生产,成本更低,板空间更小。另一方面,对于低容量和一次性的,除非您已经拥有USB视频和代码签名证书,否则它不具有成本效益,并且会带来很高的CPU开销-仅将USB导线连接到PC会产生1ms的中断率,并且在数据传输过程中会产生更高的中断率。简单,切中要害。原来我的经理在谈论实现一个虚拟COM端口。谢谢链接断了。现在应该在这里吗@cp工程师:谢谢你的提示。你的链接指向正确的方向。再深入一步,您就会了解到USB类规范,CDC规范可以在其中找到:。我要补充一点:避免使用基于PL2303的任何USB串行加密狗-芯片组本身看起来很脆弱,Windows和MacOSX的驱动程序都不可靠。在调试嵌入式硬件时,这真是个坏消息,而且您依赖串行端口进行调试。我可以保证,在使用PL2303适配器的windows上会出现问题。如果多个适配器上有太多数据,则会出现蓝屏等。我使用的这些适配器的两个变体在Linux下工作得相当好。我对使用一个利用FTDI USB到串行芯片的板感兴趣,并想知道它如何与STM32微控制器的USB端口接口。我想知道如何从微控制器的角度与它沟通。根据我的理解(我承认这是有限的),micro要将其识别为VCP,就需要FTDI VCP驱动程序。我不确定是否有可能在STM32 micro上安装它,我希望看看除了通过USB与电路板接口之外是否还有其他选择。@mban:如果你对此有疑问,你应该发布一个问题-这不是一个讨论论坛。然而,FTDI芯片用于将UART I/O桥接到USB;您可以直接使用STM32 USB控制器,也可以使用连接到STM32 UART的FTDI。微控制器不需要任何软件与FTDI一起工作;这是一个相当重要的问题