紀(jì)成,王金晨,王菲
(山東大學(xué) 控制科學(xué)與工程學(xué)院,濟(jì)南 250061)
紀(jì)成(碩士研究生),主要研究方向?yàn)榭刂葡到y(tǒng)及嵌入式系統(tǒng)開發(fā);王金晨(碩士研究生),主要研究方向?yàn)闄C(jī)器視覺及嵌入式系統(tǒng);王菲(碩士研究生),主要研究方向?yàn)闊o線傳感器網(wǎng)絡(luò)及嵌入式系統(tǒng)軟件開發(fā)。
隨著現(xiàn)代電子產(chǎn)品的日益更新和智能化發(fā)展,人機(jī)交互接口(HMI)得到越來越多的關(guān)注和應(yīng)用,豐富了人們的體驗(yàn),而作為其中重要的一部分,觸控感應(yīng)技術(shù)也在快速發(fā)展。觸控技術(shù)目前來講主要分為電阻式觸控和電容式觸控,作為近年來飛速發(fā)展的新技術(shù),電容式觸控感應(yīng)技術(shù)以其無機(jī)械損耗、壽命長(zhǎng)、靈敏度高、節(jié)省空間和觸摸動(dòng)作豐富等優(yōu)點(diǎn)得到越來越廣泛的應(yīng)用,與此同時(shí),半導(dǎo)體廠商也不斷地推出相應(yīng)技術(shù)的IC以簡(jiǎn)化硬件設(shè)計(jì)人員的開發(fā)[1]。汽車電子行業(yè)領(lǐng)先的飛思卡爾半導(dǎo)體廠商就在其新近推出的基于ARM Cortex-M4核的32位Kinetis系列MCU架構(gòu)之中嵌入了高性能的電容式觸摸感應(yīng)接口(Touch Sensing Interface,TSI)模塊,增強(qiáng)了電容觸摸感應(yīng)的穩(wěn)定性和魯棒性,同時(shí)也極大地簡(jiǎn)化了設(shè)計(jì)人員的開發(fā)過程。本文中設(shè)計(jì)的系統(tǒng)就是利用Kinetis系列中的K60 MCU作為控制核心,完成電容觸摸鍵盤的軟硬件設(shè)計(jì)。
目前基于IC設(shè)計(jì)的電容式觸摸感應(yīng)技術(shù)主要有兩種[2]:一種是把電容值的變化轉(zhuǎn)換成電壓的變化,再通過內(nèi)部特殊的電容模數(shù)轉(zhuǎn)換器經(jīng)過A/D采樣算出電容量;另一種是把電容值變化轉(zhuǎn)換成內(nèi)部計(jì)數(shù)器計(jì)數(shù)值的變化,在外部電極上產(chǎn)生三角波充放電電壓信號(hào),通過對(duì)該三角波電壓信號(hào)的周期進(jìn)行測(cè)量計(jì)數(shù)來反映外部電極的電容量變化。Silicon Labs推出的電容觸摸系列MCU采用的是前一種方法,而飛思卡爾的Kinetis K60內(nèi)部集成的TSI模塊采用的則是后面一種方法。
TSI模塊通過內(nèi)部的恒流源對(duì)外部電極進(jìn)行充放電,形成三角波電壓信號(hào),其內(nèi)部硬件電路設(shè)計(jì)如圖1所示。三角波電壓信號(hào)的周期隨著外部電容的變化而變化,而手指作為虛擬地靠近電極時(shí)會(huì)造成電容容量的增加,使三角波電壓信號(hào)周期變長(zhǎng),如圖2所示。與此同時(shí),TSI模塊內(nèi)部還有一個(gè)固定容量的電容構(gòu)成的振蕩器,以其產(chǎn)生的參考時(shí)鐘節(jié)拍對(duì)外部電極產(chǎn)生的三角波電壓信號(hào)的周期進(jìn)行計(jì)數(shù),外部電極電容量的變化引起三角波電壓信號(hào)周期的變化進(jìn)而引起測(cè)量計(jì)數(shù)值的變化,再通過內(nèi)部讀取相應(yīng)的計(jì)數(shù)器值即可算出電容量變化。根據(jù)TSI內(nèi)部運(yùn)行機(jī)制,當(dāng)電容值超出設(shè)定的觸發(fā)閾值時(shí),TSI觸發(fā)標(biāo)志位激活相應(yīng)的中斷請(qǐng)求,實(shí)現(xiàn)電容觸摸感應(yīng)事件的響應(yīng)[3]。
圖1 TSI模塊內(nèi)部三角波電壓信號(hào)電路
圖2 內(nèi)部參考時(shí)鐘節(jié)拍計(jì)數(shù)外部三角波電壓周期波形
由于采用了帶有專用電容觸控功能即TSI模塊的MCU,因此簡(jiǎn)化了硬件電路的設(shè)計(jì)。一方面減少了開發(fā)成本,另一方面也降低了硬件電路的復(fù)雜性,增強(qiáng)了系統(tǒng)的穩(wěn)定性和魯棒性。本系統(tǒng)采用飛思卡爾最新推出的基于Cortex-M4核的 Kinetis系列 MCU,具體型號(hào)為MK60DX256VLQ100,支持DSP擴(kuò)展指令集,內(nèi)部資源豐富,除了具有TSI模塊外還具有一個(gè)USB OTG模塊、一個(gè)SDHC模塊和一個(gè)以太網(wǎng)模塊等資源,便于本鍵盤系統(tǒng)以后的擴(kuò)展應(yīng)用,其中TSI模塊主要特點(diǎn)為[4]:
◆支持16個(gè)電容式觸摸感應(yīng)通道,并且每個(gè)通道都配有獨(dú)立的計(jì)數(shù)結(jié)果寄存器;
◆擁有可配置的上下閾值寄存器,自動(dòng)檢測(cè)并比較外部電極的電容值變化;
◆支持不同工作模式下配置掃描周期;
◆支持在MCU低功耗休眠模式下的電容觸摸喚醒功能;
◆支持溫度和工作電壓自動(dòng)補(bǔ)償;
◆擁有可編程外部電極和內(nèi)部電容振蕩器。
圖3 電容式觸控接口電路
外接電極與MCU的基本連接方式如圖3所示,內(nèi)置TSI模塊接口極大地簡(jiǎn)化了硬件設(shè)計(jì),只需簡(jiǎn)單地把外部電極通過一個(gè)限流電阻串聯(lián)到相應(yīng)的TSI模塊通道上即可。限流電阻主要是為了防止電極與MCU之間的充放電電流過大而損害MCU,限流電阻的大小根據(jù)實(shí)際情況而定。根據(jù)實(shí)際需要和布線方便,這里選擇了4個(gè)電極分別連接到 MCU TSI模塊的0通道、6通道、7通道和8通道。
本系統(tǒng)設(shè)計(jì)的電容式觸摸鍵盤PCB布局如圖4所示,利用帶有絕緣漆的覆銅板作為電極板,并采用4塊三角形狀覆銅拼接組合成方形觸摸鍵盤,同時(shí)該4塊三角覆銅分別引出相應(yīng)的接口至TSI模塊的4個(gè)通道。該設(shè)計(jì)充分利用了電容式觸摸感應(yīng)技術(shù)的特點(diǎn),設(shè)計(jì)靈活,僅采用4個(gè)TSI模塊通道實(shí)現(xiàn)了9個(gè)觸摸按鍵的功能,即每一個(gè)按鍵都是由不同的電極板組合構(gòu)成,實(shí)現(xiàn)9種按鍵識(shí)別功能,節(jié)省了空間,降低了設(shè)計(jì)復(fù)雜程度,具體組合分配如表1所列。
圖4 電容式觸摸鍵盤PCB布局
表1 觸摸按鍵的通道組合分配
由該分配表可知4個(gè)通道實(shí)現(xiàn)了9種不同的組合,通過軟件算法上相應(yīng)的處理就可以得到9種按鍵響應(yīng)。另外需要注意的是,在實(shí)際PCB設(shè)計(jì)時(shí),4塊電極板到TSI模塊相應(yīng)引腳的走線要盡量短,以減少不必要的電容效應(yīng),同時(shí)也降低環(huán)境噪聲的影響[5]。
K60MCU的TSI模塊不僅簡(jiǎn)化了電容式觸摸鍵盤硬件上的設(shè)計(jì),而且在軟件設(shè)計(jì)方面,通過簡(jiǎn)單的配置相關(guān)寄存器、編寫相應(yīng)的校準(zhǔn)程序和中斷服務(wù)程序即可驅(qū)動(dòng)電容觸摸功能,極大地簡(jiǎn)化了軟件設(shè)計(jì)流程。本系統(tǒng)軟件設(shè)計(jì)采用中斷方式,TSI模塊自動(dòng)進(jìn)行周期性掃描,只有觸摸事件發(fā)生時(shí)才觸發(fā)中斷進(jìn)行響應(yīng),減少CPU負(fù)擔(dān)。具體的TSI模塊內(nèi)部編程框圖如圖5所示。其中,每個(gè)功能模塊都是由相關(guān)寄存器中相應(yīng)的控制位控制的[6]。
圖5 TSI模塊內(nèi)部編程框圖
對(duì)TSI模塊的初始化主要是根據(jù)實(shí)際硬件設(shè)計(jì)對(duì)其相關(guān)寄存器進(jìn)行操作,在初始化階段涉及到的相關(guān)寄存器包括通用控制與狀態(tài)寄存器(TSI0_GENCS)、掃描控制寄存器(TSI0_SCANS)、通道使能寄存器(TSI0_PEN),另外還涉及到K60MCU內(nèi)部時(shí)鐘和引腳配置寄存器等,具體初始化流程如圖6所示。
TSI模塊初始化之后,要實(shí)現(xiàn)電容式感應(yīng)觸摸的檢測(cè),還需要對(duì)TSI模塊進(jìn)行電容值的校準(zhǔn),采樣正常無手指觸摸情況下的電容量即內(nèi)部計(jì)數(shù)器的計(jì)數(shù)值,將其與自定義的死區(qū)值進(jìn)行相加和相減之后分別存入閾值寄存器的高部分和低部分,以此作為標(biāo)準(zhǔn)檢測(cè)電極電容變化區(qū)間,當(dāng)電容量的變化處于死區(qū)區(qū)間內(nèi)時(shí),不會(huì)觸發(fā)越界中斷,當(dāng)電容量超出閾值寄存器的范圍時(shí)(包括低于閾值寄存器的低部分或者高于閾值寄存器的高部分)自動(dòng)觸發(fā)越界中斷,具體校準(zhǔn)流程如圖7所示。
由圖5所示TSI模塊的編程框圖可知,TSI模塊有多種中斷方式,包括錯(cuò)誤中斷、超時(shí)中斷、掃描結(jié)束中斷和越界中斷,在K60MCU內(nèi)部中斷機(jī)制里,它們共享99號(hào)中斷向量。本系統(tǒng)設(shè)計(jì)采用越界中斷,即正常情況下不占用CPU資源,只有當(dāng)手指觸摸造成電容量超出死區(qū)區(qū)間時(shí)才觸發(fā)越界中斷,進(jìn)入相應(yīng)的中斷服務(wù)函數(shù)進(jìn)行電容式觸摸按鍵響應(yīng)處理。根據(jù)表1所示通道組合識(shí)別出具體觸摸按鍵號(hào),實(shí)現(xiàn)觸摸鍵盤的輸入,具體中斷服務(wù)流程如圖8所示。
圖6 TSI初始化流程
圖7 TSI模塊校準(zhǔn)流程
圖8 TSI模塊中斷服務(wù)流程
另外,針對(duì)一些更加復(fù)雜的電容式觸摸動(dòng)作,如旋轉(zhuǎn)、滑動(dòng)等應(yīng)用,飛思卡爾公司免費(fèi)提供了強(qiáng)大的觸摸感應(yīng)軟件庫(即TSS庫)和開發(fā)生態(tài)系統(tǒng)的支持,可以直接應(yīng)用在飛思卡爾Kinetis平臺(tái)上,不僅縮短了工程開發(fā)周期而且也增加了系統(tǒng)的穩(wěn)定性。
本系統(tǒng)采用帶有電容式觸摸接口TSI模塊的Cortex-M4核的Kinetis平臺(tái)MCU,利用電容式觸摸感應(yīng)原理設(shè)計(jì)了3×3電容觸摸鍵盤。相比于傳統(tǒng)的機(jī)械式按鍵,電容式觸摸按鍵具有壽命長(zhǎng)、占用空間小、高靈敏度和靈活性好等優(yōu)點(diǎn),應(yīng)用前景十分廣闊,尤其是在飛速發(fā)展的消費(fèi)電子領(lǐng)域,大有取代機(jī)械式按鍵的勢(shì)頭。
[1]周志永,胡建人.低成本電容式觸摸按鍵設(shè)計(jì)[J].機(jī)電工程,2011,28(3):366-368.
[2]李亞峰.用CY8C21434實(shí)現(xiàn)嵌入式系統(tǒng)觸摸鍵模塊[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(9):41-43.
[3]王宜懷,吳瑾,蔣銀珍.嵌入式系統(tǒng)原理與實(shí)踐:ARM Cortex-M4Kinetis微控制器[M].北京:電子工業(yè)出版社,2012.
[4]Freescale.Kinetis Peripheral Module Quick Reference[OL].[2010-11].http://www.freescale.com.
[5]陳林.輕松實(shí)現(xiàn)電容式觸摸感應(yīng)按鍵開關(guān)設(shè)計(jì)[J].電子產(chǎn)品世界,2009,16(10):74.
[6]Freescale.K60Sub-Family Reference Manual[OL].[2012-04].http://www.freescale.com.