付費(fèi)下載
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于高性能DSP芯片ADSP-BF561實(shí)現(xiàn)非編碼矩陣鍵盤(pán)的設(shè)計(jì)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是AnalogDevicesInc.推出的針對(duì)多媒體和通信應(yīng)用方面的一款高性能DSP產(chǎn)品,具有快速的數(shù)據(jù)處理能力和豐富的外設(shè)接口,已廣泛使用在各種網(wǎng)絡(luò)多媒體應(yīng)用中。該鍵盤(pán)設(shè)計(jì)已應(yīng)用于一款以u(píng)Clinux2.6和ADSP-BF561作為軟硬件核心的網(wǎng)絡(luò)視頻電話終端產(chǎn)品,在實(shí)際應(yīng)用中表現(xiàn)出較好的穩(wěn)定性和實(shí)時(shí)性。2硬件設(shè)計(jì)方案鍵盤(pán)的結(jié)構(gòu)通常有兩種形式:線性鍵盤(pán)和矩陣鍵盤(pá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根行線和6根列線組成,共使用BF561的11個(gè)GPIO(GeneralpurposeI/Oport,通用輸入輸出)口,其接口電路如圖1所示。圖1鍵盤(pán)接口電路圖該矩陣電路的5個(gè)行引腳分別被接到BF561的GPIO43-GPIO47端口上,并且這五個(gè)端口被配置成輸入口,共用一個(gè)中斷源。同時(shí),將6根列線分別接到BF561的GPIO37-GPIO42端口上,配置為輸出口。在矩陣鍵盤(pán)中,每條水平線和垂直線在交叉處都不直接連通,而是通過(guò)一個(gè)按鍵加以連接。當(dāng)按鍵沒(méi)有按下時(shí),所有的輸入端都是高電平,代表無(wú)鍵按下,由于列線輸出是低電平,一旦有鍵按下,則輸入線(行線)就會(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ì)于用戶來(lái)說(shuō)是感覺(jué)不到的,但嵌入式系統(tǒng)微處理器的運(yùn)行速度(即便是采用低速晶振)相對(duì)于人的手動(dòng)動(dòng)作是非常迅速的(處理器的速度是在微秒級(jí),而機(jī)械抖動(dòng)的時(shí)間至少是毫秒級(jí)的)。因此,有可能只按了一次按鍵,可是處理器卻已執(zhí)行了多次中斷的操作。為了避免將用戶的一次按鍵誤當(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)流程如下:staticvoidkey_enter_irq(intidx,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)按鍵的確定。由于行線連接在GPIO的輸入口,且共用一個(gè)中斷輸入口,因此,在中斷到來(lái)時(shí),需要確定被按下的鍵在哪一行哪一列。具體實(shí)現(xiàn)過(guò)程如圖2所示:依次將列線置為低電平,即置某根列線為低電平時(shí),把其他列線置為高電平。在確定某根列線為低電平后,再逐行檢測(cè)各行線的電平狀態(tài)。若某行為低,則該行線與置為低電平的列線交叉處的按鍵即為閉合按鍵。由此便可得到閉合鍵的行值和列值,通常這就是一個(gè)掃描碼,然后可采用計(jì)算法或者查表法將閉合鍵的掃描碼轉(zhuǎn)換成應(yīng)用程序所能夠理解的鍵值。圖2掃描算法流程圖3.3緩沖區(qū)同步得到閉合鍵的掃描碼后,通常將掃描碼轉(zhuǎn)換成應(yīng)用程序可以理解的鍵值后放入一個(gè)緩沖區(qū)中,直到應(yīng)用程序處理按鍵為止。緩沖是一個(gè)很有用的措施,當(dāng)應(yīng)用程序在按鍵事件發(fā)生了卻不能及時(shí)處理它們時(shí),通過(guò)緩沖區(qū)就可以防止按鍵丟失。緩沖區(qū)的大小取決于應(yīng)用程序的需要。一般來(lái)說(shuō),都是把緩沖區(qū)作為一個(gè)環(huán)形隊(duì)列來(lái)管理。環(huán)形緩沖區(qū)通常有一個(gè)讀指針和一個(gè)寫(xiě)指針(如圖3所示)。通過(guò)移動(dòng)讀指針和寫(xiě)指針就可以實(shí)現(xiàn)緩沖區(qū)的數(shù)據(jù)讀取和寫(xiě)入。當(dāng)一個(gè)按鍵被按下時(shí),鍵值將被放置在環(huán)形隊(duì)列的寫(xiě)指針指向的位置。而應(yīng)用程序則是通過(guò)讀指針去讀取緩沖區(qū)中的鍵值。若緩沖區(qū)已滿,則任何下一個(gè)按鍵都將被丟棄。若緩沖區(qū)為空,則讀進(jìn)程阻塞。使用環(huán)形的緩沖區(qū)可以使得讀寫(xiě)并發(fā)執(zhí)行,讀進(jìn)程和寫(xiě)進(jìn)程可以采用“生產(chǎn)者和消費(fèi)者”的模型來(lái)訪問(wèn)緩沖區(qū),從而方便了緩沖的使用和管理,確保系統(tǒng)的安全性。圖3環(huán)形緩沖區(qū)應(yīng)用層中使用了select系統(tǒng)調(diào)用,select會(huì)在一個(gè)循環(huán)中對(duì)每個(gè)需要監(jiān)聽(tīng)的設(shè)備調(diào)用它們各自的poll支持函數(shù)以使得當(dāng)前進(jìn)程被加入各個(gè)設(shè)備的等待隊(duì)列。若當(dāng)前沒(méi)有任何被監(jiān)聽(tīng)的設(shè)備就緒,則內(nèi)核進(jìn)行調(diào)度(調(diào)用schedule),當(dāng)前進(jìn)程讓出CPU進(jìn)入阻塞狀態(tài),schedule返回時(shí)將再次循環(huán)檢測(cè)是否有操作可以進(jìn)行,如此反復(fù);否則,若有任意一個(gè)設(shè)備就緒,select都立即返回。poll函數(shù)中利用等待隊(duì)列,實(shí)現(xiàn)了應(yīng)用程序?qū)彌_區(qū)讀操作的同步。因此,只需再定義兩個(gè)信號(hào)量,用于實(shí)現(xiàn)同步和互斥:staticDECLARE_MUTEX(mutex_sem);/*定義用于互斥的信號(hào)量,初值為1*//*定義控制驅(qū)動(dòng)程序?qū)懢彌_區(qū)的信號(hào)量,初值為KEYBUF_SIZE-1,表示緩沖區(qū)中的空位數(shù)*/structsemaphoreempty_sem;sema_init(&empty_sem,KEYBUF_SIZE-1);驅(qū)動(dòng)程序填寫(xiě)緩沖區(qū)過(guò)程的偽代碼如下:down(empty_sem);//保證緩沖區(qū)中有空位,否則進(jìn)程掛起down(mutex_sem);//申請(qǐng)互斥信號(hào)量,保證對(duì)緩沖區(qū)的互斥訪問(wèn)鍵值送往環(huán)形緩沖寫(xiě)指針?biāo)傅刂?;char_buf_write=(char_buf_write+1)modKEYBUF_SIZE;//修改寫(xiě)指針up(mutex_sem);//釋放互斥信號(hào)量wake_up(&key_wait);//喚醒等待隊(duì)列中的進(jìn)程應(yīng)用程序讀緩沖區(qū)過(guò)程的內(nèi)核實(shí)現(xiàn)偽代碼如下:down(mutex_sem);//申請(qǐng)互斥信號(hào)量,保證對(duì)緩沖區(qū)的互斥訪問(wèn)環(huán)形緩沖讀指針?biāo)傅刂返闹邓屯脩艨臻g;char_buf_read=(char_buf_read+1)modKEYBUF_SIZE;//修改讀指針up(mutex_sem);//釋放互斥信號(hào)量4結(jié)束語(yǔ)本文設(shè)計(jì)并實(shí)現(xiàn)了基于ADSP-BF561的嵌入式矩陣鍵盤(pán)。利用GPIO口直接掃描矩陣鍵盤(pán),簡(jiǎn)化了掃描電路的設(shè)計(jì),降低了成本;軟件實(shí)現(xiàn)上,利用定時(shí)器消抖,避免忙等,提高系統(tǒng)效率;利
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國(guó)袋式除塵器市場(chǎng)應(yīng)用趨勢(shì)及供需平衡狀況分析研究報(bào)告
- 2025至2030中國(guó)運(yùn)動(dòng)健康產(chǎn)業(yè)市場(chǎng)增長(zhǎng)與競(jìng)爭(zhēng)格局研究報(bào)告
- 2026年西雙版納州生態(tài)環(huán)境局勐海分局編外人員招聘?jìng)淇碱}庫(kù)附答案詳解
- 2025-2030中國(guó)中小微企業(yè)行業(yè)市場(chǎng)供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)高鈦渣市場(chǎng)深度調(diào)研及未來(lái)發(fā)展方向預(yù)測(cè)研究報(bào)告
- 中共啟東市委組織部2026年校園招聘?jìng)淇碱}庫(kù)完整答案詳解
- 井控課件處長(zhǎng)培訓(xùn)班
- 上外云間中學(xué)2026年教師招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 2026年淄博一四八醫(yī)院招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 2026年招賢納士江口縣第四幼兒園招聘?jìng)淇碱}庫(kù)附答案詳解
- 畜禽屠宰加工工國(guó)家職業(yè)標(biāo)準(zhǔn)(征求意見(jiàn)稿)
- 電力通信安全培訓(xùn)資料課件
- 上海國(guó)安面試題庫(kù)及答案
- 2025年財(cái)務(wù)共享服務(wù)模式白皮書(shū)方案
- 建筑工程交通導(dǎo)改與組織方案
- 2025版新春晚會(huì)節(jié)目編排與制作合同
- 春天綠化養(yǎng)護(hù)知識(shí)培訓(xùn)
- 數(shù)據(jù)中心消防培訓(xùn)課件
- 四川評(píng)標(biāo)專(zhuān)家培訓(xùn)課件
- JJF(蒙) 064-2024 混凝土振動(dòng)臺(tái)校準(zhǔn)規(guī)范
- 地產(chǎn)文案培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論