www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 智能硬件 > 智能硬件
[導讀] 目前市場上USB設備的種類繁多,但是這些設備會有一些共同的特性,根據(jù)這些特性可以把USB設備劃分為不同的類,如顯示設備、通信設備、音頻設備、大容量存儲設備、人機接口設備(HID)。這里介紹如何實現(xiàn)HID類設備,

     目前市場上USB設備的種類繁多,但是這些設備會有一些共同的特性,根據(jù)這些特性可以把USB設備劃分為不同的類,如顯示設備、通信設備、音頻設備、大容量存儲設備、人機接口設備(HID)。這里介紹如何實現(xiàn)HID類設備,以及如何在應用程序中對HID類設備進行訪問。從Windows98操作系統(tǒng)開始,為HID類設備提供了通用的驅動程序,所以只要按照HID設備類的規(guī)范編寫設備的固件程序,就能夠讓Windows系統(tǒng)自動識別設備,省去了復雜的驅動程序編寫過程。

  1 HID協(xié)議簡介

  人機接口設備(HID)主要是指一些人與計算機進行交互的設備,如鍵盤、鼠標、游戲桿等;但是HID設備不一定非要是這些人機交互設備,只要符合HID設備級定義規(guī)范要求的都可以認為是HID設備。HID設備有以下主要特點:

 ?、?交換的數(shù)據(jù)存儲在報告的結構內,設備必須支持HID報告格式。

 ?、?每筆事務可以攜帶小量或中量的數(shù)據(jù)。低速設備每筆事務最大為8字節(jié),全速設備每筆最大為64字節(jié),高速設備最大為1 024字節(jié);

 ?、?有最大傳輸速度的限制。低速設備最快10ms一筆事務,最高速度為800 B/s;全速設備最快1 ms一筆事務,最高速度為64 KB/s;高速設備最快125 μs一筆事務,最高速度為24.576 MB/s。

 ?、?沒有傳輸速度的保證。

  當插入USB設備后,主機會向設備請求各種描述符來識別設備。為了把一個設備識別為HID類別,設備在定義描述符的時候必須遵守HID規(guī)范。圖1顯示了HID各種描述符之間的關系。事實上,每個設備可以有多個接口描述符來實現(xiàn)多接口設備,而且每個接口描述符下應該有多個端點描述符。


圖1 HID各種描述符之間的關系

  從圖1中可以看出,除了USB標準定義的一些描述符外,HID設備還必須定義HID描述符。另外設備和主機的通信是通過報告的形式來實現(xiàn)的,所以還必須定義報告描述符;而物理描述符不是必需的。還有就是HID描述符是關聯(lián)于接口(而不是端點)的,所以設備不需要為每個端點都提供一個HID描述符。

  USB設備有4種傳輸方式與主機進行通信: 控制方式、中斷方式、批量方式和同步方式。每種方式都有它的應用領域。HID只支持控制和中斷傳輸方式。如圖2所示,HID設備必須要有默認的控制管道和一個中斷輸入端點;中斷輸出端點是可選的。


圖2 HID類設備使用控制和中斷傳輸方式

  中斷輸出傳輸是USB1.1規(guī)范才有的內容,且必須獲得Windows系統(tǒng)的支持。從Windows98 SE版本開始才支持中斷輸出傳輸方式,所以如果需要中斷輸出傳輸方式的設備應該選擇相應的操作系統(tǒng)。表1列出了傳輸類型和相關情況。

表1 HID類設備支持的傳輸方式傳輸


  USB協(xié)議定義了11種請求命令,通過這些請求來獲得設備的信息及對設備進行設置。HID類設備除了要支持這11種標準的請求外,還要實現(xiàn)以下6種特定請求:

 ?、?Get_Report——主機用控制傳輸從設備接收數(shù)據(jù),所有HID類設備都要支持這個請求;

 ?、?Set_Report——設備用控制傳輸接收主機的數(shù)據(jù),設備可以不支持此請求;

 ?、?Get_Idle——主機讀取設備當前的空閑速率,設備可以不支持此請求;

 ?、?Set_Idle——設置閑置狀態(tài),設備可不支持此請求;

 ?、?Get_Protocol——主機獲得設備的當前活動是引導協(xié)議還是報告協(xié)議;

 ?、?Set_Protocol——在引導協(xié)議和報告協(xié)議間切換,設備如果支持系統(tǒng)引導(如鍵盤和鼠標),就必須支持Get_Protocol和Set_Protocol請求。

  2 HID接口固件設計與實現(xiàn)

  該設備采用C8051F120微控制器和PDIUSBD12芯片來實現(xiàn),如圖3所示。


