程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> USB學習筆記連載(十二):USB描述符,usb學習筆記

USB學習筆記連載(十二):USB描述符,usb學習筆記

編輯:關於C語言

USB學習筆記連載(十二):USB描述符,usb學習筆記


USB設備是端口,接口,配置的集合,USB協議是以各種USB描述符來表征USB設備的功能。計算機通過這些描述符來獲得USB設備的功能。

USB描述符包括: USB標准設備描述符,USB集線器描述符。HID描述符,這裡主要講解USB描述符。

USB標准設備描述符包括:設備描述符,端點描述符,接口描述符,配置描述符,設備限定描述符,其他描述符。這些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!

  1.設備描述符

wps8CBD.tmp

  一共18個字節,14個字段。在官方給的固件程序中的描述如下圖:

  image image   上圖中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.配置描述符

wps4789.tmp

USB配置描述符9個字節,8個字段。在官方固件中給出了如下描述:

image

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.字符串描述符

image 修改162到187內容即可。

4.接口描述符

image

注意一下128行的端點數,除了0端點以外,還有2,4,6,8四個端點。其中2和4能作為輸出和輸入,6和8能作為輸出和輸入。

5.端點描述符

image

此部分的設置和接口描述符中的端點數要一一對應,若是使用了一個端點,那麼需要更改接口描述符中的128行,設為1.若是使用了兩個端點,則設為2,一次類推。

官方固件上面給了兩個端點數,一個作為入,一個作為出。

還要注意138行和147行,此設置是端點類型,USB傳輸類型,包括 中斷傳輸,控制傳輸,塊傳輸,同步傳輸。

其中 控制傳輸:少量數據,無傳輸時間要求,傳輸有嚴格保證;

塊傳輸:大數據量,無傳輸時間要求和傳輸速率要求;

同步傳輸:大量數據,速率恆定,有周期性;

中斷傳輸:少量或中量數據,有周期性要求;

6.設備限定符

image 和設備描述符差不多。

7.其他速率配置描述符

官方給的固件中,將上述的6種描述符集合在速率配置描述中,有全速和高速兩個狀態。如下圖所示:

image image

 

 

image

image

以上是對描述符的簡單介紹,這些是學習其他方面的基礎。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved