突破中斷延遲限制 電容式觸控加速取代機(jī)械按鍵
大多數(shù)的設(shè)計(jì)只須經(jīng)過微幅修改,就能以創(chuàng)新酷炫的電容式觸控感測(cè)技術(shù),取代傳統(tǒng)機(jī)械式按鍵。由于電容式觸控控制器是利用中斷來模擬機(jī)械式鍵盤的掃描介面,因此開發(fā)人員應(yīng)選用中斷延遲時(shí)間短的觸控控制器,以免影響產(chǎn)品效能。
機(jī)械式按鍵與薄膜開關(guān),已漸被創(chuàng)新酷炫的電容式觸控感測(cè)技術(shù)所取代,后者使用容易且更強(qiáng)固耐用,大多數(shù)設(shè)計(jì)只須經(jīng)過微幅修改,就能加入電容式觸控按鍵,研發(fā)業(yè)者善加運(yùn)用即可派上用場(chǎng)。
現(xiàn)今市面上有許多簡(jiǎn)單且容易使用的電容式觸控設(shè)計(jì),可直接利用觸控感測(cè)器來取代按鍵。感測(cè)器偵測(cè)到手指存在時(shí),就會(huì)把輸出接腳切換至高或低位狀態(tài),以模擬機(jī)械式按鈕的啟動(dòng)與關(guān)閉狀態(tài)。然而此種取代方案具有限制,許多特殊種類的機(jī)械式使用者介面,無法在輸入和輸出模式1:1下運(yùn)作,當(dāng)中包括機(jī)械式鍵盤;機(jī)械式鍵盤介面雖然結(jié)構(gòu)簡(jiǎn)單,但要取代的不光只是一個(gè)個(gè)按鈕。本文探討各種利用電容式觸控感測(cè)器來取代機(jī)械式鍵盤的方法,使電容式觸控設(shè)計(jì)的取代過程更有效率。
機(jī)械式鍵盤底層基礎(chǔ)結(jié)構(gòu)
傳統(tǒng)機(jī)械式鍵盤把許多按鈕排成數(shù)行與數(shù)列的方陣,系統(tǒng)藉由驅(qū)動(dòng)列數(shù)或行數(shù)(掃描線),以及檢查其他線路(讀取線)來偵測(cè)任何持續(xù)動(dòng)作(按壓),即可發(fā)現(xiàn)按壓的行為,這種設(shè)計(jì)概念可分成兩類,其一為輪詢式(Polling-Based),其次則是中斷式(Interrupt-Based)。
輪詢式機(jī)械式鍵盤
獨(dú)立式按鍵掃描控制器,通常會(huì)使用持續(xù)輪詢掃描線,并檢查讀取線是否有任何持續(xù)按壓動(dòng)作。讀取線通常會(huì)透過一個(gè)暫存器,拉升至電源(Vcc)或邏輯狀態(tài)「1」,系統(tǒng)會(huì)一次輪詢一條掃描線,輪詢后將線路切換至「0」?fàn)顟B(tài),其他線路則維持為「1」的邏輯狀態(tài)。每當(dāng)一個(gè)按鈕被按壓時(shí),掃描至讀取線就會(huì)短路,掃描線的「0」會(huì)傳送到讀取線,代表一個(gè)按鈕按壓,如圖1所示。當(dāng)偵測(cè)到按壓時(shí),控制器會(huì)透過I2C或串列周邊介面(SPI)等通訊介面,把事件通報(bào)給主控端(Host),而不是讓主控端自己執(zhí)行按鍵掃描作業(yè),因此對(duì)于單晶片系統(tǒng)而言,可說是缺乏效率且又不實(shí)用。
圖1 機(jī)械式鍵盤工作模式
中斷式機(jī)械式鍵盤
這種方法通常用在主控端和Master自己掃描按鍵的系統(tǒng),所有掃描線都有接地,而讀取線則拉升至Vcc。當(dāng)按鈕被按壓后,掃描線的「0」就會(huì)透過實(shí)體短路(按鍵按壓)傳送到讀取線。讀取線在讀到「0」時(shí),會(huì)觸發(fā)一個(gè)中斷,主控端此時(shí)會(huì)輪詢掃描線,找出被按壓的按鍵,主控端不必持續(xù)對(duì)掃描線進(jìn)行輪詢,因此能改善中央處理器(CPU)的使用頻寬。
電容感測(cè)器取代機(jī)械鍵盤
如前述,系統(tǒng)會(huì)輪流查詢掃描線,找出被按壓的按鈕,無論是持續(xù)查詢或發(fā)生中斷時(shí)才查詢,這構(gòu)成取代方法基礎(chǔ)。多數(shù)電容式觸控控制器都屬于微控制器元件,不只有電容感測(cè)功能,更負(fù)責(zé)執(zhí)行取代和模擬的工作。
一個(gè)4×4矩陣鍵盤的典型波形如圖2所示,在任何時(shí)刻都有掃描線逐一被推至GND接地端,數(shù)量不會(huì)超過處于邏輯「0」?fàn)顟B(tài)的掃描線。同時(shí)有多條掃描線處于邏輯「0」?fàn)顟B(tài),會(huì)減低偵測(cè)出被按壓按鈕的精確度。

