賈書飛 商俊燕 宋潔
摘要:該文提出了一種基于USB HID協議的工控鍵盤,采用 PDIUSBD12芯片作為USB接口芯片,使用STC15F2K60S2芯片微處理器,其管腳多、性能好、制作成本低,可同時與標準大鍵盤使用或獨立使用。
關鍵詞:USB;HID;工控鍵盤;PDIUSBD12芯片
中圖分類號:TN-9 文獻標識碼:A 文章編號:1009-3044(2018)29-0257-02
隨著用工荒出現,越來越多企業需要智能化設備來替代部分人工,而在這些智能化設備中,核心控制設備就是嵌入式計算機,鍵盤是一種重要的人機交互設備,方便用戶操作工業設備。工控鍵盤與標準鍵盤的區別在于,工控鍵盤可以為滿足特定要求而設計,常用的接口有PS/2和USB兩種,目前隨著技術發展,USB接口以其熱拔插、采集速率高等特定,應用越來越多。該文中采用USB接口來設計鍵盤。
1 HID協議簡介
USB HID類是一個比較大的類,其設備屬于人機交互操作的設備,用于控制計算機操作USB方面的操作:USB鍵盤、USB鼠標、USB觸摸板、USB游戲操作桿、電話撥號設備、VCR遙控等設備。另外,一般操作系統會自帶HID類的驅動程序,用戶在開發是無須再開發驅動程序,只需要直接進行API調用完成通信即可,因此很多簡單的USB設備采用HID設備。
HID設備主要使用USB的中斷管道和控制管道和主機進行通信。其中必須使用端點為0的控制管道,它的主要用途是傳輸類請求代碼、USB描述符以及提供查詢消息數據;中斷管道必需中斷輸入管道,它的作用是傳輸主機到設備的輸入數據。
在進行設計時,如需把設備識別為HID類必須遵守HID規范。HID設備的描述符有5個USB的標準描述符:設備描述符、接口描述符、配置描述符、字符串描述符、端點描述符;3個HID設備類特定描述符:HID描述符、物理描述符、報告描述符。
2 系統方案設計
自定義工控鍵盤主要分為兩部分進行設計:鍵盤和USB接口部分,其系統的組成圖如圖1所示。
該自定義工控鍵盤的設計主要包含兩部分:硬件設計和軟件設計。
2.1 硬件設計
USB接口部分,目前微處理器實現USB通信的方案比較多,我們采用的是:單片機加PDIUSBD12芯片結構。
PDIUSBD12芯片,作為USB器件它的性能優化,常用在微控制器的系統與微控制器通過高速通用并行接口進行通信的場合。PDIUSBD12芯片的USB接口實現通過模塊化方法來實現USB,并允許選擇最合適的作為系統微控制器,同時也能兼容現有的體系結構還能是其他的固件減少到最小。通過這種方式可以降低開發時間、風險和成本, 所以使用PDIUSBD12芯片來開發USB外圍設備的解決方案,是一種高效、低成本的方案,在很多外圍設備如數碼相機、掃描儀、打印機等都會使用這種方案。
單片機采用的是宏晶STC15F2K60S2,其LQFP44腳封裝,管腳多、體積小、成本低廉,在本應用中用來進行矩陣鍵盤掃描,配合PDIUSBD12接口芯片,將掃描到的鍵值變化通過HID協議發送給USB主機。其電路原理圖如下圖2所示。
2.2 軟件設計
通過單片機給PDIUSBD12芯片發送命令和數據來實現PDIUSBD12和單片機之間的通信。PDIUSBD12芯片的命令字有三種:初始化命令字、通用命令字和數據流命令字。其工作流程為:1)單片機發地址命令給PDIUSBD12芯片;2)芯片根據命令要求來讀取或發送數據。
編寫固件程序主要作用是能是操作系統能檢測、識別設備。在設計工控鍵盤的USB固件程序分為三部分:首先進行單片機和外圍電路的初始化,接著設計主循環部分,注意其中的任務可以中斷,最后中斷服務程序。
在USB協議里,從主機開始進行傳輸,前臺工作設備為單片機需要等待中斷。工作流程為:首先發令牌包給PDIUSBD12芯片的USB設備,接著PDIUSBD12芯片接收到令牌包給單片機發中斷命令,然后單片機接受到命令后進入中斷服務程序,讀取PDIUSBD12芯片的中斷寄存器,并判斷令牌包的類型并執行操作。
3 系統測試與應用
自定義工控鍵盤測試,使用JAVA編寫一個提供鍵盤測試界面,可識別鍵盤接口電路發送上來的鍵值,并做反顯顯示,具體應用時可對不同的按鍵值賦予不同的功能,從而實現工業控制要求。
首先將工控鍵盤通過USB接口接入嵌入式計算機后,當我們按下工控鍵盤上的1鍵,則測試軟件界面上1黃色反顯,類似方法,測試出其他按鍵都正常運行。其運行效果如下圖3所示:
4 結束語
在工控領域,工控鍵盤設計方案很多,該文介紹了一種基于單片機和PDIUSBD12芯片結合的設計,其性能高、速度快、使用方便以及成本低廉,具有很高的實際應用價值和廣闊的應用前景。
參考文獻:
[1] 榮劍, 趙同林. 基于PS/2接口的工控特殊鍵盤設計[J]. 電腦知識與技術, 2010(19).
[2] 戴捷, 胡曉吉. 基于光傳輸的USB鍵盤鼠標一體化設計[J]. 計算機工程與設計, 2012(7).
[3] 董鋼. 基于PDIUSBD12與單片機設計的智能USB軟件狗[J]. 電腦迷, 2017(1).
[4] 秦德樂, 謝文娣. 基于STC15F2K60S2的動態掃描LED多功能旋轉屏設計[J]. 計算機工程與設計, 2017(z1).
[5] 滕鵬, 姜昌華. 基于HID類的USB手勢輸入系統設計與實現[J]. 數字技術與應用, 2017(2).
【通聯編輯:謝媛媛】