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

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

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

MSP430F5438 RTC操作實驗詳解

2oON_changxuemc ? 來源:未知 ? 作者:李倩 ? 2018-06-21 10:29 ? 次閱讀

1.模塊原理

如圖 ,RTC 由兩個分頻寄存器 RP0TS,RP1TS 對 RTOSSEL 選擇的時鐘源進行分頻,在日歷模式下,時鐘源 ACLK=32768,經(jīng)過 RP0TS,RP1TS 分別 256 和 128 分頻率后頻率為 1HZ ,提供給 32 位 RTC 寄存器時鐘源,通過 RTCSSEL 選擇 11 或者 10。每 1S ,RTCSEC(秒)加一秒,加到 60,秒從 0 開始計數(shù),RTCMIN 加 1,RTCHOUR,RTCMON ,RTCYEAR ,RTCDOW(星期),RTCDAY等 依次這樣。并且在日歷模式下,RTC 可以設置為 BCD 碼顯示在存儲器中。另外 RTC 提供鬧鐘功能,我們可以設置 Alarm 寄存器的 RTCAMIN ,RTCAHOUR,RTCADAY,RTCADOW(星期).另外 RTC 模塊也可以作為 32 位計數(shù)器使用,其原理方法和 WDT,TA 一致。

2,RTC 內(nèi)部框圖

,

3,寄存器配置

在 F5XX 單片機硬件 RTC 可以工作在計數(shù)器模式也可以工作在日歷模式,通過配置寄存器 RTCCTL01 的 RTCMODE 位來實現(xiàn)對工作模式的選擇,當選擇工作在日歷模式的時候,RT0PS 時鐘源自動選擇 ACLK,TP0PS 分頻系數(shù)自動為/256,RT1PS 時鐘源來自 RT0PS 輸出,RT1PS 分頻系數(shù)自動配置為/128,因此配置 ACLK 時鐘為 32768HZ。

鬧鐘可以配置分鐘,小時,星期,以分鐘為例子時間設置完畢后,比如 08:23 分鐘設置完畢后,將最高位為 AE 設置為 1,就會鬧鐘有效果,每個小時的第 23 分鐘鬧鐘響。

影響整個 RTC 模塊的時間的誤差和時鐘關(guān)系很大,本硬件 RTC 對時鐘可以進行校正,如寄存器。

RTCCALS 為 1,加計算,每個 LSB 加 4PPM,如果為 0,減計算,每 LSB 減 2。

RTCCTL3 寄存器中 RTCCALF 配置選擇輸出 512HZ,256HZ,1HZ 其中一個頻率,然后將 RTCCLK引腳設置為特殊引腳輸出,用示波器觀察頻率與標準比看相差多少PPM,然后通過寄存器RTCCTL2進行校正,例如我選擇的是 512HZ 頻率輸出,觀察最后的示數(shù)為 512.009HZ , 計算高出 18PPM,因此在校正時候要減去一個 18PPM,因此 RTCCTL2 中位 RTCCALS 位為 0,減計算。每 LSB 減 2,因此在 RTCCAL 中賦予數(shù)值 9。

4,實驗代碼:

#include "msp430x54x.h"

void Init_Rtc(void);

void Init_Clk(void);

void Init_System(void);

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 關(guān)看門狗

Init_System(); // 系統(tǒng)初始化

__bis_SR_register(LPM3_bits + GIE); // 進入低功耗 3

}

/************************ RTC 中斷*****************************/

#pragma vector=RTC_VECTOR

__interrupt void basic_timer(void)

{

switch(RTCIV)

{

case 2 : P1OUT ^= BIT0;break; //RTCRDYIFG

case 4 : break;

case 6 : P1OUT |= BIT1;break; //RTCAIFG

case 8 : break;

case 10 : break;

}

}

void Init_System(void)

{

Init_Clk(); //調(diào)用時鐘函數(shù)

Init_Rtc(); //RTC 初始化

P1DIR |= BIT1 + BIT0; //P1.1 P1.0 為輸出

P1OUT &= ~(BIT1 + BIT0);

}

void Init_Rtc(void)

{ // BCD 碼日歷格式輸出

RTCCTL01 = RTCBCD + RTCHOLD + RTCMODE + RTCTEV_0 ;

RTCPS0CTL = RT0PSHOLD ; //配置兩個計數(shù)器分頻

RTCPS1CTL = RT1PSHOLD ;

RTCSEC = 0x54; //初始化秒

RTCMIN = 0X59 ; //初始化分鐘

RTCHOUR =0X21; //初始化小時

RTCDOW = 0X02 ;

//RTCTIM1 = 0X0421;

RTCDAY = 0x24; //日期初始化

RTCMON = 0X11 ; //初始化月份

RTCYEAR = 0x2005; //初始化年份

RTCAMINHR = 0X0180; //鬧鐘小時和分鐘設置

RTCADOWDAY = 0X1203; //鬧鐘星期和日期設置

RTCCTL01 &= ~RTCHOLD; //打開 RTC 模塊

RTCPS0CTL &= ~RT0PSHOLD; //打開 RTCPS0CTL

RTCPS1CTL &= ~RT1PSHOLD; //打開 RTCPS1CTL

RTCCTL0 |= RTCAIE + RTCRDYIE; //打開安全訪問使能 ,鬧鐘使能

}

