資料介紹
1 引言
隨著電子信息技術的飛速發展,信息家電和各式各樣的移動終端得到越來越廣泛的應用。在這些人機交互( HMI)較頻繁的嵌入式系統中,鍵盤是一種應用昀為廣泛的輸入設備。由于嵌入式系統具有功耗低、體積小、專用性強等特點,因此嵌入式鍵盤常常要求具有特殊的工作方式和特定的驅動設計。
本文討論了基于 ADSP-BF561的非編碼矩陣鍵盤的硬件設計,并詳細闡述和分析了鍵盤驅動程序實現中的關鍵問題。ADSP-BF561是 Analog Devices Inc.推出的針對多媒體和通信應用方面的一款高性能 DSP產品,具有快速的數據處理能力和豐富的外設接口,已廣泛使用在各種網絡多媒體應用中。
該鍵盤設計已應用于一款以 uClinux 2.6和 ADSP-BF561作為軟硬件核心的網絡視頻電話終端產品,在實際應用中表現出較好的穩定性和實時性。
2 硬件設計方案
鍵盤的結構通常有兩種形式:線性鍵盤和矩陣鍵盤。在線性鍵盤中,每個按鍵都和一個 I/O口連接,資源利用率不高,一般只適用于按鍵較少的場合。矩陣鍵盤連接方式利用(N+M)個 I/O口,可以輸入 (N×M)個按鍵開關。根據矩陣鍵盤識別鍵值方式的不同,又可分為編碼式鍵盤和非編碼鍵盤兩種。
本設計采用非編碼矩陣鍵盤實現。鍵盤電路由 5根行線和 6根列線組成,共使用 BF561的 11個 GPIO(General purpose I/O port,通用輸入輸出)口,其接口電路如圖 1所示。
圖1鍵盤接口電路圖
該矩陣電路的 5個行引腳分別被接到 BF561的 GPIO43-GPIO47端口上,并且這五個端口被配置成輸入口,共用一個中斷源。同時,將 6根列線分別接到 BF561的GPIO37-GPIO42端口上,配置為輸出口。在矩陣鍵盤中,每條水平線和垂直線在交叉處都不直接連通,而是通過一個按鍵加以連接。當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下,由于列線輸出是低電平,一旦有鍵按下,則輸入線(行線)就會被拉低,這樣便可以通過 GPIO口產生中斷,通知處理器有鍵按下。
3 鍵盤驅動的實現
本設計利用 GPIO口來直接掃描矩陣鍵盤,從而簡化了掃描電路的設計,降低了成本,但鍵盤的消抖、掃描等問題都需由軟件來妥善解決。
3.1 按鍵消抖
當按鍵被按下或抬起的瞬間,由于觸點的彈性作用,會產生機械抖動,一般持續幾毫秒到十幾毫秒。這種抖動對于用戶來說是感覺不到的,但嵌入式系統微處理器的運行速度(即便是采用低速晶振)相對于人的手動動作是非常迅速的(處理器的速度是在微秒級,而機械抖動的時間至少是毫秒級的)。因此,有可能只按了一次按鍵,可是處理器卻已執行了多次中斷的操作。
為了避免將用戶的一次按鍵誤當作幾次按鍵來處理,必須要想辦法去掉這種抖動。本文通過 uClinux提供的定時器機制,利用定時時間取代傳統的忙等方法,提高了系統的性能。當鍵盤上有鍵被按下時,鍵盤中斷處理程序被觸發,其主要實現流程如下:
static void key_enter_irq(int idx, void *id)
{
關中斷;
kbd_Scan_timer.expires = jiffies + 2; //指定定時器到期的時間
add_timer(&kbd_Scan_timer); //將一個 timer_list對象掛入定時器隊列
}
該定時器對象(kbd_Scan_timer)需在模塊初始化函數中定義,并指定相應的處理函數。當定時器到期時,內核就執行指定的函數,完成以下一些工作:掃描鍵盤,得到被按下鍵的掃描碼,查表轉換成相應的鍵值后送入指定緩沖區中,開中斷并等待應用程序接收。
3.2 鍵值掃描
在確定有鍵被按下后,即可進入確定具體閉合鍵的過程。驅動程序中采用掃描法實現按鍵的確定。由于行線連接在 GPIO的輸入口,且共用一個中斷輸入口,因此,在中斷到來時,需要確定被按下的鍵在哪一行哪一列。
隨著電子信息技術的飛速發展,信息家電和各式各樣的移動終端得到越來越廣泛的應用。在這些人機交互( HMI)較頻繁的嵌入式系統中,鍵盤是一種應用昀為廣泛的輸入設備。由于嵌入式系統具有功耗低、體積小、專用性強等特點,因此嵌入式鍵盤常常要求具有特殊的工作方式和特定的驅動設計。
本文討論了基于 ADSP-BF561的非編碼矩陣鍵盤的硬件設計,并詳細闡述和分析了鍵盤驅動程序實現中的關鍵問題。ADSP-BF561是 Analog Devices Inc.推出的針對多媒體和通信應用方面的一款高性能 DSP產品,具有快速的數據處理能力和豐富的外設接口,已廣泛使用在各種網絡多媒體應用中。
該鍵盤設計已應用于一款以 uClinux 2.6和 ADSP-BF561作為軟硬件核心的網絡視頻電話終端產品,在實際應用中表現出較好的穩定性和實時性。
2 硬件設計方案
鍵盤的結構通常有兩種形式:線性鍵盤和矩陣鍵盤。在線性鍵盤中,每個按鍵都和一個 I/O口連接,資源利用率不高,一般只適用于按鍵較少的場合。矩陣鍵盤連接方式利用(N+M)個 I/O口,可以輸入 (N×M)個按鍵開關。根據矩陣鍵盤識別鍵值方式的不同,又可分為編碼式鍵盤和非編碼鍵盤兩種。
本設計采用非編碼矩陣鍵盤實現。鍵盤電路由 5根行線和 6根列線組成,共使用 BF561的 11個 GPIO(General purpose I/O port,通用輸入輸出)口,其接口電路如圖 1所示。
圖1鍵盤接口電路圖
該矩陣電路的 5個行引腳分別被接到 BF561的 GPIO43-GPIO47端口上,并且這五個端口被配置成輸入口,共用一個中斷源。同時,將 6根列線分別接到 BF561的GPIO37-GPIO42端口上,配置為輸出口。在矩陣鍵盤中,每條水平線和垂直線在交叉處都不直接連通,而是通過一個按鍵加以連接。當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下,由于列線輸出是低電平,一旦有鍵按下,則輸入線(行線)就會被拉低,這樣便可以通過 GPIO口產生中斷,通知處理器有鍵按下。
3 鍵盤驅動的實現
本設計利用 GPIO口來直接掃描矩陣鍵盤,從而簡化了掃描電路的設計,降低了成本,但鍵盤的消抖、掃描等問題都需由軟件來妥善解決。
3.1 按鍵消抖
當按鍵被按下或抬起的瞬間,由于觸點的彈性作用,會產生機械抖動,一般持續幾毫秒到十幾毫秒。這種抖動對于用戶來說是感覺不到的,但嵌入式系統微處理器的運行速度(即便是采用低速晶振)相對于人的手動動作是非常迅速的(處理器的速度是在微秒級,而機械抖動的時間至少是毫秒級的)。因此,有可能只按了一次按鍵,可是處理器卻已執行了多次中斷的操作。
為了避免將用戶的一次按鍵誤當作幾次按鍵來處理,必須要想辦法去掉這種抖動。本文通過 uClinux提供的定時器機制,利用定時時間取代傳統的忙等方法,提高了系統的性能。當鍵盤上有鍵被按下時,鍵盤中斷處理程序被觸發,其主要實現流程如下:
static void key_enter_irq(int idx, void *id)
{
關中斷;
kbd_Scan_timer.expires = jiffies + 2; //指定定時器到期的時間
add_timer(&kbd_Scan_timer); //將一個 timer_list對象掛入定時器隊列
}
該定時器對象(kbd_Scan_timer)需在模塊初始化函數中定義,并指定相應的處理函數。當定時器到期時,內核就執行指定的函數,完成以下一些工作:掃描鍵盤,得到被按下鍵的掃描碼,查表轉換成相應的鍵值后送入指定緩沖區中,開中斷并等待應用程序接收。
3.2 鍵值掃描
在確定有鍵被按下后,即可進入確定具體閉合鍵的過程。驅動程序中采用掃描法實現按鍵的確定。由于行線連接在 GPIO的輸入口,且共用一個中斷輸入口,因此,在中斷到來時,需要確定被按下的鍵在哪一行哪一列。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- EE-265使用ADSP-BF561 Blackfin?處理器標志針模擬PCM接口
- EE-272在ADSP-BF561 Blackfin?處理器上管理多個DXE
- ADSP-BF561黑線Processor硬件參考
- 適用于ADSP-BF561 Blackfin處理器的EZ-KIT Lite
- EE-314:啟動ADSP-BF561 Blackfin?處理器
- ADSP-BF561 EZ-KIT Lite<sup>?</sup>評估系統手冊
- ADSP-BF561黑體-歐美/SUV-Processor硬件參考
- ADSP-BF561 Blackfin版本0.3、0.5異常列表 0次下載
- EE-293:評估ADSP-BF561 Blackfin?處理器的功耗
- EE-265:使用ADSP-BF561 Blackfin?處理器標志針模擬PCM接口
- EE-272:在ADSP-BF561 Blackfin?處理器上管理多個DXE
- AN-813: ADSP-BF533/ADSP-BF561 Blackn?處理器與高速并行ADC接口
- ADSP-BF561:Blackfin嵌入式對稱多處理器數據手冊
- 基于ADSP-BF561的嵌入式鍵盤設計與實現
- 基于ADSP-BF561 的數字攝像系統設計
- 嵌入式fpga是什么意思 991次閱讀
- 什么是嵌入式系統?嵌入式系統的具體應用 2096次閱讀
- 常用的硬件電路設計方案介紹 2397次閱讀
- 基于HHBF561開發板和μClinux操作系統實現家庭網關設計方案 2105次閱讀
- 如何實現嵌入式系統遠程調試 5077次閱讀
- 基于嵌入式環境的WiFi通信設計方案詳解 5593次閱讀
- 實現了多鍵齊按和重復按鍵的嵌入式系統鍵盤驅動設計 3176次閱讀
- 液晶顯示屏設計方案:基于Nios嵌入式軟核處理器 1081次閱讀
- 嵌入式行業發展狀況_嵌入式行業人才需求_嵌入式系統就業前景分析 2.3w次閱讀
- Blackfin系列處理器在網絡多媒體中的應用及介紹 6025次閱讀
- 嵌入式開發就業前景分析_嵌入式領域的職業發展方向 1.8w次閱讀
- 嵌入式接口保護設計方案 813次閱讀
- 一種嵌入式Web服務器的設計方案 4151次閱讀
- 基于ARM的嵌入式無線視頻采集系統設計 1809次閱讀
- 基于ADSP-BF561的寬帶信息終端設計 1260次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多