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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

實時時鐘——RTC

8.1.1 RTC初步認識

RTC(Real Time Clock)實時時鐘,主要用于為人們提供精確的實時時間或者為系統(tǒng)提供精確的時間基準。RTC通常分為兩類,一類是外部時鐘芯片提供實時時鐘,比如DS1302時鐘芯片;另一類是CPU內(nèi)部集成RTC模塊。STM32F103內(nèi)部集成了RTC模塊,可以通過配置相應的寄存器來實現(xiàn)實時時鐘的功能。

STM32內(nèi)部有一塊特殊區(qū)域,叫做備份區(qū)域(也叫后備區(qū)域),該區(qū)域主要包含了RTC核心模塊和備份寄存器兩部分。當STM32在系統(tǒng)電源工作的狀態(tài)下,備份區(qū)域也是通過系統(tǒng)電源供電;當STM32的系統(tǒng)電源VDD掉電的情況下,備份區(qū)域可以自動切換到VBAT使用備用電源如電池、電容等進行工作,維持RTC運行,并且保護備份寄存器數(shù)據(jù)不丟失。STM32電源部分結構圖如圖8-1所示,如果沒有接外部電池,建議將VBAT引腳通過一個100nF的陶瓷電容與電源VDD相連。

圖片

圖8-1 STM32供電結構圖

8.1.2 RTC基本結構

RTC模塊主要由APB1接口和一組可編程計數(shù)器組成(RTC核心部件),如圖8-2所示。其中APB1接口部分(圖中藍色框內(nèi))用來實現(xiàn)CPU通過APB1總線和RTC寄存器相互通信;RTC核心部分(圖中紅色框內(nèi))由一個RTC預分頻模塊和一個32位可編程計數(shù)器組成,這部分運行在后備區(qū)域(圖示灰底部分)。

圖片

圖8-2 RTC時鐘結構框圖

1、 RTC的時鐘源 —— RTCCLK

RTCCLK可以通過備份域控制寄存器(RCC_BDCR)來選擇其時鐘源,可以分別用HSE/128、LSI或者LSE作為RTC時鐘源。其中HSE是高速外部時鐘,Kingst-32F1開發(fā)板中HSE采用的是8MHz的外部晶振,該時鐘同樣也是系統(tǒng)時鐘源;LSI是低速內(nèi)部時鐘,由STM32內(nèi)部RC振蕩器產(chǎn)生,頻率為40KHz,該時鐘源受環(huán)境影響較大;LSE為低速外部時鐘,需要外接頻率為32.768KHz的晶振,LSE是一個低功耗且精準度相對較高的的時鐘源。

當系統(tǒng)主電源關閉時,HSE無法工作,而如果采用LSI作為RTC時鐘源,一方面精度相對較低,另外一方面會有相對大的功率消耗,所以大多數(shù)情況下RTC的時鐘源是采用LSE,LSE的晶振的負載電容要求為6pF。

2、RTC預分頻****模塊

RTC預分頻模塊包含了一個20位的可編程分頻器,可以通過對預分頻裝載寄存器RTC_PRL配置,實現(xiàn)RTCCLK時鐘信號分頻,每經(jīng)過‘N+1’個時鐘周期輸出一個計時時間為1秒的RTC時間基準TR_CLK,如圖8-2中左側紅框所示。如果在RTC_CR寄存器中設置了相應的允許位(SECIE位),每個TR_CLK周期RTC會產(chǎn)生一個中斷。通常情況下,用戶是將RTC時間基準配置成1秒,因此這個中斷也常被稱為秒中斷。

圖8-2種RTC_DIV是一個只讀寄存器,它的作用是對輸入的RTCCLK進行計數(shù),當計數(shù)值與預分頻寄存器中的值相匹配時,輸出TR_CLK信號,然后重新計數(shù)。用戶可以通過讀取RTC_DIV寄存器,獲取當前的分頻計數(shù)器的當前值而不停止分頻計數(shù)器的工作。當RTC_PRL或RTC_CNT寄存器中的數(shù)據(jù)發(fā)生改變后,RTC_DIV會由硬件重新裝載。

3、 32位的****可編程計數(shù)器

RTC核心部分的第二個模塊是一個32位可編程、向上計數(shù)的計數(shù)器,可以通過兩個16位的寄存器(RTC_CNTH或RTC_CNTL)訪問。此計數(shù)器以TR_CLK時間基準信號進行計數(shù),計滿后溢出,并且產(chǎn)生溢出標志位。當TR_CLK的周期為1秒時,計數(shù)器從0到溢出大概需要136年。

