內容摘要:設備智能化改造大趨勢下,嵌入式計算機大量的應用到工控系統中,自定義工控鍵盤的應用也變得越來越廣泛。本文提出一種基于USB HID協議的自定義鍵盤設計,設計簡單功能實用,免驅動自動識別。很好的解決了按需定制鍵盤設備的設計要求,方便了系統上位機軟件編程,貼近工程實踐,應用前景廣闊。
隨著智能化工控設備的推廣,越來越多的工控設備采用嵌入式計算機作為其控制核心。以嵌入式計算機系統為平臺進行產品開發,需要進行控制單元硬件和用戶應用軟件設計。在應用軟件設計環節,不可避免的需要用到人機交互設備,以完成操作人員對計算機系統的控制,工控鍵盤作為最常用的一類輸入設備,進入了我們的視線。
工控鍵盤區別與標準鍵盤,它所有按鍵是為滿足特定產品需求而設計,常用接口有PS/2和USB。USB設備具有支持熱插拔和楨采集速率高等優點,正逐步取代原來的PS/2設備,成為市場的主流。本文主要介紹一種USB接口的自定義工控鍵盤的設計,解決智能化數控設備中鍵盤定制的問題。
1 USB BID簡介
USB接口是一種即插即用型的串行總線通信端口,廣泛應用于各類計算機系統。HID類設備屬于人機交互操作的設備,是USB設備中比較大的一個類,用于控制計算機操作,如USB鼠標,USB鍵盤等設備。操作系統自帶了HID類的驅動程序,免去了驅動程序的編寫,因此一些簡單的USB設備,喜歡枚舉成HID設備,方便了設計也方便了使用。
所有HID設備通過USB的控制管道(默認管道,即端點0)和中斷管道與主機通信。控制管道主要用于:接收USB主機的控制請示及相關的類數據;在USB主機查詢時傳輸數據;接收USB主機的數據。中斷管道主要用于:USB主機接收USB設備的異步傳輸數據;USB主機發送有實時性要求的數據給USB設備。
要讓計算機將一個HID設備識別為鍵盤設備,要完成的主要工作是修改HID設備的描述符。HID設備的描述符主要包括5個USB的標準描述符(設備描述符、配置描述符、接口描述符、端點描述符、字符串描述符)和3個HID設備類特定描述符(HID描述符、報告描述符、實體描述符)。修改描述符可以將HID設備枚舉為鼠標、鍵盤及其他HID設備。
2 系統方案設計
USB自定義工控鍵盤從系統構成上看主要分為鍵盤部分設計和USB接口設計兩部分。系統組成框圖如圖1所示。

其中鍵盤掃描部分軟硬件設計根據具體鍵盤定制要求,預留足夠的I/O,設計方案大致相同。USB接口部分,目前微處理器實現USB通信的方案比較多,主要有以下3種:1)單片機+PDIUSBD12芯片結構;2)采用Cypress公司的集成了USB2.0協議的微處理器CY7C68013A芯片;3)選用基于ARM Cortex-M3內核的STM32系列處理器。3種方案各有優勢,單片機+PDIUSBD12芯片結構,設計簡單,成本低廉;采用CY7C68013A芯片,集成度高,自帶協議開發方便;選用STM32系列處理器,電路簡單、性能優異、擴展性強、有豐富的固件資源,方便開發。
作為新一代32位處理器STM32系列,性能提升是顯而易見的,價格也比較合理,性價比非常高,有很廣闊的應用前景。因此,這里構建USB工控鍵盤硬件平臺采用STM32F103C8T6處理芯片。
3 硬件設計
STM32F103C8T6是中等容量的STM32產品,它基于ARM的Cortex-M3內核,具有64K片上閃存,LOFP-48封裝,USB接口及豐富的其他外設接口。使用STM32F103C8T6設計USB通信接口,電路簡單,性能穩定,電路原理圖如圖2所示。

圖中J1為USB接口直接與STM32處理器PA11、PA12相連,J3、J4為鍵盤掃描接口,共引出16個IO,最多可掃描8*8矩陣鍵盤即64個按鍵。其余電路為處理器最小系統電路。
4 軟件設計
ST公司給我們提供了詳盡的The USB—FS—DevICe library固件庫,固件庫程序結構清晰,主要分為底層和上層兩個部分。
1)底層結構包括5個文件:usb_core.c(USB總線數據處理的核心文件),usb_init.c,usb_int.c(用于端點數據輸入輸入中斷處理),usb_mem.c(用于緩沖區操作),usb_regs.c(用于寄存器操作)。
2)上層結構總共5個文件:hw_config.c(用于USB硬件配置)、usb_pwr.c(用于USB連接、斷開操作)、usb_istr.c(直接處理USB中斷)、usb_prop.c(用于上層協議處理,比如HID協議,大容量存儲設備協議)、usb_desc.c(具體設備的相關描述符定義和處理)。
基于STM32 USB固件庫的主程序設計流程如圖3所示。

設備初始化所做的工作主要有:初始化時鐘系統、GPIO及相關設備;配置USB所用到的中斷;配置和使能USB時鐘;初始化全局指針。
進入主程序大循環后,掃描按鍵改動,按鍵有變動,通過SendReport()函數將按鍵狀態發送到USB主機。實際上這里只是將數據寫入IN端點緩沖區,主機的IN令牌包來的時候,SIE負責把它返回給主機。
5 系統測試與應用
軟件設計完成后,將程序下載到STM32處理器中,連接計算機USB給處理器上電,在完成設備初始化后,打開計算機設備管理器可以看到鍵盤設備中新增一項HID Keyboard Device(如圖4),這時鍵盤設備已經作為標準HID設備被計算機識別了。

