隨著以計算機技術、通信技術和軟件技術為核心的信息技術的發展,嵌入式系統在各個行業中得到了廣泛的應用。嵌入式系統已成為當今IT行業的焦點之一。而在嵌入式系統中,鍵盤是重要的人機交互設備之一。嵌入式Linux是一種開放源碼、軟實時、多任務的操作系統,是開發嵌入式產品的優秀操作系統平臺,是在標準Linux基礎上針對嵌入式系統進行優化和裁剪后形成的,因此具有Linux的基本性質。在此提出的矩陣鍵盤驅動程序的設計方案是以嵌入式Linux和TIOMAP5912處理器為軟硬件平臺的,在設計的嵌入式語音識別應用平臺中,通過測試,表明其具有良好的穩定性和實時性。
l 硬件原理
OMAP5912處理器是由TI應用最為廣泛的TMS320C55X DSP內核與低功耗、增強型ARM926EJ—S微處理器組成的雙核應用處理器。用這樣一種組合方式將2個處理器整合在1個芯片后,開發人員可以根據實際情況,利用DSP運行復雜度較高的數字信號處理任務,利用ARM運行通信、控制和人機接口方面的任務,從而使便攜式設備在保持良好人機交互環境的基礎上,有效地降低功耗。在外設方面,OMAP5912微處理器支持常用的各種接口,其中通過MPUIO接口最多可支持8×8的矩陣鍵盤,系統中采用這個接口擴展了一個4×5的矩陣鍵盤。其硬件連接示意圖如圖1所示,其中按鍵行陣列必須提供上拉信號,列陣列加二極管,防止瞬間電流過大對MPUIO口造成沖擊。
按照鍵盤的構造方式人們把鍵盤劃分為線性鍵盤和矩陣鍵盤。其中,線性鍵盤是指每個按鍵都占用嵌入式處理器的1個I/O端口,并通過這個I/O端口實現人機交互,各個按鍵之間互不影響。使用這種方案的優點是簡單、可靠,但是線性鍵盤對I/O端口的占用量很大。因此,嵌入式系統中很少采用這種方法。
另外一種矩陣鍵盤是指當按鍵數量過多時,采用矩陣的排列方法,將按鍵設計成n行m列的矩陣形式。其中,每個按鍵占用行和列的1個交叉點,并且以行和列為單位引出信號線。這樣只需要占用n m個I/O端口,卻可以驅動n×m個按鍵,大大節省了對嵌入式處理器I/O端口的占用,節省了寶貴的資源。矩陣鍵盤在減少嵌入式處理器I/O端口占用的問題上做出了很大的貢獻,但隨之而來的問題是如何確定矩陣中按鍵的位置,這里采用列掃描法,其思路如下:
在鍵盤初始化階段,所有的列信號(KBC)都被設置輸出為低電平。如果矩陣鍵盤中的1個按鍵按下,則相應的行信號和列信號線短路,行信號線(KBR)輸入由高電平變為低電平,產生1個中斷,然后在驅動的中斷服務程序中按照表1中的序列逐列掃描列信號,讀取行信號的狀態,根據讀回來的行信號狀態就可以判斷有那些按鍵按下。