0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RTC時鐘與觸摸功能詳解(下)

jf_78858299 ? 來源:金沙灘工作室 ? 作者:金沙灘工作室 ? 2023-05-26 14:45 ? 次閱讀

58.5 電阻式觸摸控制器——XPT2046

為了方便測量觸摸屏的坐標(biāo),芯片廠商設(shè)計了專門的觸摸屏控制芯片,實現(xiàn)觸摸點電壓測量與轉(zhuǎn)換功能。本文采用的XPT2046是一款4導(dǎo)線制觸摸屏控制器,內(nèi)含12位分辨率

125KHz 轉(zhuǎn)換速率逐次逼近型A/D轉(zhuǎn)換器。XPT2046通過執(zhí)行兩次A/D轉(zhuǎn)換便可以計算出觸摸點位置,該芯片兼容 ADS7843 觸摸芯片,其電路原理圖和引腳圖如圖8-6和表8-1、表8-2所示。

圖片

圖片

XPT2046的電源VCC的范圍為2.7V~5.5V。A/D轉(zhuǎn)換所需的參考電壓可以選擇通過VREF輸入,范圍是1V~VCC;也可以采用內(nèi)部內(nèi)部 2.5V參考電壓,采用內(nèi)部參考電壓時VREF引腳應(yīng)懸空。XPT2046除了作為觸摸驅(qū)動芯片,還可以進(jìn)行電池電壓檢測、溫度測量,以及壓力測量。作為觸摸屏應(yīng)用時,X+、X-、Y+、Y-分別連接電阻觸摸屏的X+、X-、Y+、Y-引腳,測量時芯片會根據(jù)指令自動切換X、Y電極的電壓,并采集觸摸點的電壓進(jìn)行快速A/D轉(zhuǎn)換。

XPT2046的ADC可以配置為單端或差分模式,具體如下:

單端模式是以外部參考電壓VREF為參考,在采樣過程完成后,進(jìn)行A/D轉(zhuǎn)換時可以關(guān)閉驅(qū)動開關(guān),以降低功耗。但這種模式的缺點是精度直接受參考電壓源的精度限制,同時由于內(nèi)部驅(qū)動開關(guān)存在導(dǎo)通電阻,導(dǎo)通電阻與觸摸屏電阻的分壓作用,也會帶來測量誤差。因此該模式主要應(yīng)用于電池監(jiān)測、溫度測量和壓力測量。

差分工作模式是以X、Y電極兩端的電壓作為差分輸入電壓,可消除由于驅(qū)動開關(guān)的導(dǎo)通電阻引入的坐標(biāo)測量誤差。缺點是驅(qū)動開關(guān)一直接通,相對于單端輸入模式而言,功耗變高了。作為觸摸屏應(yīng)用時,為了提高轉(zhuǎn)換精度,應(yīng)該配置為差分模式。

68.6 XPT2046通信接口及控制命令

XPT2046允許采用SPI,SSI,Microwire等串行接口通信,本文采用IO口模擬SPI方式通信。XPT2046一次完整的數(shù)據(jù)轉(zhuǎn)換一般需要24個時鐘周期,即通信時單片機必須提供24個時鐘周期才能保證XPT2046完成一次數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)按照高位在前、低位在后的順序傳輸,當(dāng)CS為低電平時,數(shù)據(jù)在CLK的上升沿鎖存,下降沿輸出(即CPOL=0,CPHA=1的模式)通信時序如8-7所示。

圖片

圖8-7 XPT2046 24時鐘周期轉(zhuǎn)換時序圖

結(jié)合時序圖,操作步驟如下:

1、發(fā)送控制字命令。前8個時鐘周期單片機通過DIN(MOSI)引腳發(fā)送控制字命令,用于配置XPT2046的工作模式??刂泼钣?個數(shù)據(jù)位組成,包括起始位、通道選擇位、分辨率選擇位、輸入方式和低功率模式,控制命令如表8-3所示。

