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