紀成,王金晨,王菲
(山東大學 控制科學與工程學院,濟南 250061)
紀成(碩士研究生),主要研究方向為控制系統及嵌入式系統開發;王金晨(碩士研究生),主要研究方向為機器視覺及嵌入式系統;王菲(碩士研究生),主要研究方向為無線傳感器網絡及嵌入式系統軟件開發。
隨著現代電子產品的日益更新和智能化發展,人機交互接口(HMI)得到越來越多的關注和應用,豐富了人們的體驗,而作為其中重要的一部分,觸控感應技術也在快速發展。觸控技術目前來講主要分為電阻式觸控和電容式觸控,作為近年來飛速發展的新技術,電容式觸控感應技術以其無機械損耗、壽命長、靈敏度高、節省空間和觸摸動作豐富等優點得到越來越廣泛的應用,與此同時,半導體廠商也不斷地推出相應技術的IC以簡化硬件設計人員的開發[1]。汽車電子行業領先的飛思卡爾半導體廠商就在其新近推出的基于ARM Cortex-M4核的32位Kinetis系列MCU架構之中嵌入了高性能的電容式觸摸感應接口(Touch Sensing Interface,TSI)模塊,增強了電容觸摸感應的穩定性和魯棒性,同時也極大地簡化了設計人員的開發過程。本文中設計的系統就是利用Kinetis系列中的K60 MCU作為控制核心,完成電容觸摸鍵盤的軟硬件設計。
目前基于IC設計的電容式觸摸感應技術主要有兩種[2]:一種是把電容值的變化轉換成電壓的變化,再通過內部特殊的電容模數轉換器經過A/D采樣算出電容量;另一種是把電容值變化轉換成內部計數器計數值的變化,在外部電極上產生三角波充放電電壓信號,通過對該三角波電壓信號的周期進行測量計數來反映外部電極的電容量變化。Silicon Labs推出的電容觸摸系列MCU采用的是前一種方法,而飛思卡爾的Kinetis K60內部集成的TSI模塊采用的則是后面一種方法。
TSI模塊通過內部的恒流源對外部電極進行充放電,形成三角波電壓信號,其內部硬件電路設計如圖1所示。三角波電壓信號的周期隨著外部電容的變化而變化,而手指作為虛擬地靠近電極時會造成電容容量的增加,使三角波電壓信號周期變長,如圖2所示。與此同時,TSI模塊內部還有一個固定容量的電容構成的振蕩器,以其產生的參考時鐘節拍對外部電極產生的三角波電壓信號的周期進行計數,外部電極電容量的變化引起三角波電壓信號周期的變化進而引起測量計數值的變化,再通過內部讀取相應的計數器值即可算出電容量變化。根據TSI內部運行機制,當電容值超出設定的觸發閾值時,TSI觸發標志位激活相應的中斷請求,實現電容觸摸感應事件的響應[3]。

圖1 TSI模塊內部三角波電壓信號電路

圖2 內部參考時鐘節拍計數外部三角波電壓周期波形
由于采用了帶有專用電容觸控功能即TSI模塊的MCU,因此簡化了硬件電路的設計。一方面減少了開發成本,另一方面也降低了硬件電路的復雜性,增強了系統的穩定性和魯棒性。本系統采用飛思卡爾最新推出的基于Cortex-M4核的 Kinetis系列 MCU,具體型號為MK60DX256VLQ100,支持DSP擴展指令集,內部資源豐富,除了具有TSI模塊外還具有一個USB OTG模塊、一個SDHC模塊和一個以太網模塊等資源,便于本鍵盤系統以后的擴展應用,其中TSI模塊主要特點為[4]:
◆支持16個電容式觸摸感應通道,并且每個通道都配有獨立的計數結果寄存器;
◆擁有可配置的上下閾值寄存器,自動檢測并比較外部電極的電容值變化;
◆支持不同工作模式下配置掃描周期;
◆支持在MCU低功耗休眠模式下的電容觸摸喚醒功能;
◆支持溫度和工作電壓自動補償;
◆擁有可編程外部電極和內部電容振蕩器。

圖3 電容式觸控接口電路
外接電極與MCU的基本連接方式如圖3所示,內置TSI模塊接口極大地簡化了硬件設計,只需簡單地把外部電極通過一個限流電阻串聯到相應的TSI模塊通道上即可。限流電阻主要是為了防止電極與MCU之間的充放電電流過大而損害MCU,限流電阻的大小根據實際情況而定。根據實際需要和布線方便,這里選擇了4個電極分別連接到 MCU TSI模塊的0通道、6通道、7通道和8通道。
本系統設計的電容式觸摸鍵盤PCB布局如圖4所示,利用帶有絕緣漆的覆銅板作為電極板,并采用4塊三角形狀覆銅拼接組合成方形觸摸鍵盤,同時該4塊三角覆銅分別引出相應的接口至TSI模塊的4個通道。該設計充分利用了電容式觸摸感應技術的特點,設計靈活,僅采用4個TSI模塊通道實現了9個觸摸按鍵的功能,即每一個按鍵都是由不同的電極板組合構成,實現9種按鍵識別功能,節省了空間,降低了設計復雜程度,具體組合分配如表1所列。