圖片

(1)起始位——第一位,即 S 位??刂谱值钠鹗嘉槐仨殲?1,否則所有的輸入將被忽略。

(2)通道選擇位——A2、A1、A0用于選擇對哪一個通道進(jìn)行A/D轉(zhuǎn)換。差分模式下:當(dāng)A2=0,A1=0,A0=1時表示選擇X+通道,即測量Y軸坐標(biāo);當(dāng)A2=1,A1=0,A0=1時表示選擇Y+通道,即測量X軸坐標(biāo)。測量坐標(biāo)時,要分別測量X+和Y+通道。

(3)MODE——模式選擇位,用于設(shè)置 ADC 的分辨率。為0表示下一次的轉(zhuǎn)換為 12 位模式;為1表示下一次的轉(zhuǎn)換將是 8 位模式,默認(rèn)設(shè)置選擇12位模式。

(4)SER/DFR——輸入模式選擇位,單端輸入方式/差分輸入方式選擇位。為1是單端輸入方式,為0是差分輸入方式,觸摸測量時默認(rèn)選擇差分模式,即設(shè)置該位為0。

(5)PD1和PD0——模式選擇位,其功能如表8-4所示。若為11,器件總處于全功耗模式;若為00,器件在A/D轉(zhuǎn)換之間處于低功率模式。同時PD0位還控制是否產(chǎn)生PENIRQ中斷,如果使能PENIRQ中斷,當(dāng)有觸摸動作時,PENIRQ引腳會輸出0,否則輸出1,通過PENIRQ引腳可以判斷是否有觸摸動作,本教材默認(rèn)設(shè)置PD1、PD0為00。

2、電壓采樣。當(dāng)XPT2046接收到5個控制命令位時,即在接收到MODE位后,XPT2046內(nèi)部就可以根據(jù)控制位信息設(shè)置輸入多路選擇器和參考源輸入,并啟動觸摸面板驅(qū)動器,開始進(jìn)入采樣模式,該動作與SPI串行通信是同步的,并不影響剩余控制位的傳輸,如圖8-7種的時序圖所示;3個多時鐘周期后,控制字接收完成,于此同時采樣完畢,轉(zhuǎn)換器進(jìn)入轉(zhuǎn)換狀態(tài),此時XPT2046會將BUSY引腳置高,表示數(shù)據(jù)正在轉(zhuǎn)換。

3、轉(zhuǎn)換結(jié)束后需要提供16個時鐘信號,其中第1個時鐘信號用于清除BUSY位,然后再發(fā)送12個時鐘周期將輸出轉(zhuǎn)換后的12位有效數(shù)據(jù)。最后3個時鐘信號用于輸出剩余3個無效數(shù)據(jù),默認(rèn)為0。

4、注意當(dāng)次讀取的轉(zhuǎn)換數(shù)據(jù),是上一次的轉(zhuǎn)換結(jié)果,而當(dāng)次的時鐘提供的轉(zhuǎn)換數(shù)據(jù),下一次讀取,因此第一次讀取的數(shù)據(jù)是無效數(shù)據(jù)。

78.7 觸摸屏校準(zhǔn)

計算觸摸點位置時需要引入兩個概念——物理坐標(biāo)和邏輯坐標(biāo)。物理坐標(biāo)就是觸摸點在液晶屏上的實際位置,通常以液晶上像素的個數(shù)來度量。本文采用的TFT-LCD的X和Y軸坐標(biāo)范圍分別為0239和0319。邏輯坐標(biāo)指的是觸摸點的電壓值經(jīng)ADC轉(zhuǎn)換后得到的坐標(biāo)值,由ADC精度決定,12位ADC模式下其范圍為0~4095。實際使用時需要通過邏輯坐標(biāo)計算相應(yīng)的實際物理坐標(biāo)。

