首頁(yè) 資訊 > 創(chuàng)新 > 正文

【世界獨(dú)家】【愛普特 APT32F110 ev board 試用測(cè)評(píng)】之四:RTC測(cè)試

APT32 單片機(jī)RTC功能強(qiáng)大, 在所有低功耗模式下均可獨(dú)立運(yùn)行,并支持系統(tǒng)喚醒。實(shí)時(shí)時(shí)鐘計(jì)數(shù)器(RTC)為一個(gè)獨(dú)立的 BCD 編碼計(jì)數(shù)器,提供實(shí)時(shí)的日歷和時(shí)間信息,包括星期,年、月、日和小時(shí)、分鐘、秒。支持可編程的鬧鐘中斷。RTC 具有產(chǎn)生周期性的中斷事件的能力。RTC 一旦初始化成功并開始工作,任何復(fù)位信號(hào)均不能影響其工作,除非重新上電。

RTC 的基本特性:

1) 支持萬年歷功能,自動(dòng)閏年判定。計(jì)時(shí)器包括小時(shí)、分鐘、秒和微秒,BCD 格式計(jì)數(shù)。


(資料圖片)

2) 二十四小時(shí)或者十二小時(shí)制可選,支持星期判斷。

3) 支持多個(gè)時(shí)鐘源,包括外部晶振、內(nèi)部低速振蕩器和內(nèi)部主振蕩器。

4) 支持低功耗喚醒功能

5) 兩個(gè)可編程鬧鐘。

6) 支持周期事件觸發(fā)。

RTC 的系統(tǒng)框圖:

由于 RTC 工作時(shí)鐘與 APB 總線時(shí)鐘(PCLK)為異步時(shí)鐘,對(duì) RTC 的讀寫操作均需要通過兩個(gè)異步時(shí)鐘同步

后進(jìn)行。任何對(duì) RTC 控制器的操作不會(huì)立即產(chǎn)生作用,可以通過對(duì) CR[UPD_BSY]控制位進(jìn)行查詢,以獲得更新狀

態(tài)。UPD_BSY 控制位在寫請(qǐng)求發(fā)生時(shí),會(huì)立即置位,直到更新結(jié)束后才會(huì)自動(dòng)清除。在 RTC 未初始化前,對(duì)寄存

器的更新值都保存在緩沖中,所以只需要在初始化時(shí),查詢 UPD_BSY 即可。當(dāng) RTC 已經(jīng)初始化完成后(RTC 已經(jīng)

開始工作),任何對(duì)寄存器的修改,例如 CR 和 ALRAR,都需要查詢 UPD_BSY,以保證更新成功。

對(duì) RTC 的初始化,包括如下操作。

1) 設(shè)置保護(hù)寄存器關(guān)閉

2) 設(shè)置 TIMR、DATR、ALRAR、ALRBR

3) 設(shè)置 CCR,包括時(shí)鐘選擇和分頻選擇

4) 使能 RTC 時(shí)鐘(設(shè)置 CCR[CLKEN]),等待 RTC 工作時(shí)鐘穩(wěn)定(通過 CCR[RTCCK_ST]控制位查詢)。

5) 設(shè)置 CR 寄存器,以設(shè)置時(shí)間格式或鬧鐘使能等配置。同時(shí)清除 INIT 位,啟動(dòng)初始化。

6) 回讀 INIT 狀態(tài)位,確認(rèn) RTC 工作

void rtc_set_time_demo(void)