圖4 電容式觸摸鍵盤PCB布局

表1 觸摸按鍵的通道組合分配
由該分配表可知4個通道實現了9種不同的組合,通過軟件算法上相應的處理就可以得到9種按鍵響應。另外需要注意的是,在實際PCB設計時,4塊電極板到TSI模塊相應引腳的走線要盡量短,以減少不必要的電容效應,同時也降低環境噪聲的影響[5]。
K60MCU的TSI模塊不僅簡化了電容式觸摸鍵盤硬件上的設計,而且在軟件設計方面,通過簡單的配置相關寄存器、編寫相應的校準程序和中斷服務程序即可驅動電容觸摸功能,極大地簡化了軟件設計流程。本系統軟件設計采用中斷方式,TSI模塊自動進行周期性掃描,只有觸摸事件發生時才觸發中斷進行響應,減少CPU負擔。具體的TSI模塊內部編程框圖如圖5所示。其中,每個功能模塊都是由相關寄存器中相應的控制位控制的[6]。

圖5 TSI模塊內部編程框圖
對TSI模塊的初始化主要是根據實際硬件設計對其相關寄存器進行操作,在初始化階段涉及到的相關寄存器包括通用控制與狀態寄存器(TSI0_GENCS)、掃描控制寄存器(TSI0_SCANS)、通道使能寄存器(TSI0_PEN),另外還涉及到K60MCU內部時鐘和引腳配置寄存器等,具體初始化流程如圖6所示。
TSI模塊初始化之后,要實現電容式感應觸摸的檢測,還需要對TSI模塊進行電容值的校準,采樣正常無手指觸摸情況下的電容量即內部計數器的計數值,將其與自定義的死區值進行相加和相減之后分別存入閾值寄存器的高部分和低部分,以此作為標準檢測電極電容變化區間,當電容量的變化處于死區區間內時,不會觸發越界中斷,當電容量超出閾值寄存器的范圍時(包括低于閾值寄存器的低部分或者高于閾值寄存器的高部分)自動觸發越界中斷,具體校準流程如圖7所示。
由圖5所示TSI模塊的編程框圖可知,TSI模塊有多種中斷方式,包括錯誤中斷、超時中斷、掃描結束中斷和越界中斷,在K60MCU內部中斷機制里,它們共享99號中斷向量。本系統設計采用越界中斷,即正常情況下不占用CPU資源,只有當手指觸摸造成電容量超出死區區間時才觸發越界中斷,進入相應的中斷服務函數進行電容式觸摸按鍵響應處理。根據表1所示通道組合識別出具體觸摸按鍵號,實現觸摸鍵盤的輸入,具體中斷服務流程如圖8所示。

圖6 TSI初始化流程

圖7 TSI模塊校準流程

圖8 TSI模塊中斷服務流程
另外,針對一些更加復雜的電容式觸摸動作,如旋轉、滑動等應用,飛思卡爾公司免費提供了強大的觸摸感應軟件庫(即TSS庫)和開發生態系統的支持,可以直接應用在飛思卡爾Kinetis平臺上,不僅縮短了工程開發周期而且也增加了系統的穩定性。
本系統采用帶有電容式觸摸接口TSI模塊的Cortex-M4核的Kinetis平臺MCU,利用電容式觸摸感應原理設計了3×3電容觸摸鍵盤。相比于傳統的機械式按鍵,電容式觸摸按鍵具有壽命長、占用空間小、高靈敏度和靈活性好等優點,應用前景十分廣闊,尤其是在飛速發展的消費電子領域,大有取代機械式按鍵的勢頭。
[1]周志永,胡建人.低成本電容式觸摸按鍵設計[J].機電工程,2011,28(3):366-368.
[2]李亞峰.用CY8C21434實現嵌入式系統觸摸鍵模塊[J].單片機與嵌入式系統應用,2006(9):41-43.
[3]王宜懷,吳瑾,蔣銀珍.嵌入式系統原理與實踐:ARM Cortex-M4Kinetis微控制器[M].北京:電子工業出版社,2012.
[4]Freescale.Kinetis Peripheral Module Quick Reference[OL].[2010-11].http://www.freescale.com.
[5]陳林.輕松實現電容式觸摸感應按鍵開關設計[J].電子產品世界,2009,16(10):74.
[6]Freescale.K60Sub-Family Reference Manual[OL].[2012-04].http://www.freescale.com.