USB設備是端口,接口,配置的集合,USB協議是以各種USB描述符來表征USB設備的功能。計算機通過這些描述符來獲得USB設備的功能。
USB描述符包括: USB標准設備描述符,USB集線器描述符。HID描述符,這裡主要講解USB描述符。
USB標准設備描述符包括:設備描述符,端點描述符,接口描述符,配置描述符,設備限定描述符,其他描述符。這些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!
1.設備描述符
一共18個字節,14個字段。在官方給的固件程序中的描述如下圖:
上圖中42行是用宏定義描述符長度,一共18個字節。
43行描述符類型,其固定為01H,現也用一個宏定義;
44行是表示該USB設備所遵循的USB規范版本號, 一般為0002H,對於高速USB,版本為USB2.0,設置為0200H。
45行設備類別,對於顯示類別(04H),01H(CRT顯示器),02H(平面顯示器),03H(3D顯示器),官方固件設置為00H。46行也一樣,
47行是協議子類,該字段為0時,表示不使用任何設備類協議。
48行最大數據包大小,對於全速設備,8/16/32/64,對於高速設備,設置為64.
51行到53行是設置上設備的VID&PID&Version ID,這個修改可以重新配置USB的簽名,請參看博客《USB驅動安裝及固件程序編寫》
其他不用設置,保持默認即可。
2.配置描述符
USB配置描述符9個字節,8個字段。在官方固件中給出了如下描述:
71和72固定。
73和74分別是USB配置總的信息長度。
75行是接口數量,最少為1.
77行配置字符串,若是沒有配置字符串,為0。
注意78行是USB設備配備屬性。第6位置1為使用總線電源,第5位置1表示支持遠程喚醒功能,第0~4位置為0即可,第7位置為1.注意,筆者設計的板卡是從USB端取電,應該配置78行為10100000b。
79行是USB設備運行時所需要消耗的最大電流。以2mA為單位。這裡更改為250mA,因為USB口能夠提供的最大電流為500mA。
3.字符串描述符
修改162到187內容即可。
4.接口描述符
注意一下128行的端點數,除了0端點以外,還有2,4,6,8四個端點。其中2和4能作為輸出和輸入,6和8能作為輸出和輸入。
5.端點描述符
此部分的設置和接口描述符中的端點數要一一對應,若是使用了一個端點,那麼需要更改接口描述符中的128行,設為1.若是使用了兩個端點,則設為2,一次類推。
官方固件上面給了兩個端點數,一個作為入,一個作為出。
還要注意138行和147行,此設置是端點類型,USB傳輸類型,包括 中斷傳輸,控制傳輸,塊傳輸,同步傳輸。
其中 控制傳輸:少量數據,無傳輸時間要求,傳輸有嚴格保證;
塊傳輸:大數據量,無傳輸時間要求和傳輸速率要求;
同步傳輸:大量數據,速率恆定,有周期性;
中斷傳輸:少量或中量數據,有周期性要求;
6.設備限定符
和設備描述符差不多。
7.其他速率配置描述符
官方給的固件中,將上述的6種描述符集合在速率配置描述中,有全速和高速兩個狀態。如下圖所示:
以上是對描述符的簡單介紹,這些是學習其他方面的基礎。