{

csi_rtc_config_t tRtcConfig;

csi_rtc_time_t tRtcTime,tRtcTimeRdbk;

uint32_t wSec = 0;

csi_pin_set_mux(PA03, PA03_OSC_XI);//設(shè)置PA0.3為SXIN,如果使用外部主晶振作為RTC時(shí)鐘源,必須先對(duì)管腳進(jìn)行配置

csi_pin_set_mux(PA04, PA04_OSC_XO);? ? ? ? ?//設(shè)置PA0.4為SXOUT,如果使用外部主晶振作為RTC時(shí)鐘源,必須先對(duì)管腳進(jìn)行配置

csi_pin_set_mux(PA01,PA01_OSC_SXI);? ? ? ? ?//設(shè)置PA0.1為XIN,如果使用外部副晶振作為RTC時(shí)鐘源,必須先對(duì)管腳進(jìn)行配置

csi_pin_set_mux(PA02,PA02_OSC_SXO);? ? ? ? ?//設(shè)置PA0.2為XOUT,如果使用外部副晶振作為RTC時(shí)鐘源,必須先對(duì)管腳進(jìn)行配置

tRtcConfig.byClkSrc = RTC_CLKSRC_ESOSC;//外部副晶振作為RTC時(shí)鐘源

tRtcConfig.byFmt = RTC_24FMT;//選擇時(shí)間模式

csi_rtc_init(RTC, &tRtcConfig);//初始化設(shè)置

tRtcTime.iYear = 22;

tRtcTime.iMon? = 2;

tRtcTime.iMday = 14;

//tRtcTime.iWday = 1;? ? ? ? ? ? ? ? ? ? ? ?//星期1-7

tRtcTime.iPm? ?= RTC_AM;// AM or PM

tRtcTime.iHour = 9;//如果是12小時(shí)制,回讀到的hour范圍為1->12;如果是24小時(shí)制,回讀到的hour范圍是0->23

tRtcTime.iHour = 9;//如果是12小時(shí)制,回讀到的hour范圍為1->12;如果是24小時(shí)制,回讀到的hour范圍是0->23

tRtcTime.iMin? = 50;

tRtcTime.iSec? = 59;

csi_rtc_set_time(RTC, &tRtcTime);//設(shè)置時(shí)間

csi_rtc_start(RTC);//RTC開始計(jì)時(shí)

csi_rtc_change_fmt(RTC, RTC_12FMT);//修改時(shí)間模式為12小時(shí)制

tRtcTime.iYear = 22;

tRtcTime.iMon? = 2;

tRtcTime.iMday = 14;

//tRtcTime.iWday = 1;? ? ? ? ? ? ? ? ? ? ? ?//星期1-7

tRtcTime.iPm? ?= RTC_AM;// AM or PM

tRtcTime.iHour = 11;

tRtcTime.iHour = 9;

tRtcTime.iMin? = 59;

tRtcTime.iSec? = 56;

csi_rtc_set_time(RTC, &tRtcTime);//修改時(shí)間以后需要重新start rtc

csi_rtc_start(RTC);

csi_rtc_get_time(RTC,? &tRtcTimeRdbk);//回讀當(dāng)前時(shí)間

my_printf("12FMT: %d:%d:%d\n", tRtcTimeRdbk.iHour, tRtcTimeRdbk.iMin, tRtcTimeRdbk.iSec);

csi_rtc_change_fmt(RTC, RTC_24FMT);//修改時(shí)間模式為24小時(shí)制

csi_rtc_get_time(RTC,? &tRtcTimeRdbk);//回讀當(dāng)前時(shí)間

my_printf("24FMT: %d:%d:%d\n", tRtcTimeRdbk.iHour, tRtcTimeRdbk.iMin, tRtcTimeRdbk.iSec);

csi_rtc_change_fmt(RTC, RTC_12FMT);//修改時(shí)間模式為12小時(shí)制

while(1)

{

csi_rtc_get_time(RTC,? &tRtcTimeRdbk);

if(wSec != tRtcTimeRdbk.iSec )?

{

wSec = tRtcTimeRdbk.iSec;

my_printf("%d:%d:%d pm= %d\n", tRtcTimeRdbk.iHour, tRtcTimeRdbk.iMin, tRtcTimeRdbk.iSec, tRtcTimeRdbk.iPm);

}

}

}

經(jīng)過2小時(shí)測(cè)試,RTC精度穩(wěn)定可好

關(guān)鍵詞: 時(shí)間模式 當(dāng)前時(shí)間 開始工作 時(shí)間格式 實(shí)時(shí)時(shí)鐘

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2018 創(chuàng)投網(wǎng) - 670818.com All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖I(lǐng)CP備2022009963號(hào)-3