圖2 4×4矩陣鍵盤的典型掃描線波形
電容感測(cè)控制器必須扮演一個(gè)機(jī)械式鍵盤角色,并讓主控端認(rèn)為它就是機(jī)械鍵盤,主控端的輸出線(掃描線)必須變?yōu)檩斎肴?,而主控端的輸入線(讀取線)則會(huì)成為電容感測(cè)控制器的輸出端。根據(jù)掃描線狀態(tài)及被觸碰的按鈕的狀態(tài),系統(tǒng)須視情況由控制器來更新讀取線。
以一個(gè)有十二個(gè)按鈕(圖3)的產(chǎn)品為例,按鈕必須排成3×4的矩陣,其中3是掃描線數(shù)量,4則是讀取線的數(shù)量,操作步驟首先是先啟動(dòng)掃描線上的中斷,再把中斷設(shè)定成邊緣觸發(fā)(在兩端)。在三條掃描線中,啟動(dòng)一個(gè)「3」位元組陣列,由于需要四條讀取線(每條分配一個(gè)位元),因此選擇BYTE位元組;若是超過八條讀取線,則使用WORD字元組。任何利用電容感測(cè)演算法的手指觸控系統(tǒng),須讀取十二個(gè)按鈕,并利用相對(duì)應(yīng)的數(shù)值來更新位元組陣列;此時(shí)須注意的是,讀取線應(yīng)是Active Low狀態(tài),因?yàn)槊慨?dāng)按鈕被按壓,掃描線上的一個(gè)「0」就會(huì)傳送至讀取線,在預(yù)設(shè)狀態(tài)下,讀取線會(huì)拉升至Vcc。所有掃描線中斷都無須啟動(dòng),只有當(dāng)掃描線上通報(bào)有一個(gè)按鈕按壓事件,中斷才會(huì)啟動(dòng),不然應(yīng)處于關(guān)閉狀態(tài),這樣的設(shè)計(jì)有助于在電容式觸控控制器中降低處理器的負(fù)荷。在掃描線中斷時(shí),讀取這些線并視狀況更新讀取線(圖3)。
圖3 鍵盤模擬實(shí)作
上述的方法能協(xié)助取代輪詢式鍵盤掃描,同樣的邏輯經(jīng)過些許調(diào)整就能取代中斷式鍵盤;當(dāng)按下按鈕時(shí),儲(chǔ)存在讀取線的所有數(shù)值都會(huì)經(jīng)過AND邏輯處理,并透過讀取線傳送到主控端,當(dāng)主控端感測(cè)到訊號(hào)并開始掃描時(shí),就會(huì)接著進(jìn)行上述的后續(xù)步驟。
電容式觸控取代方案的限制
過程中會(huì)面臨到的限制是,電容式觸控控制器利用中斷來模擬機(jī)械式鍵盤的掃描介面,因此會(huì)產(chǎn)生額外的延遲,中斷延遲加上處理中斷內(nèi)的讀取線。盡管延遲時(shí)間很短,實(shí)體的短路僅發(fā)生一瞬間(通常僅數(shù)奈秒),對(duì)實(shí)體按鈕而言仍為一項(xiàng)限制;在取代系統(tǒng)中,延遲可能長(zhǎng)達(dá)數(shù)微秒,然而實(shí)際時(shí)間端視選用的控制器而定。
值得注意的是,主控端不必費(fèi)心去消除按鈕的開關(guān)彈跳(Debounce),因?yàn)橥高^先修改主控端的韌體,觸控控制器可在報(bào)告按鈕為ON狀態(tài)之前,就完成這項(xiàng)作業(yè),此功能也能節(jié)省主控端的處理時(shí)間(圖4)。

圖4 利用掃描線分析方法,在掃描線連結(jié)介面下可達(dá)到的最小波形。