void Init_Clk(void)

{

P7SEL |= 0x03; //啟動 XT1

UCSCTL1 = DCORSEL_2; //DCO 范圍配置

UCSCTL4 = SELM_3 + SELA_0 + SELS_4; //設置時鐘源

while (SFRIFG1 & OFIFG) //等待時鐘系統(tǒng)正常工作

{

UCSCTL7 &= ~( XT1LFOFFG + DCOFFG);

SFRIFG1 &= ~OFIFG;

}

}

5,實驗現(xiàn)象

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

    關(guān)注

    113

    文章

    6150

    瀏覽量

    184120
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5275

    瀏覽量

    119691
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    519

    瀏覽量

    66151

原文標題:暢學多功能實驗箱 MSP430F5438 RTC 操作實驗

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    msp430f5438 1602程序求救

    調(diào)試1602程序好幾天了啊。用的是msp430f5438 真心寫了好幾個程序,網(wǎng)上找了好幾個程序,就是不好用啊,液晶亮是亮,也有方塊,就是沒有顯示啊,求大神好用的程序啊,快崩潰了,
    發(fā)表于 04-28 21:48

    如何用msp430f5438制作簡易示波器

    想要通過msp430f5438編寫一個簡單的示波器程序,波形在12864lcd上顯示,信號由信號發(fā)生器產(chǎn)生,AD轉(zhuǎn)換用定時器A溢出觸發(fā),希望哪位大神可以指導一二,謝謝了,相似的也可以,只要msp430制作就行
    發(fā)表于 05-01 11:04

    在廈門福州泉州地區(qū)找個熟悉MSP430f5438

    在廈門福州泉州地區(qū)找個熟悉MSP430f5438 指導老師!
    發(fā)表于 05-10 22:47

    MSP430F5438中文手冊

    想在正想學MSP430F5438單片機的可以拿來看看,希望對你有幫助
    發(fā)表于 05-19 10:32

    關(guān)于msp430F5438的程序

    各位大神,我想找基于msp430f5438的AD轉(zhuǎn)換然后在12864上顯示電壓的程序。。。。。請問誰有??5438的資料很難找啊,能不能介紹一些?
    發(fā)表于 08-10 11:16

    msp430f5438如何用

    如何使用msp430f5438單片機,我看著視頻寫了一個程序,下載進去沒反應, 跪求指點
    發(fā)表于 08-30 16:00

    MSP430F5438例程

    MSP430F5438程序代碼
    發(fā)表于 10-15 00:19

    MSP430F5438 求大神指導!?。?/a>

    MSP430F5438 求大神指導?。?!現(xiàn)在只是簡單看明白代碼~~~畢設題目,用這款單片機做網(wǎng)關(guān),ADC轉(zhuǎn)換,串行通信,無線模塊發(fā)送以及在TFT液晶或者單色液晶上的顯示。求解燒程序步驟如何?想先調(diào)試一下例程~~~~然后再做修改!
    發(fā)表于 03-14 11:25

    msp430f5438資料

    msp430f5438資料學習
    發(fā)表于 04-26 16:36

    MSP430F5438最多可以做到幾個UART口通信?

    MSP430F5438最多可以做到幾個UART口通信
    發(fā)表于 10-23 06:09

    MSP430F5438官方代碼庫

    MSP430單片機f5438系列官方代碼庫
    發(fā)表于 01-11 17:00 ?41次下載

    基于msp430f5438芯片的控制器

    這是一個基于msp430f5438芯片的一個控制器,控制原理,以及芯片得各個模塊的功能。
    發(fā)表于 04-28 11:51 ?3次下載

    MSP430F5438數(shù)字低頻功率放大器

    MSP430F5438數(shù)字低頻功率放大器
    發(fā)表于 03-05 15:00 ?0次下載

    msp430F5438用戶指南

    msp430F5438用戶指南
    發(fā)表于 10-12 16:43 ?38次下載

    搜集的很多msp430f5438示例代碼

    搜集的很多msp430f5438示例代碼
    發(fā)表于 05-04 14:08 ?31次下載
    搜集的很多<b class='flag-5'>msp430f5438</b>示例代碼