觸摸屏是由液晶顯示屏(TFT-LCD)疊加一層觸摸層構(gòu)成一個矩形的實際物理平面。一方面由于存在誤差,這兩個平面并不是完全重合;另一方面由于 A/D轉(zhuǎn)換器的前端電路具有高輸入阻抗,因此特別容易受到電氣噪聲的干擾;觸摸屏本身電阻材料的均勻性以及模擬電子開關(guān)的內(nèi)阻和 A/D轉(zhuǎn)換器自身的轉(zhuǎn)換精度都會影響轉(zhuǎn)換后的邏輯坐標(biāo)值?;谝陨蟽煞矫嬖?qū)е聦嶋H的物理坐標(biāo)與軟件通過邏輯坐標(biāo)所計算的物理坐標(biāo)有所偏差。校準(zhǔn)的作用就是要將邏輯平面映射到物理平面上,即得到觸點在液晶屏上的位置坐標(biāo)。

由于電阻式觸摸屏的電壓成線性均勻分布,那么A/D轉(zhuǎn)換后的坐標(biāo)值也成線性。首先假定物理平面和邏輯平面之間的誤差是線性誤差,如果已知觸摸屏上一點A,其物理坐標(biāo)為(X a ,Y a ),相應(yīng)的邏輯坐標(biāo)為(X b ,Y b ),根據(jù)假定的線性關(guān)系,可以得到:

Xa = K ~x ~ * X ~b ~ + D x ;

Ya = K ~y ~ * X ~b ~ + D y ;

其中Kx、Ky分別為觸摸屏X方向和Y方向的縮放比例系數(shù),D x 、Dy為偏差常數(shù),它們由校準(zhǔn)點計算而來。根據(jù)觸摸屏的Kx、Ky、D x 、D y ,就可以通過邏輯坐標(biāo)計算出相對準(zhǔn)確的物理坐標(biāo)。

觸摸屏的校準(zhǔn)方法大致有兩點校準(zhǔn)、三點校準(zhǔn)、四點校準(zhǔn)、五點校準(zhǔn)等。其中校準(zhǔn)的點數(shù)越多,觸摸屏的校準(zhǔn)相對越精確。本文采用五點校正法。五點校正法優(yōu)勢在于可以更加精確的計算出X和Y方向的比例縮放系數(shù),同時提供了中心基準(zhǔn)點,對于一些線性電阻系數(shù)比較差的電阻式觸摸屏有很好的校正作用。

首先在液晶屏的4個角取4個固定物理坐標(biāo)作為測量點,并且在液晶屏中心位置取一個基準(zhǔn)點,然后依次顯示各個校準(zhǔn)點,并讀取該點的觸摸坐標(biāo),最后計算Kx、Ky、D x 、D y ,校準(zhǔn)點如圖8-8所示。

圖片

8-8 五點校準(zhǔn)示意圖

校準(zhǔn)流程如下所示:

1、依次顯示并觸摸5個校準(zhǔn)點,并讀取觸摸坐標(biāo);

2、根據(jù)坐標(biāo)計算S1、S2、S3、S4、S5、S6五條線段的長度,并比較S1和S2,S3和 S4,S5和S6的距離,當(dāng)二者的距離小于一定范圍時,默認(rèn)校準(zhǔn)有效,否則無效,重新 校準(zhǔn)。當(dāng)距離差越小時,校準(zhǔn)越準(zhǔn)確。

3、根據(jù)所得的校準(zhǔn)點的邏輯坐標(biāo)計算縮放比例系數(shù)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以及中心基點的邏輯坐標(biāo)計算相應(yīng)的物理坐標(biāo),如果計算后的坐標(biāo)與實際坐標(biāo)誤差小于一定范圍,比如5個像素時認(rèn)為校準(zhǔn)成功,否則校準(zhǔn)失敗,需要重新校準(zhǔn)。

88.8 觸摸畫板實驗

