1. 程式人生 > >STM32 USB Virtual COM USB轉串列埠的功能實現

STM32 USB Virtual COM USB轉串列埠的功能實現

/* USB標準裝置描述符*/ constuint8_tVirtual_Com_Port_DeviceDescriptor[VIRTUAL_COM_PORT_SIZ_DEVICE_DESC]= { 0x12,/*bLength:長度,裝置描述符的長度為18位元組*/ USB_DEVICE_DESCRIPTOR_TYPE,/*bDescriptorType:型別,裝置描述符的編號是0x01*/ 0x00,/*bcdUSB:所使用的USB版本為2.0*/ 0x02, 0x02,/*bDeviceClass:裝置所使用的類程式碼*/ 0x00,/*bDeviceSubClass:裝置所使用的子類程式碼*/ 0x00,/*bDeviceProtocol:裝置所使用的協議*/

0x40,/*bMaxPacketSize:最大包長度為64位元組*/ 0x83,/*idVendor:廠商ID為0x0483*/ 0x04, 0x40,/*idProduct:產品ID為0x5740*/ 0x57, 0x00,/*bcdDevice:裝置的版本號為2.00*/ 0x02, 1,/*iManufacturer:廠商字串的索引*/ 2,/*iProduct:產品字串的索引*/ 3,/*iSerialNumber:裝置的序列號字串索引*/ 0x01/*bNumConfiguration:裝置有1種配置*/ };/* CustomHID裝置描述符 */

接下去是配置描述符集合,由於這個USB轉串列埠是通訊裝置類(CDC),USB需要實現兩個介面:一個是抽象控制模型通訊介面,這個介面有一個輸入中斷輸入端點2,這個端點隨讓定義了,但是檢視所有的程式碼,卻沒有在任何一處被呼叫,也就是說該端點雖然聲明瞭但是沒有使用,所以我嘗試著將端點2描述符刪去,卻發現竟然無法使用了;另一個介面是抽象控制模型資料介面,這個介面定義了一個批量輸入端點1和批量輸出端點3,端點1用於想PC機的真是USB傳送從USART接收到的資料,端點3用於接收來自PC的資料並通過UART傳送。