




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 USB接口HID設備HID(Human Interface Device,人機接口設備)是USB設備中常用的設備類型,是直接與人交互的USB設備,例如鍵盤、鼠標與游戲桿等。在USB設備中,HID設備的成本較低。另外,HID設備并不一定要有人機交互功能,只要符合HID類別規范的設備都是HID設備。 Wndows操作系統最先支持的HID設備。在windows 98以及后來的版本中內置有 HID設備的驅動程序,應用程序可以直接使用這些驅動程序來與設備通信。在設計一個USB接口的計算機外部設備時,如果HID類型的設備可以滿足需要,可以將其設計為HID類型設備,這樣可以省去比較復雜的USB驅動程
2、序的編寫,直接利用Windows操作系統對標準的HID類型USB設備的支持。8.1 HID設備簡介8.1.1 HID設備的特點 交換的數據儲存在稱為報表(Report)的結構內,設備的固件必須支持HlD報表的格式。主機通過控制和中斷傳輸中的傳送和請求報表來傳送和接收數據。報表的格式非常靈活。 每一筆事務可以攜帶小量或中量的數據。低速設備每一筆事務最大是8B,全速設備每一筆事務最大是64B,高速設備每一筆事務最大是1024B。一個報表可以使用多筆事務。 設備可以在未預期的時間傳送信息給主機,例如鍵盤的按鍵或是鼠標的移動。所以主機會定時輪詢設備,以取得最新的數據。 HID設備的最大傳輸速度有限制。
3、主機可以保證低速的中斷端點每10ms內最多1筆事務,每一秒最多是800B。保證全速端點每lms一筆事務,每一秒最多是64000B。保證高速端點每125 us三筆事務,每一秒最多是24.576MB。 HID設備沒有保證的傳輸速率。如果設備是設置在10ms的時距,事務之間的時間可能等于或小于10ms。除非設備是設置在全速時在每個幀傳輸數據,或是在高速時在每個微幀傳輸數據。這是最快的輪詢速率,所以端點可以保證有正確的帶寬可供使用。HID設備除了傳送數據給主機外,它也會從主機接收數據。只要能夠符合HlD類別規范的設備都可以是HID設備。設備除了HlD接口之外,它可能同時還包含有其他的USB接口。例如影
4、像顯示設備可能使用HID接口來做亮度、對比度的軟件控制,而使用傳統的影像接口來傳送要顯示的數據。USB擴音器可以使用實時傳輸來播放語音,同時使用HID接口來控制音量、低音等。HID類別設備的規范文件主要是以下兩份: Device Class Definition for Human interface Devices HID Usage Tables其中前者是HID的基本規范文件,后者可以是前者的附件,為開發人員提供實際的控制類型的描述。文件是用來定義讓主機了解以及使用HID數據的數值。這兩份文件是由 USB Device Working Group制定的,可以在網址http:/www.usb
5、.org/developers/hidpage/ #Class _Definition下載。8.1.2 HID設備的硬件要求HID接口必須符合Device Class Definition for Human interface Devices規范內所定義的HID類別的需求。在此文件內描述了所需的描述符、傳輸的頻率以及傳輸的類型等。為了符合規范,HID接口的端點與描述符都必須符合數個要求。所有的HID傳輸都是使用默認控制管道或是一個中斷管道,HID設備必須有一個中斷輸入端點來傳送數據到主機,中斷輸出端點則不是必需的。HID類別驅動程序HID類別設備主機外設默認控制管道中斷管道圖8-1 HID傳
6、輸的傳輸類型表8-1 HID設備的傳輸類型傳輸類型數據來源數據類型是否需要管道控制設備(輸入)沒有嚴格時間限制的數據是主機(輸出)沒有嚴格時間限制的數據或是沒有中斷輸出管道時的任何數據中斷設備(輸入)定時或低延遲的數據是主機(輸出)定時或低延遲的數據是主機與設備之間所交換的數據,可以分成兩種類型: 低延遲的數據,必須盡快地到達目的; 配置或其他的數據,沒有嚴格時間限制的需求。中斷管道是控制管道之外的另一種數據交換的方式,特別適合使用在接收端需要定時或是盡可能及時收到數據的時候。中斷輸入管道攜帶數據到主機,中斷輸出管道則是攜帶數據到設備。在總線忙的時候,控制管道可能會被延遲,而中斷管道保證會有可
7、得到的帶寬。HID不需要一定有中斷輸出管道。如果沒有中斷輸出管道,主機會在控制管道上使用HID設備特有的Set_Report請求來傳送所有的報表。8.1.3 HID固件的要求主機的驅動程序要與HID設備通信,設備的固件必須符合下列需求: 設備的描述符必須識別該設備包含有HID接口。 除了默認控制管道外,固件必須另外支持一個中斷輸入管道。 固件必須包含一個報表描述符來定義要傳送與接收的設備數據。如果要傳送數據,固件必須支持Get_Report控制傳輸與中斷輸入傳輸。如果要接收數據,固件必須支持Set_Report控制傳輸與選擇性的中斷輸出傳輸。所有的HID數據都必須使用定義過的報表格式來定義報表
8、中數據的大小與內容。設備可以支持一個或多個報表。在固件中的一個報表描述符用來描述此報表,以及如何使用報表數據的信息。在每一個報表中的一個數值,定義此報表是一個輸入(Input)、輸出(Output)或是特征(Feature)報表。主機在輸入報表中接收數據,在輸出報表中傳送數據,特征報表可以在任何方向傳遞。Windows 98以及后來版本的HID驅動程序使用中斷傳輸來傳遞輸入報表。輸出報表的傳輸類型要根據設備支持的端點與Windows的版本而定。Windows 98 Gold只符合HID 1.0規范,它的HID驅動程序使用控制傳輸來傳遞輸出報表。Windows 98 SE、Wndows 2000
9、符合HID 1.1規范,HID驅動程序在有中斷輸出端點時使用中斷傳輸,否則使用控制傳輸來傳遞輸出報表。特征報表都是使用控制傳輸。8.2 HID設備描述符HID設備連接到USB主機后,主機通過發送Get_Descriptor請求讀取HID設備的描述符,了解描述符對了解USB設備是至關重要的。8.2.1 HID設備的描述符HID設備除了支持USB設備的5種標準描述符之外,還支持HID設備特有的3種描述符。這些描述符是: USB標準描述符:設備、配置、接口、端點和字符串描述符。 HID特有的描述符:HID、報表(Report)和實體(Physical)描述符。從描述符的關聯關系看,HID描述符是關聯
10、于接口。所以如果一個HID設備有2個端點,設備不需要每個端點有一個HID描述符。圖8-2 HID描述符的關聯關系接口描述符Interface端點描述符EndpointHID描述符Hid報表描述符Report實體描述符PhysicalHID、報表和實體描述符是HID設備特有的描述符從前面的USB描述符可以看出一個規律,描述符的第一、二字節分別是描述符的長度和類型,描述符的類型字段(bDescriptorType)表明描述符的種類,下表列出了不同描述符的類型字段數值。表8-2 HID的描述符類型描述符應用數值標準設備 Device所有設備必須有,只能一個01配置 Configuration所有設備
11、必須有,至少一個02字符串 String可選擇03接口 Interface每一個接口一個04端點 Endpoint除端點0之外的每個端點一個05設備限定 Device_Qualiffier同時支持全速與高速的設備必須有一個06Other_Speed_Configuration07Interface_power08類別HIDHID設備必須有21Hub29HID特定報表 ReportHID設備必須有22實體 Physical可選擇的23對于一個HID設備,設備描述符與配置描述符沒有HID特定的信息。其設備描述符的bDeviceClass和bDeviceSubClass字段的值為0,接口描述符的bI
12、nterfaceClass字段值為03,表示設備的該接口是HID類別。在接口描述符中其他包含HID特定信息的字段還有子類別碼(blnterfaceSubClass)與協議碼(blnterfaceProtocol字段)。在接口描述符中子類別碼字段等于1表示此設備支持啟動接口(Boot Interface)。如果設備有啟動接口,即便主機的HID沒有加載驅動程序,設備也可以使用。這種情形可能發生在計算機是由DOS直接啟動,在啟動時觀看系統設置畫面或使用Wndows的安全模式時。含有啟動接口的鍵盤或鼠標可以使用BIOS或許多主機支持的默認簡單協議。HID規范定義了鍵盤與鼠標的啟動接口協議。如果設備沒有
13、啟動接口,并且接口描述符中協議碼字段是1,表示設備支持鍵盤接口,協議碼字段是2,表示支持鼠標接口。接口描述符中協議碼字段是0,表示設備不支持啟動協議。在 HID Usage Tables規范中定義了鍵盤與鼠標的啟動描述符(Boot Descriptor)。BIOS不需要從設備中讀取描述符,因為它知道啟動協議,并且假設設備支持啟動協議。所以要啟動的設備不需要在固件內包含啟動接口描述符,它只要在主機尚未要求在報表描述符中的定義協議時支持啟動協議即可。在操作系統加載HlD驅動程序后會使用Set_Protocol請求,將設備由啟動協議轉換成報表協議。8.2.2 HID描述符HID描述符的主要作用是用來
14、識別HID通信所使用的額外描述符。下表是HID描述符結構。表8-3 HID描述符結構偏移量字段字節數數值類型說明0bLength1Numeric描述符字節數1bDescriptorType1Constant0x21 = HID描述符2bcdHID2NumericHID規范版本號(BCD)4bCountryCode1Numeric硬件設備所在國家的國家代碼5bNumDescriptors1Numeric類別描述符數目(至少有一個報表描述符)6bDescriptorType1Constant類別描述符的類型7wDescriptorLength2Numeric報表描述符的總長度9bDescripto
15、rType.1Constant附加的描述符的類型,可選的10wDescriptorLength.2Numeric附加的描述符的總長度,可選的bcdHID:設備與其描述符所遵循的HID規范的版本號碼,此數值是4個16進位的BCD格式字符。例如版本1.1的bcdHID是0110h。bCountryCode:硬件目的國家的識別碼。如果不說明,該字段為0。bDescriptorType:HID描述符附屬的描述符的類型(報表或實體)。每一個 HID都必須至少支持一個報表描述符。一個接口可以支持多個報表描述符,以及一個或多個實體描述符。HID描述符的偏移量為9和10的bDescriptorType和wDe
16、scriptorLength可以重復存在多個。1. 報表描述符報表描述符定義了執行設備功能的數據格式和使用方法。報表描述符和USB的其他描述符是不一樣的,它不是一個簡單的表格,報表描述符是USB所有描述符中最復雜的。報表描述符非常復雜而有彈性,因為它需要處理各種用途的設備。報表的數據必須以簡潔的格式來儲存,這樣才不會浪費設備內的儲存空間以及數據傳輸時的總線時間。實際上可以這樣理解,報表內容的簡潔,是通過報表描述符全面的、復雜的數據描述實現的。報表描述符必須先描述數據的大小與內容。報表描述符的內容與大小因設備的不同而不同,在進行報表傳輸之前,主機必須先請求設備的報表描述符,只有得到了報表描述符才
17、可正確解析報表的數據。報表描述符是報表描述項目(Item)的集合,每一個描述項目都有相對統一的數據結構,項目很多,通過編碼實現。(1)項目報表描述符由描述HID設備的數據項目(Item)組成,項目的第一個字節(項目前綴)由三部分構成,即項目類型(item type)、項目標志(item tag)和項目長度(item size)。其中項目類型說明項目的數據類型,項目標簽說明項目的功能,項目長度說明項目的數據部分的長度。HID的項目有短項目和長項目兩種,其中短項目的格式如下圖。Data (可以是0、1、2、4個字節)bTagbTypebSize7 6 5 4 3 2 1 0位序字段圖8-3 HID
18、報表短項目格式短項目的數據字節數由bSize的值定義,bSize為0、1、2、3時Data部分的字節數分別為0、1、2、4個字節。短項目的項目類型由bType定義,bType為0、1、2時分別為Main、Global和Local類型。長項目可以攜帶較多的數據,其格式如下圖。bDataSize1 1 1 1 1 1 1 07 6 5 4 3 2 1 0位序字段圖8-4 HID報表長項目格式bLongItemTagData字節數1111255項目中的第一個字節為上圖中的特定值時表明該項目是一個長項目。長項目中的bDataSize說明Data部分的字節數,bLongItemTag在HID規范中沒有定
19、義。下面是通過匯編實現的一個簡單的報表描述符,描述符的每一行是一個項目,該描述符描述了一個從設備接收2個字節的輸入報表和發送2個字節到設備的輸出報表。HID_Report_desc_table:db 06h, A0h, FFh; Usage Page(Vendor defined) 定義設備功能db 09h, A5h; Usage(Vendor Defined) 定義用法db A1h, 01h; Collection(Application) 開一個集合db 09H, A6h;Usage(Vendor defined) 定義用法;輸入報表db 09h, A7h;Usgae(Vendor def
20、ined) 定義用法db 15h, 80h;Logical Minimum 定義輸入最小值=-128db 25h, 7Fh;Logical Maximum 定義輸入最大值=+27db 75h, 08h;Report Size 定義報表數據項大小=8db 95h, 02h;Report Count 定義報表數據向個數=2db 81h, 02h;Input(Data,Variable,Absolute) 輸入項目;輸出報表db 09h, A9h;Usgae(Vendor defined) 定義用法db 15h, 80h;Logical Minimum 定義輸入最小值=-128db 25h, 7Fh
21、;Logical Maximum 定義輸入最大值=+27db 75h, 08h;Report Size 定義報表數據項大小=8db 95h, 02h;Report Count 定義報表數據向個數=2db 91h, 02h;Output(Data,Variable,Absolute) 輸出項目db C0h; End Collection 關閉集合(2)項目的分類報表的項目有Main、Global和Local三大類,每一類都有多個不同的項目,實現不同的描述。Main類項目用于定義報表描述符中的數據項。也可以組合其中的若干數據項成為一個集合。Main項目可以分為帶數據的Main項目和不帶數據的Mai
22、n項目。帶數據項的Main用于生成報表中的數據項,包括Input、Output和Feature項目。不帶數據的Main項目不生成報表中的數據項,包括Collection和End Collection項目。Global類項目實現對數據的描述,用來識別報表并且描述報表內的數據,包括數據的功能、最大與最小允許值以及數據項的大小與數目等。改變由Main類項目生成的項目狀態表。Global類項目描述對后續的所有項目有效,除非遇到有新的Global類項目。Local類項目定義控制的特征,這一類項目的作用域不超過下一個Main項目,所以在每一Main項目之前可能有多個Local項目。Local項目用于描述后
23、面的Input、Output和Feature項目。下表列出的是全部的項目的前綴字和簡要功能說明。表8-4 HID項目列表項目類型項目標志(Tag)項目前綴,nn為數據長度功能說明Main類項目Input1000 00 nn定義輸入報表,主機利用該信息解析設備提供的數據。主機向控制端口發送Get_Report實現輸入Output1001 00 nn創建輸出報表,通過向設備發送Set_Report實現輸出Feature1011 00 nn定義送往設備的設置信息Collection1010 00 nn定義2個以上數據(Input、Output和Feature)的關系為集合,Collection開始一
24、個集合,之后的End Collection結束集合。Collection項目的數據部分說明Collection的類型End Collection1100 00 nnGlobal類項目Usage Page0000 01 nn指定設備的功能另外由于Usage項目有32位數據值,Usage Page項目用于為Usage項目在報表描述符中占居存儲空間。用于存放后續的Usage項目的高16位。Logical Minimum0001 01 nn定義變量或數組項目的邏輯最小值和最大值Logical Maximum0010 01 nnPhysical Minimum0011 01 nn定義變量或數組項目的物理
25、最小值和最大值,分別和Logical Minimum、Logical Maximum對應Physical Maximum0100 01 nnUnit Exponent 0101 01 nn定義數值是基于10的指數Unit0110 01 nn單位Report Size 0111 01 nn指定報表數據區域所包含的位數Report ID 1000 01 nn報表ID,該項目在報表中插入一個字節的報表IDReport Count 1001 01 nn報表中數據域的數目Push 1010 01 nn將Global項目狀態表送入堆棧Pop 1011 01 nn從堆棧恢復Global項目狀態表1100 0
26、1 nn 1111 01 nn保留Local類項目Usage0000 10 nn用法索引值,表示對項目或集合建議的用法,用于當一個項目描述多個控制,對每一個變量和數組元素都有建議的用法Usage Minimum0001 10 nn定義陣列或位圖中控制操作的第一個和最后一個用法Usage Maximum0010 10 nnDesignator Index 0011 10 nn確定用于控制的實體,指向物理描述符中的目標Designator Minimum0100 10 nn定義陣列或位圖目標的起始和終止索引值Designator Maximum0101 10 nnString Index 0111
27、 10 nn確定字符串描述符中的索引值String Minimum 1000 10 nn定義用于陣列或位圖控制中字符串序列索引值的最小值和最大值String Maximum 1001 10 nnDelimiter 1010 10 nn定義一組Local項目的開始和結束,1=開始,0=結束1010 10 nn 1111 10 nn保留在這些項目中,Usage Page用來指定設備的功能,而Usage項目用來指定個別報表的功能。Usage Page項目相當于是HID的子集合,Usage相當于是Usage Page的子集合。2. 報表描述符的項目(1)Input、Outpot和Feature項目這3
28、個項目用來定義報表中的數據字段。Input項目可以應用到任何控制、計數器讀數或其他設備傳給主機的信息。一個輸入報表包含一個或多個Input項目,主機使用中斷輸入傳輸來請求輸入報表。Ouput項目用來定義主機傳送給設備的信息。一個輸出報表包含一個或多個Outpot項目。輸出報表包含控制狀態的數據。如果有中斷輸出管道,HID1.1兼容主機使用中斷輸出傳輸來傳送輸出報表,否則使用Set_Report控制請求。Feature項目應用到主機傳送給設備的信息,或是主機從設備讀取Feature項目。一個特征報表包含一個或多個Feature項目,Feature項目通常是包合影響設備與其組件整體行為的配置。特征
29、報表通常是控制可以使用實際的控制面板調整的設置,例如主機可以使用虛擬控制面板來讓用戶選擇控制特征。主機使用 Set_Report與Get_Report請求來傳送與接收特征報表。在每一個Input、Output和Feature項目的前綴字之后是32位描述數據,目前最多定義了9個位,余的位則是保留。位08的定義中只有位7不能應用于Input項目,除此之外其他的位定義都適應于Input、Output和Feature項目。表8-5 Input、Output和Feature項目的數據項說明數據字段含義說明位值名稱00Data數據:表示項目的內容是可更改的(讀/寫)。1Constant常數:表示項目的內容
30、是不可更改的(只讀)。10Array數組:報告全部控制的狀態。如在鍵盤報表中每一個鍵在報表中占一位,報表傳輸全部鍵的狀態,可以同時按下任意多個鍵。1Variable變量:報告作用中的控制。如在鍵盤報表中只報告按下的鍵的編號,可以同時按下的鍵的數目等于報表的計數(Global類項目Report Count)20Absolute絕對:表示數值以一個固定值為基準。游戲桿通常是報告絕對數據(游戲桿目前的位置)。1Relative相對:表示數據的改變以上一個讀數為基準。鼠標通常是報告相對數據(鼠標的移動位置)。30No Wrap如果設置為1表示回轉,當數值超過最小值到最大值的范圍時將回轉,如果最小值是0
31、而最大值是10,超過最大值的下一個數值是0。1Wrap40Linear線形:表示測量的數據與報表的數據有線性的關系。1Non-Linear非線性:表示測量的數據與報表的數據沒有線性的關系。50Preferred 優選狀態:表示控制在沒有用戶交互時會回到一個特定的狀態。如按鈕就有優選狀態,在無操作時保持未按下的狀態。1Non-Preferred非優選狀態:它維持在上一個用戶選擇的狀態。如交替的開關就沒有優選狀態。60No Null Position無空狀態位置:表示控制永遠在傳送有效的數據。1Null State空狀態:表示控制支持一個沒有傳送有效數據的狀態。如操縱桿可能具有一個多方向的按鈕開關
32、,在沒有按下時在空狀態,這時控制將傳送一個在 Logical Minimum與Logical Maximum范圍之外的數值來表示它在空狀態。70Non-Volatile不可變的:表示設備只有在主機請求時才改變數值。當主機傳送一個報表并且不要改變不可變項目時,如果該項目是定義成相對(Relative)的,數值0表示不改變數據,如果不可變項目是定義成絕對(Absolute)的,超出范圍外的數值則表示不改變數據。1Volatile可變的:表示設備可以自己改變數值,并不是必須主機傳送報表要求給設備來改變數值。例如設備控制面板可以由主機軟件傳送一個報表給設備,也可以由用戶自己按設備上的實際按鈕。80Bi
33、t Field位字段:表示每一個位或是一個字節內的一組位可以代表一份數據。1Buffered Bytes緩沖字節:表示信息包含一個或多個字節,緩沖字節的報表大小必須是8。931位保留注:該位不能應用到數組。:只應用于Output和Feature項目,對于Input項目該位保留。(2)Collection和End Collection項目所有的報表類型都可以使用Collection與 End Collection項目來將相關的Main類型項目組成群組。這兩個項目分別用于打開和關閉集合。所有在Collection與End Collection項目之間的Main類型項目都是 Collection的一
34、部分。Collection有3種類型:Application、Physical與Logical,其項目的數據項的值分別為1、0和2。廠商也可以自己定義Collection類型,數據項的值為80hFFh保留給廠商定義。End Collection項目無數據項。Application Collection包含有共同用途的項目或執行單一功能的項目。例如鍵盤的開機描述符將鍵盤的按鍵與LED指示燈數據集合成一個Application Collection。所有的報表必須在一個Application Collection內。Physical Collection包含在一個單一幾何點上的數據項目,可以將每個
35、位置的數據集合成一個 Physical Collection。在設備報告多個傳感器的位置的時候,使用Physical Collection指明不同的數據來自不同的傳感器。Logical Collection形成一個數據結構,包含由 Collection所連結的不同類型的項目。例如數據緩沖區的內容以及緩沖區內字節數目的計數。(3)Usage Page和Usage項目Usage page項目的數據部分為12個字節,目前的定義全部都是一個字節。Usage Page定義了常用的設備功能,關于Usage Page(以及其他項目)的具體定義內容,可以查閱HID Usage tables(http:/www
36、./developers/hidpage/#Class_Definition),下表是來自HID Usage tables的Usage Page定義。表8-6 Usage Page定義Page ID Page Name00Undefined01Generic Desktop Controls02 Simulation Controls 03 VR Controls 04 Sport Controls 05 Game Controls06 Generic Device Controls 07 Keyboard/Keypad 08 LEDs 09 Button 0A Ordinal
37、0B Telephony 0C Consumer 0D Digitizer 0E Reserved0F PID Page10 Unicode 11-13Reserved14 Alphanumeric Display 15-3fReserved40Medical Instruments 41-7FReserved80-83Monitor pages84-87Power pages88-8BReserved8CBar Code Scanner page8DScale page8EMagnetic Stripe Reading (MSR) Devices8FReserved Point of Sal
38、e pages 90Camera Control Page91Arcade Page92-FEFFReservedFF00-FFFFVendor-defined關于Usage Page的每一個有效定義項,都有一個相應的下一級定義,如Usage Page的數據項數值為1,則設備定義為Generic Desktop Controls,關于該類設備的具體功能可以在HID Usage Tables中查到具體的定義。下表是HID Usage Tables中對Generic Desktop Controls設備的功能定義。表8-7 Generic Desktop Controls 用法定義Usage ID
39、Usage NameUsage Type參閱HID Usage Tables中的相關章節00Undefined01PointerCP4.102MouseCA03Reserved04JoystickCA4.105Game PadCA06KeyboardCA07KeypadCA08Multi-axis ControllerCA09Tablet PC System ControlsCA0A-2FReserved30XDV4.231YDV32ZDV33RxDV34RyDV35RzDV36SliderDV4.337DialDV38WheelDV39Hat switchDV3ACounted Buffer
40、CL4.63BByte CountDV3CMotion WakeupOSC4.33DStartOOC3ESelectOOC3FReserved40VxDV4.3.141VyDV42VzDV43VbrxDV44VbryDV45VbrzDV46VnoDV47Feature NotificationDV,DF4.848Resolution MultiplierDV49-7FReserved80System ControlCA4.581System Power DownOSC82System SleepOSC4.5.183System Wake UpOSC84System Context MenuOS
41、C4.585System Main MenuOSC86System App MenuOSC87System Menu HelpOSC88System Menu ExitOSC89System Menu SelectOSC8ASystem Menu RightRTC8BSystem Menu LeftRTC8CSystem Menu UpRTC8DSystem Menu DownRTC8ESystem Cold RestartOSC4.5.18FSystem Warm Restart OSC90D-pad UpOOC4.791D-pad DownOOC92D-pad RightOOC93D-pa
42、d LeftOOC94-9FReservedA0System DockOSC4.5.1A1System UndockOSCA2System SetupOSCA3System BreakOSC4.9A4System Debugger BreakOSCA5Application BreakOSCA6Application Debugger BreakOSCA7System Speaker Mute OSC4.5.1A8System HibernateOSCA9-AFReservedB0System Display InvertOSC4.10B1System Display InternalOSCB
43、2System Display ExternalOSCB3System Display BothOSCB4System Display DualOSCB5System Display Toggle Int/ExtOSCB6System Display Swap Primary/SecondaryOSCB7System Display LCD AutoscaleOSCB8-FFFFReserved用法(Usage)定義了各種各樣設備特性,對于Usage Page的每一項都定義了常用的各種用法。用法說明了3種信息,即控制、集合和數據。控制說明設備的狀態,如on/off、Enable/Disable
44、等。集合說明控制和數據的組合關系。上表中的用法類型(Usage Type)描述了應用程序如何處理由Main類型項目生成的數據,具體的定義和詳細說明請參閱HID Usage Tables。(4)Report ID項目Report ID放在信息包中報表數據之前,設備可以支持多個相同類型的報表,每一個報表包含不同的數據與其特有的ID。在報表描述符中,Report ID項目作用于其后續所有的項目,直到遇到下一個Report ID為止。如果報表描述符中沒有Report ID項目,默認的ID值是0,描述符不能定義一個為0的Report ID,輸入報表、輸出報表與特征報表可以分享同一個Report ID。在
45、Set_Report和Get_Report請求傳輸中,主機在設置事務的 wValue字段的低字節中指定一個Report ID。在中斷傳輸中如果接口支持一個以上的 Report ID,Report ID必須是傳送報表中的第一個字節。如果接口只支持數值為0的默認Report ID,此Report ID不應該在中斷傳輸中隨著報表一起傳送。(5)Logical Minimum和Logical Maximum項目Logical Minimum與 Logical Maximum項目定義報表的變量(Variable)或陣列(Array)數據的限制范圍,此限制范圍以邏輯單位來表示。例如設備報表的一個電流值讀數
46、是500mA,而一個單位是2mA,則 Logical Maximum值等于250。負數值以2的補碼來表示。如果Logical Minimum與Logical Maximum都是正數,就不需要有正負號位。不管 Logical Minimum與Logical Maximum是以有正負號或是無正負號的數值來表示,設備都可以正確地傳輸數據。數據的接收者必須知道數據是否可以是負值。(5)Physical Minimum和Physical Maximum項目Physical Minimum和Physical Maximum項目定義數值的限制范圍,該限制范圍使用Unit項目定義的單位來表示。上例中設備報表的
47、一個電流值讀數是500mA,單位是2mA, Logical Maximum值等于250,而Physical Maximum值是500。Logical Minimum與 Logical Maximum值說明了設備返回數值的邊界,可以根據Physical Minimum和Physical Maximum值對數據進行偏移和比例變換。(6)Unit Exponent項目Unit Exponent項目定義了在使用邏輯范圍和實際范圍將設備的返回數值轉換成實際數值時,使用10的多少次方對數值進行定標。Unit Exponent的值的編碼為4位補碼,代表10的指數范圍是-8+7。表8-8 Unit Expon
48、ent 數值表代碼00h01h02h03h04h05h06h07h08h09h0Ah0Bh0Ch0Dh0Eh0FH數值01234567-8-7-6-5-4-3-2-1根據以上5個項目的值可以換算出報表傳送數據(邏輯數據)與物理數據的轉換關系。物理數據值 = 邏輯數據值÷分辨率分辨率 = (LogicalMaximum - LogicalMinimum)÷(PhysicalMaximum - PhysicalMinimum)×10UnitExponent)(7)Unit項目Unit項目指定報表數據在使用Physical與Unit Exponent項目轉換后使用什么度
49、量單位,以及單位的冪指數值。Unit的數值部分可以長達4字節,按照4位為一段分段,可以分為8個半字節段,由高到低分別為半字節7、半字節6、半字節0。每一個半字節對應不同的基本單位,其數值表示單位的指數值,采用4位2的補碼表示,取值范圍是-8+7之間。從半字節06由下表給出了具體的定義,其中半字節0表示測量系統,半字節7保留。例如在半字節0數值為1(表示采用線性公制測量系統)的條件下,半字節1表示長度(單位為厘米),如果其數值為1表示厘米,數值為2表示(厘米)2,成為面積單位。半字節3表示時間(單位為秒),如果其數值為-2,表示(秒)-2。表8-9 Unit 單位的定義半字節序號測量項目數值含義
50、012340測量系統無線性、公制角度、公制線性、英制角度、英制1長度厘米半徑英寸度2質量克石拉(slug)3時間秒4溫度開式度(Kelvin)華式度5電流安培6亮度燭光7保留雖然表中只是定義了有限的基本單位,但可以通過這些基本單位的組合派生出大多數其它的常用單位。例如報表使用一個字節傳送一個從-20到110華氏度溫度值,可以定義以下報表描述項目:Logical Minimum = -128Logical Maximum = 127Physical Minimum = -20Physical Maximum = 110Unit Exponent = 0Unit = 30003hUnit的半字節0
51、=3選擇英制線性測量系統,半字節4=3選擇華氏溫度單位。130(110+20)華氏度的數值范圍線性分布到了256和有效數值區域,每一位相當于0.51華氏度,這樣就提高了分辨率。(8)Report Size和Report Count項目Report Size項目指定Input、Output與Feature項目字段的大小,以位為單位。Report Count項目指定Input、Output與Feature項目包含的字段數目。例如兩個8位的字段,Report Size等于8,而Report Count等于2。8個1位的字段,Report Size等于1,而 Report Count等于8。Input
52、、Output與Feature項目報表可以有多個項目,每一個項目可以有自己的Report Size和Report Count項目。(9)Push和Pop項目Push項目將一個Global項目狀態表格的副本壓入CPU的堆棧內。GIobal項目狀態表格包含所有之前定義的Gobal項目的目前設置。Pop項目恢復之前壓入堆棧的Global項目狀態的儲存狀態。(10)Usage、Usage Minimum和Usage Maximum項目這3個項目輸入Local類型項目。Usage項目和Global類型的Usage Page項目協同描述項目或集合的功能。一個報表可以指定一個Usage給許多個控制,或是指定不同的Usage給每一個控制。如果一個報表項目之前有一個Usage,此Usage應用到該項目的所有控制。如果一個報表項目之前有一個以上的Usage,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省麗水市縉云縣2025屆四下數學期末學業質量監測模擬試題含解析
- 山東濟南第一中學2025屆第二學期高三期末統一考試物理試題含解析
- 山東省德州市陵城區2025屆四年級數學第二學期期末考試模擬試題含解析
- 江西省新余第四中學2025屆高三下學期第三次模擬考試(期中)語文試題含解析
- 企業年度工作總結模板
- 滾動軸承的綠色設計與可持續發展考核試卷
- 皮鞋制作中的D打印技術應用考核試卷
- 批發商庫存管理技巧考試考核試卷
- 潛水裝備聲學特性與設計考核試卷
- 石灰石礦山露天開采安全措施考核試卷
- 2024年10月公務員制度自考試卷含解析
- 幼兒園課件:谷雨繪本故事-養蠶忙
- 高級審計師《審計理論與審計案例分析》真題
- 高中生班會課課件 愛情三角理論愛情的本質
- 小學教學能手述職報告
- 學生創新思維綜合評價表
- 采購職員離職工作交接詳單
- 2024肺栓塞指南解讀2024
- 人教部編版六年級上冊語文選擇題專項復習練習(100題后附答案)
- 北海旅游飲食攻略
- 安徽-建標〔2017〕191號附件-2018工程量清單計價辦法
評論
0/150
提交評論