圖3 HID系統(tǒng)結構框圖

  因為PDIUSBD12的主端點(Endpoint2)具有64字節(jié)的雙緩沖,能夠提供比較高的速度,所以在端點描述符里把它配置為中斷傳輸方式,而Endpoint1沒有使用。PDIUSBD12通過中斷觸發(fā)CPU來響應主機的各種請求。

  此系統(tǒng)采用的USB協(xié)議版本是1.1,所以能夠支持中斷輸出傳輸。為了讓主機把設備識別為HID類別,定義設備接口描述符時類別這一字段的值必須設置為0x03(HID類別),這樣主機就會繼續(xù)請求獲得設備的HID描述符和報告描述符。在主機Get_Descriptor請求中,當值字段的高位字節(jié)為0x21時,表示主機要求獲得HID描述符;當值字段高字節(jié)為0x22時,就是主機要求獲得報告描述符。對于報告描述符,可以參考HID Usage Tables規(guī)范。HID Descriptor Tool工具可以幫助建立和測試編寫的報告描述符。這里定義了一個輸入和輸出64字節(jié)數(shù)據(jù)的報告描述符。

  code unsigned char szReport[] = {

  0x06,0xA0,0xFF,//用法頁(FFA0h, vendor defined)

  0x09, 0x01,//用法(vendor defined)

  0xA1, 0x01,//集合(ApplicaTION)

  0x09, 0x02 ,//用法(vendor defined)

  0xA1, 0x00,//集合(Physical)

  0x06,0xA1,0xFF,//用法頁(vendor defined)

  //輸入報告

  0x09, 0x03 ,//用法(vendor defined)

  0x09, 0x04,//用法(vendor defined)

  0x15, 0x80,//邏輯最小值(0x80 or -128)

  0x25, 0x7F,//邏輯最大值(0x7F or 127)

  0x35, 0x00,//物理最小值(0)

  0x45,0xFF,//物理最大值(255)

  0x75, 0x08,//報告長度Report size (8位)

  0x95, 0x40,//報告數(shù)值(64 fields)

  0x81, 0x02,//輸入(data, variable, absolute)

  //輸出報告

  0x09, 0x05,//用法(vendor defined)

  0x09, 0x06,//用法(vendor defined)

  0x15, 0x80,//邏輯最小值(0x80 or -128)

  0x25, 0x7F,//邏輯最大值(0x7F or 127)

  0x35, 0x00,//物理最小值(0)

  0x45,0xFF,//物理最大值(255)

  0x75,0x08,//報告長度(8位)

  0x95, 0x40,//報告數(shù)值(64 fields)

  0x91, 0x02,//輸出(data, variable, absolute)

  0xC0,//集合結束(Physical)

  0xC0//集合結束(Application)

  };

  這樣,后面數(shù)據(jù)的輸入和輸出都必須滿足報告的格式才能夠進行傳輸。


圖4 應用程序枚舉HID設備流程

  3 應用程序設計實現(xiàn)

  Windows為應用程序訪問HID設備提供了強大的支持,有一整套對HID設備進行訪問的API。應用程序要訪問設備就必須先枚舉到設備,圖4為應用程序枚舉HID設備流程。

  枚舉成功后根據(jù)返回的設備句柄,就可以用ReadFile和WriteFile來讀寫設備的數(shù)據(jù)了。這里采用異步方式來讀寫數(shù)據(jù),這樣不會發(fā)生讀寫時阻塞,提高了程序的效率。以下是異步方式讀寫設備的要點:

 ?、?為了實現(xiàn)異步訪問設備,在CreateFile打開設備時必須使用FILE_FLAG_OVERLAPPED標志。

 ?、?打開設備成功后,使用CreateThread建立1個讀設備線程。

  ③ 在這個線程中首先建立1個OVERLAPPED結構,并用CreateEvent函數(shù)初始化它的hEvent成員,這樣就創(chuàng)建了1個事件對象。

 ?、?調用ReadFile函數(shù),并傳入這個結構。

 ?、?調用ReadFile后會立即返回,必須調用GetLaST?Error獲得出錯碼。 如果為ERROR_IO_PENDING, 說明此操作是在等待完成的;否則,說明調用出錯。

  ⑥ 調用WaitForSingleObject等待hEvent事件的通知,并使此線程進入休眠狀態(tài)。如果有數(shù)據(jù)發(fā)送到主機,讀線程就會被激活。

  WriteFile的使用也同樣要求異步操作,與ReadFile的使用差不多。

  這里要注意的是,在每次讀寫數(shù)據(jù)前都要先接收和發(fā)送1字節(jié)的PID標志,所以每次讀寫數(shù)據(jù)的時候都要多一個字節(jié)。比如,這里每次讀寫的是64字節(jié)數(shù)據(jù),但是在這64字節(jié)之前必須放1字節(jié)的PID數(shù)據(jù),所以是65字節(jié)。一般這個字節(jié)的值為0。

  4 小結

  充分利用PDIUSBD12主端口的雙緩沖特性后,測試設備與PC間傳輸速度能達到8 KB/s以上,對于一些傳輸數(shù)據(jù)量不大,速度要求不高,而又必須在短時間內做出響應的場合基本能夠滿足要求。在此基礎上只要生成不同的報告描述符,就能開發(fā)出各種不同的嵌入式設備;而且這樣的設備無需驅動,在插入PC后就能立刻開始工作,省去了安裝驅動程序的過程,方便使用。

 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