根據(jù)液晶屏的觸摸功能設(shè)計了一款簡易的觸摸畫板實驗。觸摸畫板分為兩部分,功能區(qū)和繪畫區(qū),功能區(qū)用來選擇畫筆顏色和清除畫板,然后通過觸摸筆在繪畫區(qū)繪制圖案。

首先將觸摸事件分為按下、滑動、抬起三種事件,不同事件對應(yīng)不同的動作。當(dāng)滑動事件觸發(fā)時,如果觸摸點的坐標(biāo)位于繪畫區(qū),則在對應(yīng)位置通過畫點函數(shù)畫一個2*2的點。當(dāng)抬起動作觸發(fā)時,如果抬起時的坐標(biāo)是否位于功能區(qū),則觸發(fā)相應(yīng)的功能。

具體代碼如下:

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119193
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209328
  • 實時時鐘
    +關(guān)注

    關(guān)注

    4

    文章

    232

    瀏覽量

    65528
  • STM32F103
    +關(guān)注

    關(guān)注

    33

    文章

    475

    瀏覽量

    63195
收藏 人收藏

    評論

    相關(guān)推薦

    STM32 RTC實時時鐘(一)

    STM32處理器內(nèi)部集成了實時時鐘控制器(RTC),因此在實現(xiàn)實時時鐘功能時,無須外擴(kuò)時鐘芯片即可構(gòu)建實時
    的頭像 發(fā)表于 07-22 15:41 ?4235次閱讀
    STM32 <b class='flag-5'>RTC</b>實時<b class='flag-5'>時鐘</b>(一)

    RTC時鐘模塊有哪些功能

    很多嵌入式設(shè)備在使用過程中,會碰到未聯(lián)網(wǎng)的狀態(tài),但是有需要保證時間的正常,或者定時開關(guān)機功能。這個時候就需要添加RTC 時鐘模塊。下面通過mstar 平臺的rx8130ce 型號時鐘調(diào)
    發(fā)表于 07-27 08:15

    W601的RTC時鐘功能概述

    計數(shù)器/定時器,兩個 32 位寄存器包含秒、分、時、日、月、年,以二進(jìn)制編碼的十進(jìn)制格式表示(BCD),能自動對 28、29(閏年)、30、31 天的月份進(jìn)行修正。在相應(yīng)軟件配置,RTC 既可以提供時鐘日歷
    發(fā)表于 01-10 08:05

    淺談RTC實時時鐘特征與原理

    計數(shù)的計數(shù)器,在相應(yīng)軟件配置,可提供時鐘日歷的功能。修改計數(shù)器的值可以重新設(shè)置系統(tǒng)當(dāng)前的時間和日期。 RTC模塊和時鐘配置系統(tǒng)(RCC_B
    的頭像 發(fā)表于 06-30 15:54 ?1.1w次閱讀

    STM32開發(fā) -- RTC詳解

    RTC (Real Time Clock):實時時鐘實時時鐘是一個獨立的定時器。 RTC模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應(yīng)軟件配置,可
    發(fā)表于 11-30 13:06 ?27次下載
    STM32開發(fā) -- <b class='flag-5'>RTC</b><b class='flag-5'>詳解</b>

    【STM32】RTC詳解

    00. 目錄文章目錄00. 目錄01. RTC概述02. RTC主要特性03. RTC部分功能3.1 時鐘和預(yù)分頻器3.2 實時
    發(fā)表于 12-04 17:21 ?26次下載
    【STM32】<b class='flag-5'>RTC</b><b class='flag-5'>詳解</b>

    STM32CubeMX | 基于STM32使用HAL庫驅(qū)動RTC時鐘及鬧鐘功能

    STM32使用HAL庫驅(qū)動RTC時鐘及鬧鐘功能目錄STM32使用HAL庫驅(qū)動RTC時鐘及鬧鐘功能
    發(fā)表于 12-06 09:21 ?52次下載
    STM32CubeMX | 基于STM32使用HAL庫驅(qū)動<b class='flag-5'>RTC</b><b class='flag-5'>時鐘</b>及鬧鐘<b class='flag-5'>功能</b>

    RTC時鐘講解(一)

    什么是RTC RTC (Real Time Clock):實時時鐘 RTC是個獨立的定時器。RTC模塊擁有一個連續(xù)計數(shù)的計數(shù)器,在相應(yīng)的軟件
    的頭像 發(fā)表于 06-09 17:48 ?9484次閱讀
    <b class='flag-5'>RTC</b><b class='flag-5'>時鐘</b>講解(一)

    STM32CubeMX-實時時鐘(RTC)

    實時時鐘 (RTC) 是一個獨立的 BCD 定時器/計數(shù)器。RTC 提供具有可編程鬧鐘中斷功能的日歷時鐘 /日歷。
    的頭像 發(fā)表于 01-14 17:24 ?2372次閱讀

    STM32學(xué)習(xí)筆記之RTC實時時鐘1

    STM32 的實時時鐘RTC)是一個獨立的定時器。 STM32 的 RTC 模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應(yīng)軟件配置,可提供時鐘日歷
    的頭像 發(fā)表于 05-26 14:26 ?1684次閱讀
    STM32學(xué)習(xí)筆記之<b class='flag-5'>RTC</b>實時<b class='flag-5'>時鐘</b>1

    STM32學(xué)習(xí)筆記之RTC實時時鐘2

    STM32 的實時時鐘RTC)是一個獨立的定時器。 STM32 的 RTC 模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應(yīng)軟件配置,可提供時鐘日歷
    的頭像 發(fā)表于 05-26 14:26 ?1028次閱讀
    STM32學(xué)習(xí)筆記之<b class='flag-5'>RTC</b>實時<b class='flag-5'>時鐘</b>2

    RTC時鐘觸摸功能詳解(上)

    是CPU內(nèi)部集成RTC模塊。STM32F103內(nèi)部集成了RTC模塊,可以通過配置相應(yīng)的寄存器來實現(xiàn)實時時鐘功能。
    的頭像 發(fā)表于 05-26 14:44 ?1648次閱讀
    <b class='flag-5'>RTC</b><b class='flag-5'>時鐘</b>與<b class='flag-5'>觸摸</b><b class='flag-5'>功能</b><b class='flag-5'>詳解</b>(上)

    RTC詳解

    RTC的本質(zhì)很簡單,就是一個時鐘經(jīng)過精確分頻最后得到的一個1Hz的時鐘,也可以說是計數(shù)器,其他大部分功能都是基于這個計數(shù)器設(shè)計的數(shù)字邏輯。 本文講的
    的頭像 發(fā)表于 05-26 15:15 ?8542次閱讀
    <b class='flag-5'>RTC</b><b class='flag-5'>詳解</b>

    CW32實時時鐘RTC)介紹(

    實時時鐘RTC)是一個專用的計數(shù)器 / 定時器,可提供日歷信息,包括小時、分鐘、秒、日、月份、年份以及星期。RTC 具有兩個獨立鬧鐘,時間、日期可組合設(shè)定,可產(chǎn)生鬧鐘中斷,并通過引腳輸出;支持時間
    的頭像 發(fā)表于 05-26 17:07 ?818次閱讀
    CW32實時<b class='flag-5'>時鐘</b>(<b class='flag-5'>RTC</b>)介紹(<b class='flag-5'>下</b>)

    一文看懂RTC實時時鐘

    RTC是個獨立的定時器。RTC模塊擁有一個連續(xù)計數(shù)的計數(shù)器,在相應(yīng)的軟件配置,可以提供時鐘日歷的功能。修改計數(shù)器的值可以重新設(shè)置當(dāng)前時間和
    的頭像 發(fā)表于 06-16 12:24 ?4107次閱讀
    一文看懂<b class='flag-5'>RTC</b>實時<b class='flag-5'>時鐘</b>