USB串口设备_笔记

实现USB串口(参考圈圈教材)

1、修改Device Descriptor,需在设备描述符中指定设备类型,bDeviceClass字段 = 0x02(通信设备类的类代码),子类与所使用的协议都指定为0。

修改PID/VID。

2、修改Configuration Descriptor,需具备两个接口,CDC类接口和数据类接口。

  • 在CDC设备中,必须有一个CDC接口,以供数据类接口衣服,CDC接口使用标准接口描述符,有一个中断输入端点,用来报告状态。

 /*******************CDC类接口描述符*********************/
 //bLength字段。接口描述符的长度为9字节。
 0x09,
 
 //bDescriptorType字段。接口描述符的编号为0x04。
 0x04,
 
 //bInterfaceNumber字段。该接口的编号,第一个接口,编号为0。
 0x00,
 
 //bAlternateSetting字段。该接口的备用编号,为0。
 0x00,
 
 //bNumEndpoints字段。非0端点的数目。CDC接口只使用一个中断
 //输入端点。
 0x01,
 
 //bInterfaceClass字段。该接口所使用的类。CDC类的类代码为0x02。
 0x02,
 
 //bInterfaceSubClass字段。该接口所使用的子类。要实现USB转串口,
 //就必须使用Abstract Control Model(抽象控制模型)子类。它的
 //编号为0x02。
 0x02,
 
 //bInterfaceProtocol字段。使用Common AT Commands(通用AT命令)
 //协议。该协议的编号为0x01。
 0x01,
 
 //iConfiguration字段。该接口的字符串索引值。这里没有,为0。
 0x00,

  • CDC类中,不具备HID描述符和报告描述符,而是功能描述符(类特殊接口描述符),用来描述接口功能。

/***************以下为功能描述符****************/
 /********* Header Functional Descriptor ********/
 //bFunctionLength字段。该描述符长度为5字节
 0x05,
 
 //bDescriptorType字段。描述符类型为类特殊接口(CS_INTERFACE)
 //编号为0x24。
 0x24,
 
 //bDescriptorSubtype字段。描述符子类为Header Functional Descriptor
 //编号为0x00。
 0x00,
 
 //bcdCDC字段。CDC版本号,为0x0110(低字节在先)
 0x10,
 0x01,
 
 /**** Call Management Functional Descriptor ****/
 //bFunctionLength字段。该描述符长度为5字节
 0x05,
 
 //bDescriptorType字段。描述符类型为类特殊接口(CS_INTERFACE)
 //编号为0x24。
 0x24,
 
 //bDescriptorSubtype字段。描述符子类为Call Management 
 //functional descriptor,编号为0x01。
 0x01,
 
 //bmCapabilities字段。设备自己不管理call management
 0x00,
 
 //bDataInterface字段。没有数据类接口用作call management
 0x00,

 /*** Abstract Control Management Functional Descriptor ***/
 //bFunctionLength字段。该描述符长度为4字节
 0x04,
 
 //bDescriptorType字段。描述符类型为类特殊接口(CS_INTERFACE)
 //编号为0x24。
 0x24,
 
 //bDescriptorSubtype字段。描述符子类为Abstract Control 
 //Management functional descriptor,编号为0x02。
 0x02,

 //bmCapabilities字段。支持Set_Line_Coding、Set_Control_Line_State、
 //Get_Line_Coding请求和Serial_State通知
 0x02,

 /***  Union Functional Descriptor  **/
 //bFunctionLength字段。该描述符长度为5字节。 
 0x05,

 //bDescriptorType字段。描述符类型为类特殊接口(CS_INTERFACE)
 //编号为0x24。
 0x24,
 
 //bDescriptorSubtype字段。描述符子类为
 //Union functional descriptor,编号为0x06。
 0x06,
 
 //MasterInterface字段。这里为前面编号为0的CDC接口。
 0x00,
 
 //SlaveInterface字段,这里为接下来编号为1的数据类接口。
 0x01,






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值