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