USB串口驱动(通信协议)

时间:2015-02-10 05:37:10

标签: linux usb usbserial

我想开发一个包含USB控制器的FPGA,其USB控制器实现USB转串口协议。 我认为USB转串口适配器很像键盘或鼠标。 但我发现了相反的结果。我测试的设备使用“供应商特定”协议。 这意味着每个USB串行驱动程序都需要自己的驱动程序,这似乎非常低效。

对于大多数工程师来说这可能不是问题,因为他们可以从商店购买USB串行适配器,并且其供应商提供必要的软件。

但如果我想在FPGA内部开发自己的USB转串口设备,我必须从头开始。我不想开发自己的协议,我自己的驱动程序。

是否有任何打开的USB转串口协议(并且Linux驱动程序可用),以便我可以在不侵犯某人的情况下实施?

重新发明轮子没有意义。 任何评论,任何建议将不胜感激。

谢谢!
Aki-

1 个答案:

答案 0 :(得分:0)

您搜索CDC设备类。如果您部署设备,则设备(芯片)供应商通常会提供可与产品一起使用的VID和PID组合。

USB classes description here

您绝对应该为产品提供唯一的序列号(通常在片上ROM中有硬闪存的序列号),因此您的产品可以绑定到相同的设备路径(Windows中的COM#)。

设备配置由其描述符给出。通过描述符,您应该提供如上所述的序列号。 CDC设备类具有最小的实现,其包括用于线路配置的一个设置端点(大多数请求可以回复“不支持”)和两个用于数据输入和数据输出的批量端点。通过简化实现,数据端点是原始数据 - 在PC端发送的内容在设备端接收,反之亦然。但是在这之上使用一些调制解调器协议是没有障碍的。

没有在FPGA上完成此操作,而是在多个MCU上完成此操作。作为起点,我将为一些现代MCU(如AVR)或一些小型ARM(例如NXP 11U系列)下载CDC演示,以获取灵感。

在Linux下支持CDC设备类很好,使用像lsusb这样的实用程序在开发过程中非常有用。在Windows平台上,使用Win7的情况要好得多,在WinXP下,您必须为每个VID和PID组合提供特定的.inf文件,以使用通用串行驱动程序,并将您的设备显示为COM#。