接下來要進行的工作要根據鍵盤定制要求,查閱HID用途表文檔,確定工控鍵盤上行列值對應的按鍵代碼,修改函數SendReport(),完成鍵盤定制程序設計。函數SendReport()返回8字節報告暫存在數組Buf[8]中。通過報告描述符的定義及HID用途表文檔,可知Buf[0]的D0是左CTRl鍵,D1是左Shift鍵,D2是左Alt鍵,D3是左GUI(即Window鍵),D4是右Ctrl,D5是右Shift,D6是右Alt,D7是右GUI鍵。Buf[1]保留,值為0。Buf[2]-Buf[7]為鍵值,最多可以有6個。
6 結論
在工業控制應用領域,工控鍵盤定制屢見不鮮。本文通過對USB HID設備的研究,提出自定義USB工控鍵盤設計,電路簡單,成本低廉,無需驅動自動識別,具有很高的實用價值和廣闊的應用前景。
上一篇:基于GPRS和嵌入式Linux的遠程圖像監控系統設計
下一篇:基于DeviceNet 的嵌入式I/O模塊設計方案
推薦閱讀
史海拾趣
隨著技術的不斷發展,茂達電子在產品研發上不斷取得突破。公司投入大量人力、物力進行技術研發,并與多家國內外著名大學和研究機構合作,共同推進模擬集成電路設計的創新。經過不懈的努力,茂達電子成功推出了一系列世界領先的半導體器件產品,贏得了市場的廣泛認可。
隨著市場的不斷變化和客戶需求的日益多樣化,茂達電子開始積極擴展產品線。除了原有的電源轉換及電源管理IC外,公司還成功研發了放大器及驅動IC、離散式功率元件等系列產品。這些新產品的推出,不僅豐富了茂達電子的產品線,也為客戶提供了更多樣化的選擇。
隨著市場的不斷變化和客戶需求的日益多樣化,茂達電子開始積極擴展產品線。除了原有的電源轉換及電源管理IC外,公司還成功研發了放大器及驅動IC、離散式功率元件等系列產品。這些新產品的推出,不僅豐富了茂達電子的產品線,也為客戶提供了更多樣化的選擇。
在電子行業的初期,Ambersil公司以其創新的技術和產品迅速嶄露頭角。公司研發團隊成功開發出一種高效的電子清潔劑,能夠去除電路板上的頑固污垢,提高電子設備的性能和穩定性。這一創新產品迅速獲得了市場的認可,Ambersil公司因此獲得了大量的訂單,銷售額逐年攀升。
隨著業務的不斷發展,CINCH公司開始尋求市場拓展和戰略合作的機會。公司積極與國內外知名企業建立合作關系,共同開發新產品、拓展新市場。同時,CINCH公司還加強了對新興市場的關注,通過參加國際展會、舉辦技術研討會等方式,提升品牌知名度和影響力。這些舉措有效地推動了公司的市場拓展和業務發展。
近年來,全球半導體行業面臨嚴重的缺芯問題,給包括福斯特半導體在內的眾多企業帶來了巨大挑戰。為了應對這一挑戰,福斯特半導體積極調整策略,加強內部管理和優化生產結構。公司更新了一套全新的內部管理系統,對多個業務領域和管理板塊進行配套和升級,提升了團隊研發效率和質量。同時,公司還加強了移動化辦公模式的更新升級,滿足了靈活管理的需要。通過這些措施,福斯特半導體在保持高效運營的同時,也增強了自身的抗風險能力,為未來的發展奠定了堅實基礎。
在PADS Layout中BGA封裝的元器件的焊盤附近的過孔可以移動到跟焊盤重疊(重疊一部分),而在PADS Router中卻不能把過孔移動到跟焊盤重疊,改怎樣設置?希望前輩們幫幫忙!謝謝!… 查看全部問答∨ |
|
200K的數據,每次16個字節去寫,5.0只要7秒左右,6.0要2分半鐘左右,同一段代碼產生的結果,非常疑惑。 另外,6.0似乎在寫文件的過程中,我拔掉SD卡,似乎非常容易造成SD卡亂碼(似乎是FAT亂了才導致文件全是亂碼),上述寫文件過程中會不斷改變文 ...… 查看全部問答∨ |
|
Protel99se如何設置PCB層數啊, 現在一只要一創建PCB文件就是N層的,我也不知道在那編輯層數. 但我現在想設計單層,雙層,4層板,因該怎么設置啊. 新手.謝謝.… 查看全部問答∨ |
現在調試arm都要用jtag,常用的是wigger jtag,我看上面就是一個244,然后就是一些上拉電阻。 我在網上看有的電路圖有2中情況: 情況1:PC并口的DB2經過一個三極管,然后連到jtag的rst信號, 情況2:PC并口的DB2先經過244,然后從244出來后再經 ...… 查看全部問答∨ |
手上有塊液晶驅動板,由于液晶板的關系,使得驅動板的電壓為3.3V。現在我手上只有STC89C52單片機和一些電阻電容之類的元件,想要驅動液晶屏,就手上的這些東西能夠做嗎? 考慮:單片機IO口輸出電壓為5V,但是驅動板上液晶控制芯片的電源電壓為3.3V ...… 查看全部問答∨ |
|
大家好啊,我用的是6713的板子作為高速數據處理。DSP能夠處理的過來,但是在利用兩個UART進行數據通信,PC對兩個口進行發數據的時候,剛開始可能接受到幾幀數據,但是馬上DSP就不會響應中斷了! 各位大俠知道是怎么回事啊?… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析