計數(shù)器按照TR_CLK周期累加外,同時與用戶設定的RTC鬧鐘寄存器(RTC_ALR)的時間比較,一致則產(chǎn)生鬧鐘標志,如果此時開啟中斷,則會觸發(fā)中斷。

28.2 UNIX時間戳及時間轉換問題

RTC模塊本質是一個計數(shù)器,當設置RTC預分頻模塊輸出周期為1秒的TR_CLK信號時,通過計算TR_CLK的周期數(shù)來獲取從開始計數(shù)的0時刻到現(xiàn)在經(jīng)過的秒數(shù)。計數(shù)器為0的時刻稱之為計時元年,當前時間為計時元年加上計數(shù)器的計數(shù)值。

不同人或者不同系統(tǒng)規(guī)定的計時元年可能不同,換算成當前時間時會出現(xiàn)災難性錯誤。為了解決這個問題,大部分操作系統(tǒng)普遍以格林尼治時間1970年1月1日0時0分0秒作計時元年,該時間最早在UNIX系統(tǒng)中使用,因此從計時元年到當前時間的經(jīng)過的秒數(shù)也被稱之為UNIX時間戳。

因此使用RTC模塊時,首先要計算出當前時間的UNIX時間戳X,然后將時間戳X寫入到RTC_CNT寄存器中并啟動計時。獲取當前時間時,先讀出RTC_CNT寄存器的值,然后再加上計時元年,所得到的時間便是當前時間。

38.3 RTC模塊基本操作

8.3.1 讀RTC寄存器

由于RTC核心部件位于后備區(qū)域,雖然RTC的寄存器讀寫由APB1接口完成,但是APB1接口在系統(tǒng)電源掉電時是停止工作的。由于RTC核心部件和APB1接口是相互獨立的,因此他們使用不同的時鐘源,當發(fā)生以下三種情況時,會導致時鐘不同步。

(1)發(fā)生系統(tǒng)復位或電源復位

(2)系統(tǒng)剛從待機模式喚醒

(3)系統(tǒng)剛從停機模式喚醒

當發(fā)生以上三種情況,讀寫RTC相關寄存器之前,必須首先檢測RTC_CRL寄存器中的RSF位,確保此位被置1,即RTC核心部件和APB1兩者時鐘同步,檢測庫函數(shù)如下:

圖片

8.3.2 配置RTC寄存器

當系統(tǒng)復位后,對后備寄存器和RTC的訪問將被禁止,這是為了防止對后備區(qū)域的意外寫操作。因此在配置RTC模塊前應先設置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能電源和后備接口時鐘,代碼如下:

圖片

使能后備區(qū)域時鐘后還要使能電源的寄存器PWR_CR的DBP位來取消后備區(qū)域的寫保護。代碼如下:

圖片

設置RTC時鐘源為LSE之前要先等待LSE時鐘啟動,保證LSE時鐘正常起振。啟動LSE時鐘代碼為:

圖片

LSE時鐘起振成功后才可以設置RTC時鐘源為LSE時鐘并使能RTC,由于RTC使用的時鐘源與APB1總線時鐘并非同一時鐘源,因此兩者的時鐘信號并不是同步的,需要等待RTC和APB1時鐘同步。

圖片

以上操作完畢后,就可以配置RTC寄存器,配置過程如下:

(1)查詢RTOFF位,直到RTOFF的值變?yōu)椤?’

(2)置CNF值為1,進入配置模式

(3)對一個或多個RTC寄存器進行寫操作

(4)清除CNF標志位,退出配置模式

(5)查詢RTOFF,直至RTOFF位變?yōu)椤?’以確認寫操作已經(jīng)完成。

需要注意的是,對RTC任何寄存器的寫操作,都必須在前一次寫操作結束后才能繼續(xù)進行??梢酝ㄟ^查詢RTC_CR寄存器中的RTOFF狀態(tài)位,判斷RTC寄存器是否處于更新中,僅當RTOFF狀態(tài)位是’1’時,才可以寫入RTC寄存器。配置完畢后需要清除CNF標志位(即退出配置模式)才算配置完成,否則無法更新RTC寄存器,這個過程至少需要3個RTCCLK周期。

代碼如下:

圖片

以下是RTC模塊的驅動代碼:

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

RTC時鐘由于晶振精度以及環(huán)境影響等原因,會存在一些誤差,粗略測試每天會快2s左右,不同環(huán)境下誤差可能有所不同。

48.4 初識觸摸屏