USB-C接口全稱為USB Type-C,屬于USB 3.0下一代接口,其亮點在于更加纖薄的設計、更快的傳輸速度(最高可達10Gbps)、更強的電力傳輸(最高100W),此外USB-C接口還支持雙面插入,正反面隨便插,相...

關鍵字: iPhone 15 Lightning USB

GRL東莞實驗室將與上海和臺北實驗室一同,提供Windows Host認證服務 加利福尼亞州圣克拉拉市2022年9月22日 /美通社/ -- 高速信號和充電技術測...

關鍵字: Windows THUNDERBOLT USB OS

接下來測試燒寫功能,本次采用串口和USB燒寫方式。使用ISP串口燒寫這是51單片機常用的方案,本次測試比較順利,沒有遇到什么問題。但是USB燒寫沒有測試成功,USB燒寫方式不需要任何的驅動和硬件支持,直接將USB線和ST...

關鍵字: PCB控制板 USB 串口

倉儲機器人領域的領先企業(yè)率先實現(xiàn)這一行業(yè)里程碑 馬薩諸塞州威爾明頓2022年9月16日 /美通社/ -- 倉儲處理自主移動機器人(AMR)市場領先企業(yè)Locus Robot...

關鍵字: ROBOTICS AMR USB 移動機器人

(全球TMT2022年8月26日訊)運輸和物流提供商GEODIS和用于營運倉庫的自主移動機器人(AMR)企業(yè)Locus Robotics宣布了一項新的擴展協(xié)議,將在未來24個月內在GEODIS的全球倉庫網(wǎng)點總共部署10...

關鍵字: USB GE AMR ROBOTICS

GEODIS與Locus Robotics簽署擴展協(xié)議,在全球倉庫網(wǎng)點部署1000個LocusBot 田納星州納什維爾和馬薩諸塞州威明頓2022年8月25日 /美通社/ -- 全球領先的運輸和物流提供商GEODIS和用...

關鍵字: USB ROBOTICS GE AMR

以下內容中,小編將對路由器的相關內容進行著重介紹和闡述,希望本文能幫您增進對路由器的了解,和小編一起來看看吧。

關鍵字: 路由器 USB 處理器

摘要:根據(jù)目前國內康復床主要依靠手動操作的現(xiàn)狀以及不同客戶的需求,基于PLC設計了一種智能康復床控制系統(tǒng),采用以昆侖通態(tài)觸摸屏為主要部件的人機交互子系統(tǒng),通過西門子s7-200PLC及其上位機軟件共同實現(xiàn)控制過程的自動化...

關鍵字: 智能康復床 人機交互 控制系統(tǒng)

(全球TMT2022年8月12日訊)Arasan宣布即刻起提供面向USB 2.0規(guī)范的第二代USB PHY。Arasan第二代USB PHY是其數(shù)十年來持續(xù)發(fā)展的成果,這一代產(chǎn)品具有極小的面積和超低的功率,專門面向物聯(lián)...

關鍵字: USB AN IP TOTAL

為包括汽車在內的所有移動產(chǎn)品提供半導體IP的領先提供商Arasan宣布推出具有極小面積的第二代USB PHY。  加利福尼亞州圣何塞2022年8月11日 /美通社...

關鍵字: USB IP AN BSP

智能硬件

21983 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