025-52390195
15190477151
為了將電阻式觸摸屏上的觸摸點(diǎn)坐標(biāo)讀入微控制器,需要使用一個(gè)專用的觸摸屏控制器芯片,或者利用復(fù)雜的外部開(kāi)關(guān)網(wǎng)絡(luò)來(lái)連接微控制器的片上模數(shù)轉(zhuǎn)換器。本文以夏普公司帶有內(nèi)置片上ADC的LH754xx系列和LH7A404微控制器為例,詳細(xì)介紹這種用于電阻式觸摸屏的模數(shù)轉(zhuǎn)換器接口與編程特性。
LH75400/01/10/11系列和LH7A404等微控制器帶有一個(gè)內(nèi)含觸摸屏偏置電路的片上模數(shù)轉(zhuǎn)換器,它是一種逐次逼近寄存器型轉(zhuǎn)換器。這些控制器可以在觸摸屏傳感器和微控制器之間進(jìn)行直接聯(lián)系,無(wú)需CPU介入即可控制所有觸摸屏偏置電壓,并記錄全部測(cè)量結(jié)果。
其中的ADC模塊由ADC內(nèi)核、測(cè)量結(jié)果FIFO、正輸入多路復(fù)用器、負(fù)輸入多路復(fù)用器、正參考多路復(fù)用器、負(fù)參考多路復(fù)用器、測(cè)量序列發(fā)生器和偏置與控制網(wǎng)絡(luò)組成。除了LH7A404外,所有ADC模塊的I/O管腳都穿過(guò)GPI MUX,這個(gè)多路復(fù)用器可由用戶將每個(gè)管腳配置為通用數(shù)字輸入或模擬管腳。將ADC模塊I/O管腳配置為數(shù)字輸入時(shí),GPI MUX會(huì)把一個(gè)數(shù)字輸入緩沖器連接到這個(gè)管腳;而將其配置為模擬管腳時(shí),GPI MUX則把它與數(shù)字輸入緩沖器斷開(kāi),同時(shí)將緩沖器接地。在低功耗應(yīng)用中,為了盡量減少漏電流,可以將所有未使用的ADC I/O管腳都接地,或者將未使用的ADC I/O管腳編程為模擬管腳。本文假設(shè)ADC模塊中所有需要的I/O管腳都已被設(shè)置為模擬管腳。
對(duì)于LH75400/01/10/11系列器件,ADC的正輸入多路復(fù)用器可以對(duì)所有8個(gè)ADC管腳(AN0~AN4、AN6、AN8和AN9)中的任何一個(gè)進(jìn)行采樣;對(duì)于LH7A404,ADC的正輸入多路復(fù)用器可以對(duì)所有10個(gè)ADC管腳的任何一個(gè)進(jìn)行采樣。為了節(jié)省LH75400/01/10/11的管腳,制造商只引出了10個(gè)管腳中的8個(gè),因此LH75400/01/10/11系列的模擬管腳序號(hào)不是完全連續(xù)的。在所有的芯片上,負(fù)輸入多路復(fù)用器可以選擇負(fù)參考輸入或VSSA_ADC作為ADC的負(fù)輸入,正參考多路復(fù)用器可以選擇片上參考或三個(gè)外部管腳之一作為正參考,負(fù)參考多路復(fù)用器則可選擇VSSA_ADC或三個(gè)其它外部管腳作為負(fù)參考。這些多路復(fù)用器將模擬輸入連接到SAR ADC的內(nèi)核。圖1為ADC的方框圖,需要注意的是,LH7A404的11到1多路復(fù)用器還有另外兩個(gè)模擬輸入。
通過(guò)低阻模擬開(kāi)關(guān),ADC的偏置與控制網(wǎng)絡(luò)可以將模擬管腳切換到VDDA_ADC或VSSA_ADC。另外,偏置與控制網(wǎng)絡(luò)也可以將弱上拉電阻切換到AN0和AN4管腳。圖2為偏置與控制網(wǎng)絡(luò)結(jié)構(gòu)圖。啟動(dòng)測(cè)量后,測(cè)量序列發(fā)生器將控制整個(gè)過(guò)程,包括需要激活哪些模擬開(kāi)關(guān)來(lái)偏置觸摸屏、什么時(shí)候激活這些開(kāi)關(guān)、使用哪些管腳作為ADC內(nèi)核的模擬輸入、采樣間隔為多長(zhǎng)等等。測(cè)量序列發(fā)生器的功能很強(qiáng),但也比較復(fù)雜。
A2DCLK時(shí)鐘信號(hào)決定序列發(fā)生器和ADC內(nèi)核的時(shí)基,A2DCLK頻率通過(guò)電源配置寄存器進(jìn)行編程。測(cè)量序列發(fā)生器是一個(gè)狀態(tài)機(jī),它向偏置與控制網(wǎng)絡(luò)、多路復(fù)用器和模擬內(nèi)核發(fā)送信息。序列發(fā)生器發(fā)送的信息稱為控制字(control word),長(zhǎng)度為32位。由于ADC的片內(nèi)數(shù)據(jù)總線只有16位,所以控制字被分開(kāi)保存在控制高位字寄存器和控制低位字寄存器中。要查看序列發(fā)生器發(fā)送給ADC其余部分信號(hào)的當(dāng)前狀態(tài),可以讓程序讀取控制高位字寄存器和控制低位字寄存器。控制高位字寄存器中包含了正負(fù)輸入多路復(fù)用器、正參考多路復(fù)用器和測(cè)量建立時(shí)間的當(dāng)前設(shè)置,控制低位字寄存器中則含有負(fù)參考多路復(fù)用器和偏置與控制網(wǎng)絡(luò)的控制位當(dāng)前狀態(tài)。
測(cè)量序列發(fā)生器狀態(tài)機(jī)在開(kāi)始時(shí)為IDLE(空閑)狀態(tài)。在空閑狀態(tài)期間,控制高位字包含了空閑高字節(jié)值,控制低字包含空閑低字節(jié)值,這意味著空閑低字節(jié)設(shè)置的是偏置與控制網(wǎng)絡(luò)中的開(kāi)關(guān)狀態(tài)。當(dāng)觸摸屏被觸摸而觸發(fā)測(cè)量時(shí),狀態(tài)機(jī)將等待空閑高位字寄存器中空閑時(shí)間字段所設(shè)定的A2DCLK周期數(shù)。之后,如果ADC仍然檢測(cè)到觸摸屏上有觸摸動(dòng)作,序列發(fā)生器將前進(jìn)到GET_DATA狀態(tài)。在GET_DATA狀態(tài),測(cè)量序列發(fā)生器從控制區(qū)數(shù)組中取出控制字,控制區(qū)是一個(gè)包含16個(gè)控制高位字?jǐn)?shù)值和16個(gè)控制低位字?jǐn)?shù)值的數(shù)組。序列發(fā)生器使用索引號(hào)0到15來(lái)訪問(wèn)控制區(qū)。電源配置寄存器的NOC字段設(shè)定為序列發(fā)生器將要從控制區(qū)讀取的總次數(shù)減1。
序列發(fā)生器進(jìn)入GET_DATA狀態(tài)時(shí),控制區(qū)索引號(hào)為0。序列發(fā)生器從控制區(qū)高位字加載控制高位字,并從控制區(qū)低位字加載控制低位字,控制低位字中的新值使偏置與控制網(wǎng)絡(luò)中的開(kāi)關(guān)切換到編程設(shè)定的狀態(tài)。新的控制字加載完成之后,序列發(fā)生器進(jìn)入WAIT_CONV狀態(tài)。在WAIT_CONV狀態(tài),序列發(fā)生器將等待控制區(qū)高位字建立時(shí)間字段中編程設(shè)定的A2DCLK周期數(shù),這給觸摸屏的電壓、偏置和控制開(kāi)關(guān)設(shè)置提供了穩(wěn)定時(shí)間。隨后,ADC內(nèi)核執(zhí)行一次測(cè)量操作,測(cè)量結(jié)束時(shí),ADC內(nèi)核發(fā)出信號(hào),示意測(cè)量序列發(fā)生器讀取轉(zhuǎn)換結(jié)果。測(cè)量序列發(fā)生器前進(jìn)到END_OF_SEQ狀態(tài),讀取轉(zhuǎn)換結(jié)果,保存到結(jié)果FIFO,并將控制區(qū)索引號(hào)加1。圖2:偏置與控制網(wǎng)絡(luò)結(jié)構(gòu)圖。
這個(gè)以讀出新控制字為開(kāi)始、保存測(cè)量結(jié)果為結(jié)束的過(guò)程重復(fù)執(zhí)行,直到序列發(fā)生器進(jìn)行了電源配置寄存器NOC字段所設(shè)定的測(cè)量次數(shù)為止。當(dāng)序列所有測(cè)量完成之后,序列發(fā)生器將設(shè)置中斷狀態(tài)寄存器中的EOSINTR_UM位。測(cè)量序列發(fā)生器可以編程為檢測(cè)到觸摸屏被觸摸時(shí)觸發(fā),在這種模式下,只要屏幕上檢測(cè)到觸摸動(dòng)作,序列發(fā)生器便會(huì)自動(dòng)重新觸發(fā)。測(cè)量序列發(fā)生器也可以設(shè)定為由軟件命令觸發(fā)或連續(xù)觸發(fā)。
基本ADC設(shè)置
無(wú)論要測(cè)量哪一種類型的觸摸屏,都應(yīng)當(dāng)配置測(cè)量序列發(fā)生器執(zhí)行下列步驟:
1. 執(zhí)行觸摸檢測(cè);
2. 測(cè)量X;
3. 測(cè)量Y;
4. 繼續(xù)進(jìn)行觸摸檢測(cè)。
其中有一個(gè)假設(shè),即如果測(cè)量序列開(kāi)始時(shí)你正摸著屏幕,測(cè)量序列結(jié)束時(shí)還在觸摸,那它就認(rèn)為測(cè)量X和Y的整個(gè)期間都在觸摸屏幕。
為了測(cè)量是否觸摸了屏幕,需要對(duì)偏置與控制網(wǎng)絡(luò)進(jìn)行編程,將一個(gè)弱上拉電阻連接到AN0管腳,并將一個(gè)強(qiáng)下拉電阻連接到AN4管腳(對(duì)五線和七線觸摸屏)或AN3管腳(對(duì)四線和八線觸摸屏),將參考輸入多路復(fù)用器設(shè)為使用片上的2.0V參考。
將正輸入多路復(fù)用器編程為測(cè)量AN0,負(fù)輸入與負(fù)參考相同。例如,如果選擇的測(cè)量閾值為三分之一滿量程,那么當(dāng)AN0上的電壓為2.0V÷3=0.66V時(shí)將會(huì)檢測(cè)到一次觸摸。在3.3V范圍內(nèi),它有足夠的噪聲余量。上拉電阻將觸摸屏上拉到VDDA_ADC的過(guò)程可能非常緩慢,解決的方法是,在測(cè)量觸摸狀態(tài)之前,用偏置與控制網(wǎng)絡(luò)中的強(qiáng)上拉位2對(duì)AN0管腳預(yù)先充電。此時(shí)如果觸摸面板受到觸摸,測(cè)量序列發(fā)生器在下一步驟中切換進(jìn)來(lái)的強(qiáng)下拉將很快把AN0拉下來(lái);如果沒(méi)有觸摸面板,那么在觸摸檢測(cè)測(cè)量期間,弱上拉將把AN0管腳保持在VDDA_ADC。