觸摸屏是一種可接收觸頭等輸入信號的感應式液晶顯示裝置,當接觸了屏幕的圖形按鈕時,屏幕上的觸覺反饋可根據(jù)預先編寫的程序驅動各種設備,可以替代機械式按鈕,并且通過液晶顯示更加生動的影音效果。觸摸屏提供了一種簡單、方便、自然的人機交互方式,賦予了多媒體嶄新的面貌,是極富吸引力的全新多媒體交互設備,應用非常廣泛。

8.4.1 觸摸屏的分類和特點

按照觸摸屏的工作原理和傳輸信息的介質區(qū)分,觸摸屏可以分為電阻式、電容式、紅外線式以及表面聲波式,我們常見的主流應用是電阻式和電容式。

電阻觸摸屏是在顯示器表面附著一個多層復合薄膜,薄膜底層由玻璃或硬塑料構成,頂層為光滑防擦的塑料層,上下兩層的內(nèi)表面都涂有透明導電層,并且相互隔離開。上下兩個薄膜層組成一個電阻網(wǎng)絡,當手指按壓屏幕時,上下導電層就會出現(xiàn)接觸點,此時在X軸和Y軸分別施加電壓,通過對比觸摸點電壓與施加電壓可以計算出觸摸點的X和Y坐標,確定觸摸點的相對位置,電阻觸摸屏的結構如圖8-3所示。

圖片

圖8-3電阻式觸摸屏結構

電容觸摸屏是利用人體的電流感應進行工作的四層復合玻璃屏,內(nèi)外層都涂有特殊材料,當手指摸在金屬層上時,由于人體電場,用戶和觸摸屏表面形成一個耦合電容,對于高頻電流來說,電容是導體,于是手指從接觸點吸走一個很小的電流,這個電流從觸摸屏的四角的電極中流出,控制器通過對這四個電流比例的精確計算,得出觸摸點的位置,電容屏觸摸原理如圖8-4所示。

圖片

圖8-4 電容屏觸摸原理

電阻屏和電容屏之間特點比較:

1、電阻屏靠壓力使各層接觸,因此可以用手指、指甲、觸筆等進行操作;電容屏利用人體的電流與觸摸屏之間形成耦合電場,從而觸發(fā)電容感應系統(tǒng),但是任何非導電物體如指甲、首套等無效,手寫比較困難。

2、電阻屏精度可以達到單個顯示像素,便于手寫,有助于在精準操作;電容屏精度低,尤其是受限于手指接觸面限制,難以提高精度。

3、電阻觸屏價格比較低;電容屏成本比電阻屏貴10%到50%,在iPhone誕生之前的中低端手機大多是電阻屏,對成本不敏感的產(chǎn)品多采用電容屏。

4、電阻屏需要按下去,因此決定了他的頂部是軟的,多用塑料材質,這使他容易產(chǎn)生劃痕,但是通常不容易摔壞;電容屏外層通常使用玻璃,外層更不容易劃壞,方便去除污跡,但是嚴重沖擊容易碎裂,當然電容屏也有塑料材質。

5、電阻屏不能支持多點同時觸摸;電容屏是可以支持多點同時觸摸的。

6、電阻屏在惡劣環(huán)境下可以正常工作,而電容屏操作溫度典型值是0到35度,至少5%的濕度,因此復雜的工業(yè)場合應用多用電阻屏。

7、電阻屏的可視效果相比電容屏差的多,尤其在陽光下,電容屏的可視效果優(yōu)于電阻屏。

電阻屏通常分為四線電阻屏和五線電阻屏,Kingst-32F1開發(fā)板上的TFT-LCD采用的是4線制電阻觸摸屏。

8.4.2 觸摸屏的控制原理

電阻式觸摸屏的4個邊對應 X+、Y+、X-、Y-四個電極,這也是4線電阻觸摸屏的由來。當有筆尖或手指按壓觸摸屏表面時,觸摸屏的電阻性表面相當于被分隔為兩個串聯(lián)的電阻,由于觸摸屏的電阻值與觸摸點到接地邊之間的距離成正比,根據(jù)串聯(lián)電阻之比等于電阻兩端電壓之比的原理,只需要測量出一端電阻的電壓即可得到電阻之比,進而計算出觸摸點到兩邊的距離之比,觸摸屏等效電路如圖8-5所示。

8-5觸摸屏等效電路圖

計算觸點的X、Y坐標主要分為以下兩步:

  1. 計算X坐標,在X+電極施加驅動電壓U, X-電極接地,X+到 X-之間形成均勻電場。Y+做為引出端可以測得接觸點的電壓為U ref ,由于ITO層均勻導電,觸點電壓與Uref電壓之比等于觸點X坐標與屏寬度之比。假如X+與X-之間的距離為d,則

