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,






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章