突破中斷延遲限制 電容式觸控加速取代機械按鍵
大多數的設計只須經過微幅修改,就能以創新酷炫的電容式觸控感測技術,取代傳統機械式按鍵。由于電容式觸控控制器是利用中斷來模擬機械式鍵盤的掃描介面,因此開發人員應選用中斷延遲時間短的觸控控制器,以免影響產品效能。
機械式按鍵與薄膜開關,已漸被創新酷炫的電容式觸控感測技術所取代,后者使用容易且更強固耐用,大多數設計只須經過微幅修改,就能加入電容式觸控按鍵,研發業者善加運用即可派上用場。
現今市面上有許多簡單且容易使用的電容式觸控設計,可直接利用觸控感測器來取代按鍵。感測器偵測到手指存在時,就會把輸出接腳切換至高或低位狀態,以模擬機械式按鈕的啟動與關閉狀態。然而此種取代方案具有限制,許多特殊種類的機械式使用者介面,無法在輸入和輸出模式1:1下運作,當中包括機械式鍵盤;機械式鍵盤介面雖然結構簡單,但要取代的不光只是一個個按鈕。本文探討各種利用電容式觸控感測器來取代機械式鍵盤的方法,使電容式觸控設計的取代過程更有效率。
機械式鍵盤底層基礎結構
傳統機械式鍵盤把許多按鈕排成數行與數列的方陣,系統藉由驅動列數或行數(掃描線),以及檢查其他線路(讀取線)來偵測任何持續動作(按壓),即可發現按壓的行為,這種設計概念可分成兩類,其一為輪詢式(Polling-Based),其次則是中斷式(Interrupt-Based)。
輪詢式機械式鍵盤
獨立式按鍵掃描控制器,通常會使用持續輪詢掃描線,并檢查讀取線是否有任何持續按壓動作。讀取線通常會透過一個暫存器,拉升至電源(Vcc)或邏輯狀態「1」,系統會一次輪詢一條掃描線,輪詢后將線路切換至「0」狀態,其他線路則維持為「1」的邏輯狀態。每當一個按鈕被按壓時,掃描至讀取線就會短路,掃描線的「0」會傳送到讀取線,代表一個按鈕按壓,如圖1所示。當偵測到按壓時,控制器會透過I2C或串列周邊介面(SPI)等通訊介面,把事件通報給主控端(Host),而不是讓主控端自己執行按鍵掃描作業,因此對于單晶片系統而言,可說是缺乏效率且又不實用。
圖1 機械式鍵盤工作模式
中斷式機械式鍵盤
這種方法通常用在主控端和Master自己掃描按鍵的系統,所有掃描線都有接地,而讀取線則拉升至Vcc。當按鈕被按壓后,掃描線的「0」就會透過實體短路(按鍵按壓)傳送到讀取線。讀取線在讀到「0」時,會觸發一個中斷,主控端此時會輪詢掃描線,找出被按壓的按鍵,主控端不必持續對掃描線進行輪詢,因此能改善中央處理器(CPU)的使用頻寬。
電容感測器取代機械鍵盤
如前述,系統會輪流查詢掃描線,找出被按壓的按鈕,無論是持續查詢或發生中斷時才查詢,這構成取代方法基礎。多數電容式觸控控制器都屬于微控制器元件,不只有電容感測功能,更負責執行取代和模擬的工作。
一個4×4矩陣鍵盤的典型波形如圖2所示,在任何時刻都有掃描線逐一被推至GND接地端,數量不會超過處于邏輯「0」狀態的掃描線。同時有多條掃描線處于邏輯「0」狀態,會減低偵測出被按壓按鈕的精確度。
圖2 4×4矩陣鍵盤的典型掃描線波形
電容感測控制器必須扮演一個機械式鍵盤角色,并讓主控端認為它就是機械鍵盤,主控端的輸出線(掃描線)必須變為輸入瑞,而主控端的輸入線(讀取線)則會成為電容感測控制器的輸出端。根據掃描線狀態及被觸碰的按鈕的狀態,系統須視情況由控制器來更新讀取線。
以一個有十二個按鈕(圖3)的產品為例,按鈕必須排成3×4的矩陣,其中3是掃描線數量,4則是讀取線的數量,操作步驟首先是先啟動掃描線上的中斷,再把中斷設定成邊緣觸發(在兩端)。在三條掃描線中,啟動一個「3」位元組陣列,由于需要四條讀取線(每條分配一個位元),因此選擇BYTE位元組;若是超過八條讀取線,則使用WORD字元組。任何利用電容感測演算法的手指觸控系統,須讀取十二個按鈕,并利用相對應的數值來更新位元組陣列;此時須注意的是,讀取線應是Active Low狀態,因為每當按鈕被按壓,掃描線上的一個「0」就會傳送至讀取線,在預設狀態下,讀取線會拉升至Vcc。所有掃描線中斷都無須啟動,只有當掃描線上通報有一個按鈕按壓事件,中斷才會啟動,不然應處于關閉狀態,這樣的設計有助于在電容式觸控控制器中降低處理器的負荷。在掃描線中斷時,讀取這些線并視狀況更新讀取線(圖3)。
圖3 鍵盤模擬實作
上述的方法能協助取代輪詢式鍵盤掃描,同樣的邏輯經過些許調整就能取代中斷式鍵盤;當按下按鈕時,儲存在讀取線的所有數值都會經過AND邏輯處理,并透過讀取線傳送到主控端,當主控端感測到訊號并開始掃描時,就會接著進行上述的后續步驟。
電容式觸控取代方案的限制
過程中會面臨到的限制是,電容式觸控控制器利用中斷來模擬機械式鍵盤的掃描介面,因此會產生額外的延遲,中斷延遲加上處理中斷內的讀取線。盡管延遲時間很短,實體的短路僅發生一瞬間(通常僅數奈秒),對實體按鈕而言仍為一項限制;在取代系統中,延遲可能長達數微秒,然而實際時間端視選用的控制器而定。
值得注意的是,主控端不必費心去消除按鈕的開關彈跳(Debounce),因為透過先修改主控端的韌體,觸控控制器可在報告按鈕為ON狀態之前,就完成這項作業,此功能也能節省主控端的處理時間(圖4)。
圖4 利用掃描線分析方法,在掃描線連結介面下可達到的最小波形。