圖片

  1. 計算Y坐標,在Y+電極施加驅動電壓U, Y-電極接地,此時Y+到Y-之間形成均勻電場。X+作為引出端可以測得接觸點的電壓為U ref 。由于ITO層均勻導電,觸點電壓與Uref之比等于觸點Y坐標與屏高度之比。假如Y+與Y-之間的距離為d, 即:

圖片

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

    關注

    450

    文章

    49631

    瀏覽量

    417106
  • 寄存器
    +關注

    關注

    31

    文章

    5250

    瀏覽量

    119193
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10698

    瀏覽量

    209328
  • 實時時鐘
    +關注

    關注

    4

    文章

    232

    瀏覽量

    65528
  • RTC
    RTC
    +關注

    關注

    2

    文章

    511

    瀏覽量

    65896
收藏 人收藏

    評論

    相關推薦

    STM32 RTC實時時鐘(一)

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

    Kinetis L 系列 RTC 的補償功能詳解

    忽略的是 Kinetis L 系列 RTC 的補償功能。那這個功能的增加有什么樣的實際意義呢?首先是外圍電路的減少,舉例:以前我們的 RTC 要么使用外部
    發(fā)表于 03-02 15:18

    RTC時鐘模塊有哪些功能

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

    W601的RTC時鐘功能概述

    13、W601的RTC時鐘文章目錄13、W601的RTC時鐘一、W601的RTC功能概述二、主要
    發(fā)表于 01-10 08:05

    內(nèi)置晶體實時時鐘(RTC)優(yōu)勢概述

    實時時鐘RTC)可獨立完成計時或事件記錄的功能。目前很多電子產(chǎn)品都具有時鐘計時功能,而且對時鐘
    發(fā)表于 07-24 14:12 ?4429次閱讀
    內(nèi)置晶體實時<b class='flag-5'>時鐘</b>(<b class='flag-5'>RTC</b>)優(yōu)勢概述

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

    計數(shù)的計數(shù)器,在相應軟件配置下,可提供時鐘日歷的功能。修改計數(shù)器的值可以重新設置系統(tǒng)當前的時間和日期。 RTC模塊和時鐘配置系統(tǒng)(RCC_BDCR寄存器)處于后備區(qū)域,即在系統(tǒng)復位或從
    的頭像 發(fā)表于 06-30 15:54 ?1.1w次閱讀

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

    RTC (Real Time Clock):實時時鐘實時時鐘是一個獨立的定時器。 RTC模塊擁有一組連續(xù)計數(shù)的計數(shù)器,在相應軟件配置下,可提供時鐘
    發(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 時鐘和預分頻器3.2 實時
    發(fā)表于 12-04 17:21 ?26次下載
    【STM32】<b class='flag-5'>RTC</b><b class='flag-5'>詳解</b>

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

    STM32使用HAL庫驅動RTC時鐘及鬧鐘功能目錄STM32使用HAL庫驅動RTC時鐘及鬧鐘功能
    發(fā)表于 12-06 09:21 ?52次下載
    STM32CubeMX | 基于STM32使用HAL庫驅動<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ù)器,在相應的軟件
    的頭像 發(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次閱讀

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

    是CPU內(nèi)部集成RTC模塊。STM32F103內(nèi)部集成了RTC模塊,可以通過配置相應的寄存器來實現(xiàn)實時時鐘功能。
    的頭像 發(fā)表于 05-26 14:45 ?1226次閱讀
    <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的本質很簡單,就是一個時鐘經(jīng)過精確分頻最后得到的一個1Hz的時鐘,也可以說是計數(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 具有兩個獨立鬧鐘,時間、日期可組合設定,可產(chǎn)生鬧鐘中斷,并通過引腳輸出;支持時間
    的頭像 發(fā)表于 05-26 17:07 ?1464次閱讀
    CW32實時<b class='flag-5'>時鐘</b>(<b class='flag-5'>RTC</b>)介紹(<b class='flag-5'>上</b>)

    STM32 RTC實時時鐘(二)

    上次實驗完成了對實時時鐘的基本功能——計時的實驗,這次在計時的基礎RTC的可編程鬧鐘的功能進行測試。
    的頭像 發(fā)表于 07-22 15:43 ?1667次閱讀
    STM32 <b class='flag-5'>RTC</b>實時<b class='flag-5'>時鐘</b>(二)