USB CDC实现 虚拟串口
现在很多电脑已经不带232了,特别是手提电脑。这使很多使用手提在外调试人员非常不方便。或许你可以买一条市面上usb转232转换线,但这些线抗干扰不是太好,在一些干扰大的地方会发生连接中断的问题,所以往往要加光耦隔离器。在一些高端的单片机一般带USB接口,如果可以使用这些接口做一个USB的虚拟com口将会非常实用,但是使用USB一般要编写上位机驱程。没有windows驱程编写基础的朋友一般很为难。其实微软的CDC类中含有这一类USB转com的类,Windows也自带这方面的驱程。就像市面上的usb鼠标,u盘一样,windows里面已经有了他们的驱动函数库,只要我们按照windows的CDC描述来配置USB就可以了。
关于CDC的类描述类容请参考Universal Serial Bus Class Definitions for Communication Devices 的PDF文件。它是下面所有内容的纲领。
下面讲解下制作步骤:
1:把对应的描述符发送出去:下面是发送内容
const USB_DEVICE_DESCRIPTOR DeviceDescr =
{
// device descriptor
0x12,
DESC_DEVICE,
LE_WORD(0x0101), // bcdUSB
0x02, // bDeviceClass
0x00, // bDeviceSubClass
0x00, // bDeviceProtocol
MAX_PACKET_SIZE0, // bMaxPacketSize
//设备ID
LE_WORD(0xFFFF), // idVendor
LE_WORD(0x0005), // idProduct
LE_WORD(0x0100), // bcdDevice
/* 不要使用原来的ID
0x71,0x04, // PHILIPS公司的设备ID Vendor ID = PHILIPS Semiconductor,Inc.
0x78,0x23, // 设备制造商定的产品ID Product ID
0x00,0x01, // 设备系列号 Device release number in binary-coded decimal
*/
0x01, // iManufacturer
0x02, // iProduct
0x03, // iSerialNumber
0x01, // bNumConfigurations
};
const USB_DESCRIPTOR usb_descr =
{
// configuration descriptor
{
0x09,
DESC_CONFIGURATION,
LE_WORD(67), // wTotalLength
0x02, // bNumInterfaces
0x01, // bConfigurationValue
0x00, // iConfiguration
0xC0, // bmAttributes
0x32 // bMaxPower
},
// control class interface
{
0x09,
DESC_INTERFACE, // 4
0x00, // bInterfaceNumber
0x00, // bAlternateSetting
0x01, // bNumEndPoints
0x02, // bInterfaceClass
0x02, // bInterfaceSubClass
// 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module
0x00, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module
0x00 // iInterface
},
// header functional descriptor
0x05,
CS_INTERFACE,
0x00,
LE_WORD(0x0110),
// call management functional descriptor
0x05,
CS_INTERFACE,
0x01,
0x01, // bmCapabilities = device handles call management
0x01, // bDataInterface
// ACM functional descriptor
0x04,
CS_INTERFACE,
0x02,
0x02, // bmCapabilities
// union functional descriptor
0x05,
CS_INTERFACE,
0x06,
0x00, // bMasterInterface
0x01, // bSlaveInterface0
// notification EP
0x07,
DESC_ENDPOINT,
INT_IN_EP, // bEndpointAddress
0x03, // bmAttributes = intr
LE_WORD(8), // wMaxPacketSize
0x0A, //
了通信设备类及实现虚 拟设备的原理,设计并实现了基于通信设备类的虚拟串口驱动...8 第 3 章 USB 和 USB CDC 协议 ......
虚拟串口的实现_专业资料。基于USB的CDC类的ACM功能,讨论了如何在不需要改变应用程序的前提下完成USB到串口的转换,实现虚拟串口的功能。维普...
在 USB 标准子类中,有一类称之为 CDC 类,可以实现虚拟串口通信的协议,而且由于 大部分的操作系统(Windows 和 Linux)都带有支持 CDC 类的设备驱动程序,可以自动...
在设计中,软件部 分采用 USB 的 CDC 类标准来实现虚拟串口, 这样可以 使用操作系统(Windows,Linux)自带的驱动程序;在 硬件设计中,使用自带 USB 从设备接口的 ...
论文研究设计了基于 STM32 单片机的 USB 虚拟串口驱动程序的结构和实现方 案,...8 3.2 USB CDC 协议 ......
函数, 实现读写串口数据, 完成串口设备的数据与 USB 数据之间的转换。 3. 1 虚拟串口系统初始化模块 通常 CDC 类由通信类接口和数据类接口组成, 在 2 USB ...
通过虚拟串口形式实现Modbus协议的通信_专业资料。分析了USB通讯设备(CDC)协议的机制与流程,实现USB虚拟串口,并提出通过虚拟串口实现Modbus协议通信方法。本设计使用操作...
YJ4600USB虚拟串口方法_计算机硬件及网络_IT/计算机_专业资料。扫描枪使用设置说明...4. 安装完成后,系统会再次提示安装 usbcdcacm_xxxxx 驱动,只需安照之前 4600...
在 USB 标准子类中,有一类称之为 CDC 类,可以实现虚拟串口通信的协议,而且由于大部分的操作系 统(Windows 和 Linux)都带有支持 CDC 类的设备驱动程序,可以自动...
嵌入式系统的USB虚拟串口设计_吴明琪_互联网_IT/计算机_专业资料。嵌入式系统的...在设 计中, 软 件部摘 要 分采用 U SB 的 CDC 类标准来实现虚拟串口, ...
MCU以及Microchip应用程序库中的 CDC类固件实现USB到串口的数据转换通信 通过虚拟COM端口将基于RS232的UART应用程 序移植到带有USB外设的单片机 开发USB CDC主机应用...
闽公网安备 35021102001881号 
热门文档