日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

  1 HID協(xié)議簡(jiǎn)介

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

 ?、?交換的數(shù)據(jù)存儲(chǔ)在報(bào)告的結(jié)構(gòu)內(nèi),設(shè)備必須支持HID報(bào)告格式。

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

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

  ④ 沒(méi)有傳輸速度的保證。

  當(dāng)插入U(xiǎn)SB設(shè)備后,主機(jī)會(huì)向設(shè)備請(qǐng)求各種描述符來(lái)識(shí)別設(shè)備。為了把一個(gè)設(shè)備識(shí)別為HID類別,設(shè)備在定義描述符的時(shí)候必須遵守HID規(guī)范。圖1顯示了HID各種描述符之間的關(guān)系。事實(shí)上,每個(gè)設(shè)備可以有多個(gè)接口描述符來(lái)實(shí)現(xiàn)多接口設(shè)備,而且每個(gè)接口描述符下應(yīng)該有多個(gè)端點(diǎn)描述符。


圖1 HID各種描述符之間的關(guān)系

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

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


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

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

表1 HID類設(shè)備支持的傳輸方式傳輸


  USB協(xié)議定義了11種請(qǐng)求命令,通過(guò)這些請(qǐng)求來(lái)獲得設(shè)備的信息及對(duì)設(shè)備進(jìn)行設(shè)置。HID類設(shè)備除了要支持這11種標(biāo)準(zhǔn)的請(qǐng)求外,還要實(shí)現(xiàn)以下6種特定請(qǐng)求:

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

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

 ?、?Get_Idle——主機(jī)讀取設(shè)備當(dāng)前的空閑速率,設(shè)備可以不支持此請(qǐng)求;

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

 ?、?Get_Protocol——主機(jī)獲得設(shè)備的當(dāng)前活動(dòng)是引導(dǎo)協(xié)議還是報(bào)告協(xié)議;

  ⑥ Set_Protocol——在引導(dǎo)協(xié)議和報(bào)告協(xié)議間切換,設(shè)備如果支持系統(tǒng)引導(dǎo)(如鍵盤和鼠標(biāo)),就必須支持Get_Protocol和Set_Protocol請(qǐng)求。

  2 HID接口固件設(shè)計(jì)與實(shí)現(xiàn)

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


圖3 HID系統(tǒng)結(jié)構(gòu)框圖

  因?yàn)镻DIUSBD12的主端點(diǎn)(Endpoint2)具有64字節(jié)的雙緩沖,能夠提供比較高的速度,所以在端點(diǎn)描述符里把它配置為中斷傳輸方式,而Endpoint1沒(méi)有使用。PDIUSBD12通過(guò)中斷觸發(fā)CPU來(lái)響應(yīng)主機(jī)的各種請(qǐng)求。

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

  code unsigned char szReport[] = {

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

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

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

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

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

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

  //輸入報(bào)告

  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,//報(bào)告長(zhǎng)度Report size (8位)

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

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

  //輸出報(bào)告

  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,//報(bào)告長(zhǎng)度(8位)

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

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

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

  0xC0//集合結(jié)束(Application)

  };

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


圖4 應(yīng)用程序枚舉HID設(shè)備流程

  3 應(yīng)用程序設(shè)計(jì)實(shí)現(xiàn)

  Windows為應(yīng)用程序訪問(wèn)HID設(shè)備提供了強(qiáng)大的支持,有一整套對(duì)HID設(shè)備進(jìn)行訪問(wèn)的API。應(yīng)用程序要訪問(wèn)設(shè)備就必須先枚舉到設(shè)備,圖4為應(yīng)用程序枚舉HID設(shè)備流程。

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

 ?、?為了實(shí)現(xiàn)異步訪問(wèn)設(shè)備,在CreateFile打開(kāi)設(shè)備時(shí)必須使用FILE_FLAG_OVERLAPPED標(biāo)志。

 ?、?打開(kāi)設(shè)備成功后,使用CreateThread建立1個(gè)讀設(shè)備線程。

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

 ?、?調(diào)用ReadFile函數(shù),并傳入這個(gè)結(jié)構(gòu)。

  ⑤ 調(diào)用ReadFile后會(huì)立即返回,必須調(diào)用GetLaST?Error獲得出錯(cuò)碼。 如果為ERROR_IO_PENDING, 說(shuō)明此操作是在等待完成的;否則,說(shuō)明調(diào)用出錯(cuò)。

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

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

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

  4 小結(jié)

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

 

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

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

關(guān)鍵字: iPhone 15 Lightning USB

GRL東莞實(shí)驗(yàn)室將與上海和臺(tái)北實(shí)驗(yàn)室一同,提供Windows Host認(rèn)證服務(wù) 加利福尼亞州圣克拉拉市2022年9月22日 /美通社/ -- 高速信號(hào)和充電技術(shù)測(cè)...

關(guān)鍵字: Windows THUNDERBOLT USB OS

接下來(lái)測(cè)試燒寫(xiě)功能,本次采用串口和USB燒寫(xiě)方式。使用ISP串口燒寫(xiě)這是51單片機(jī)常用的方案,本次測(cè)試比較順利,沒(méi)有遇到什么問(wèn)題。但是USB燒寫(xiě)沒(méi)有測(cè)試成功,USB燒寫(xiě)方式不需要任何的驅(qū)動(dòng)和硬件支持,直接將USB線和ST...

關(guān)鍵字: PCB控制板 USB 串口

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

關(guān)鍵字: ROBOTICS AMR USB 移動(dòng)機(jī)器人

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

關(guān)鍵字: USB GE AMR ROBOTICS

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

關(guān)鍵字: USB ROBOTICS GE AMR

以下內(nèi)容中,小編將對(duì)路由器的相關(guān)內(nèi)容進(jìn)行著重介紹和闡述,希望本文能幫您增進(jìn)對(duì)路由器的了解,和小編一起來(lái)看看吧。

關(guān)鍵字: 路由器 USB 處理器

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

關(guān)鍵字: 智能康復(fù)床 人機(jī)交互 控制系統(tǒng)

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

關(guān)鍵字: USB AN IP TOTAL

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

關(guān)鍵字: USB IP AN BSP

智能硬件

22092 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