關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于HID協議的USB人機交互設備的接口設計

        基于HID協議的USB人機交互設備的接口設計

        作者: 時間:2010-09-15 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/202511.htm

          ① Get_Report——主機用控制傳輸從設備接收數據,所有類設備都要支持這個請求;

          ② Set_Report——設備用控制傳輸接收主機的數據,設備可以不支持此請求;

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

          ④ Set_Idle——設置閑置狀態,設備可不支持此請求;

          ⑤ Get_Protocol——主機獲得設備的當前活動是引導還是報告;

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

          2 接口固件設計與實現

          該設備采用C8051F120微控制器和PDID12芯片來實現,如圖3所示。


        圖3 HID系統結構框圖

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

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

          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,//報告數值(64 fields)

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

          //輸出報告



        關鍵詞: HID USB 協議 人機交互

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙岩市| 大埔县| 抚松县| 常熟市| 东乡族自治县| 温宿县| 井研县| 黑山县| 交口县| 临泽县| 永城市| 泾川县| 互助| 呼和浩特市| 江川县| 尖扎县| 东乡| 萨嘎县| 汨罗市| 分宜县| 来安县| SHOW| 波密县| 钟祥市| 石台县| 太原市| 黑水县| 绥滨县| 屏东县| 黔东| 元江| 门源| 新田县| 新龙县| 尉氏县| 紫阳县| 福清市| 开阳县| 卓尼县| 翼城县| 金寨县|