58.5 電阻式觸摸控制器——XPT2046
為了方便測量觸摸屏的坐標,芯片廠商設計了專門的觸摸屏控制芯片,實現觸摸點電壓測量與轉換功能。本文采用的XPT2046是一款4導線制觸摸屏控制器,內含12位分辨率
125KHz 轉換速率逐次逼近型A/D轉換器。XPT2046通過執行兩次A/D轉換便可以計算出觸摸點位置,該芯片兼容 ADS7843 觸摸芯片,其電路原理圖和引腳圖如圖8-6和表8-1、表8-2所示。
XPT2046的電源VCC的范圍為2.7V~5.5V。A/D轉換所需的參考電壓可以選擇通過VREF輸入,范圍是1V~VCC;也可以采用內部內部 2.5V參考電壓,采用內部參考電壓時VREF引腳應懸空。XPT2046除了作為觸摸驅動芯片,還可以進行電池電壓檢測、溫度測量,以及壓力測量。作為觸摸屏應用時,X+、X-、Y+、Y-分別連接電阻觸摸屏的X+、X-、Y+、Y-引腳,測量時芯片會根據指令自動切換X、Y電極的電壓,并采集觸摸點的電壓進行快速A/D轉換。
XPT2046的ADC可以配置為單端或差分模式,具體如下:
單端模式是以外部參考電壓VREF為參考,在采樣過程完成后,進行A/D轉換時可以關閉驅動開關,以降低功耗。但這種模式的缺點是精度直接受參考電壓源的精度限制,同時由于內部驅動開關存在導通電阻,導通電阻與觸摸屏電阻的分壓作用,也會帶來測量誤差。因此該模式主要應用于電池監測、溫度測量和壓力測量。
差分工作模式是以X、Y電極兩端的電壓作為差分輸入電壓,可消除由于驅動開關的導通電阻引入的坐標測量誤差。缺點是驅動開關一直接通,相對于單端輸入模式而言,功耗變高了。作為觸摸屏應用時,為了提高轉換精度,應該配置為差分模式。
68.6 XPT2046通信接口及控制命令
XPT2046允許采用SPI,SSI,Microwire等串行接口通信,本文采用IO口模擬SPI方式通信。XPT2046一次完整的數據轉換一般需要24個時鐘周期,即通信時單片機必須提供24個時鐘周期才能保證XPT2046完成一次數據轉換,數據按照高位在前、低位在后的順序傳輸,當CS為低電平時,數據在CLK的上升沿鎖存,下降沿輸出(即CPOL=0,CPHA=1的模式)通信時序如8-7所示。
圖8-7 XPT2046 24時鐘周期轉換時序圖
結合時序圖,操作步驟如下:
1、發送控制字命令。前8個時鐘周期單片機通過DIN(MOSI)引腳發送控制字命令,用于配置XPT2046的工作模式。控制命令由8個數據位組成,包括起始位、通道選擇位、分辨率選擇位、輸入方式和低功率模式,控制命令如表8-3所示。
(1)起始位——第一位,即 S 位。控制字的起始位必須為 1,否則所有的輸入將被忽略。
(2)通道選擇位——A2、A1、A0用于選擇對哪一個通道進行A/D轉換。差分模式下:當A2=0,A1=0,A0=1時表示選擇X+通道,即測量Y軸坐標;當A2=1,A1=0,A0=1時表示選擇Y+通道,即測量X軸坐標。測量坐標時,要分別測量X+和Y+通道。
(3)MODE——模式選擇位,用于設置 ADC 的分辨率。為0表示下一次的轉換為 12 位模式;為1表示下一次的轉換將是 8 位模式,默認設置選擇12位模式。
(4)SER/DFR——輸入模式選擇位,單端輸入方式/差分輸入方式選擇位。為1是單端輸入方式,為0是差分輸入方式,觸摸測量時默認選擇差分模式,即設置該位為0。
(5)PD1和PD0——模式選擇位,其功能如表8-4所示。若為11,器件總處于全功耗模式;若為00,器件在A/D轉換之間處于低功率模式。同時PD0位還控制是否產生PENIRQ中斷,如果使能PENIRQ中斷,當有觸摸動作時,PENIRQ引腳會輸出0,否則輸出1,通過PENIRQ引腳可以判斷是否有觸摸動作,本教材默認設置PD1、PD0為00。
2、電壓采樣。當XPT2046接收到5個控制命令位時,即在接收到MODE位后,XPT2046內部就可以根據控制位信息設置輸入多路選擇器和參考源輸入,并啟動觸摸面板驅動器,開始進入采樣模式,該動作與SPI串行通信是同步的,并不影響剩余控制位的傳輸,如圖8-7種的時序圖所示;3個多時鐘周期后,控制字接收完成,于此同時采樣完畢,轉換器進入轉換狀態,此時XPT2046會將BUSY引腳置高,表示數據正在轉換。
3、轉換結束后需要提供16個時鐘信號,其中第1個時鐘信號用于清除BUSY位,然后再發送12個時鐘周期將輸出轉換后的12位有效數據。最后3個時鐘信號用于輸出剩余3個無效數據,默認為0。
4、注意當次讀取的轉換數據,是上一次的轉換結果,而當次的時鐘提供的轉換數據,下一次讀取,因此第一次讀取的數據是無效數據。
78.7 觸摸屏校準
計算觸摸點位置時需要引入兩個概念——物理坐標和邏輯坐標。物理坐標就是觸摸點在液晶屏上的實際位置,通常以液晶上像素的個數來度量。本文采用的TFT-LCD的X和Y軸坐標范圍分別為0239和0319。邏輯坐標指的是觸摸點的電壓值經ADC轉換后得到的坐標值,由ADC精度決定,12位ADC模式下其范圍為0~4095。實際使用時需要通過邏輯坐標計算相應的實際物理坐標。
觸摸屏是由液晶顯示屏(TFT-LCD)疊加一層觸摸層構成一個矩形的實際物理平面。一方面由于存在誤差,這兩個平面并不是完全重合;另一方面由于 A/D轉換器的前端電路具有高輸入阻抗,因此特別容易受到電氣噪聲的干擾;觸摸屏本身電阻材料的均勻性以及模擬電子開關的內阻和 A/D轉換器自身的轉換精度都會影響轉換后的邏輯坐標值。基于以上兩方面原因導致實際的物理坐標與軟件通過邏輯坐標所計算的物理坐標有所偏差。校準的作用就是要將邏輯平面映射到物理平面上,即得到觸點在液晶屏上的位置坐標。
由于電阻式觸摸屏的電壓成線性均勻分布,那么A/D轉換后的坐標值也成線性。首先假定物理平面和邏輯平面之間的誤差是線性誤差,如果已知觸摸屏上一點A,其物理坐標為(X a ,Y a ),相應的邏輯坐標為(X b ,Y b ),根據假定的線性關系,可以得到:
Xa = K ~x ~ * X ~b ~ + D x ;
Ya = K ~y ~ * X ~b ~ + D y ;
其中Kx、Ky分別為觸摸屏X方向和Y方向的縮放比例系數,D x 、Dy為偏差常數,它們由校準點計算而來。根據觸摸屏的Kx、Ky、D x 、D y ,就可以通過邏輯坐標計算出相對準確的物理坐標。
觸摸屏的校準方法大致有兩點校準、三點校準、四點校準、五點校準等。其中校準的點數越多,觸摸屏的校準相對越精確。本文采用五點校正法。五點校正法優勢在于可以更加精確的計算出X和Y方向的比例縮放系數,同時提供了中心基準點,對于一些線性電阻系數比較差的電阻式觸摸屏有很好的校正作用。
首先在液晶屏的4個角取4個固定物理坐標作為測量點,并且在液晶屏中心位置取一個基準點,然后依次顯示各個校準點,并讀取該點的觸摸坐標,最后計算Kx、Ky、D x 、D y ,校準點如圖8-8所示。
8-8 五點校準示意圖
校準流程如下所示:
1、依次顯示并觸摸5個校準點,并讀取觸摸坐標;
2、根據坐標計算S1、S2、S3、S4、S5、S6五條線段的長度,并比較S1和S2,S3和 S4,S5和S6的距離,當二者的距離小于一定范圍時,默認校準有效,否則無效,重新 校準。當距離差越小時,校準越準確。
3、根據所得的校準點的邏輯坐標計算縮放比例系數K x 、K y ,和偏差D x 、Dy公式如下:
Kx = ((X2-X1)/ S1+(X4-X3)/ S2)/2
Ky = ((Y3-Y1)/ S3+(Y4-Y2)/ S4)/2
D ~x ~ = (S1- K x *(X1+X2))/2
D ~y ~ = (S1- Ky*(Y1+Y2))/2
4、通過K x 、K y 、D x 、Dy以及中心基點的邏輯坐標計算相應的物理坐標,如果計算后的坐標與實際坐標誤差小于一定范圍,比如5個像素時認為校準成功,否則校準失敗,需要重新校準。
88.8 觸摸畫板實驗
根據液晶屏的觸摸功能設計了一款簡易的觸摸畫板實驗。觸摸畫板分為兩部分,功能區和繪畫區,功能區用來選擇畫筆顏色和清除畫板,然后通過觸摸筆在繪畫區繪制圖案。
首先將觸摸事件分為按下、滑動、抬起三種事件,不同事件對應不同的動作。當滑動事件觸發時,如果觸摸點的坐標位于繪畫區,則在對應位置通過畫點函數畫一個2*2的點。當抬起動作觸發時,如果抬起時的坐標是否位于功能區,則觸發相應的功能。
具體代碼如下:
-
寄存器
+關注
關注
31文章
5317瀏覽量
120003 -
cpu
+關注
關注
68文章
10825瀏覽量
211140 -
實時時鐘
+關注
關注
4文章
239瀏覽量
65691 -
STM32F103
+關注
關注
33文章
476瀏覽量
63478
發布評論請先 登錄
相關推薦
評論