ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ARM接口技术——RTC实时时钟

2022-04-28 03:00:06  阅读:177  来源: 互联网

标签:RTC 接口技术 BCD RTCCON 0010 寄存器 ARM 时钟


RTC

RTC简介

RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件;

与一般元器件使用的时钟源不同,RTC一般采用精度较高的晶振作为时钟源,因为它对精度要求较高;

一般RTC为了在主电源掉电时还可以工作,需要额外加电池供电。

 

Exynos4412下的RTC控制器

Overview:

有以下关键信息:

  • Exynos4412集成的RTC需要外部通过一个32.768 kHz的高精度时钟晶振;
  • 提供BCD码,BCD码是用4 Bit 表示一个十进制数,比如12的二进制是1100,用BCD码表示就是0001 0010;
  • 提供闰年判断;
  • 提供闹铃的功能,即它不但有实际的时间,还可以设定一个时间,时间到了可以产生中断或者从低功耗模式“叫醒”;
  • 提供独立的电源引脚,一般MCU和SOC都有,但是开发板没有接入电池,也就没有使用到这个独立电源引脚;

 

RTC获取当前时间实验

RTC实验分析

RTC实时时钟框图:

 

  • 前面提到它的工作需要外部提供一个32.768 kHz的时钟晶振,然后在RTC内部有一个2^15分频的分频器,分频之后的频率正好是1Hz,这个时钟就可以给秒寄存器;
  • 秒寄存器接收到时钟后会自增,加到60的时候就会发给分寄存器,以此类推;
  • 此外还有Leap Year Generator,可以支持闰年的计算,Alarm Generator,闹铃功能。

 

RTC相关寄存器:

 

有以下寄存器:

  • BCD前缀的寄存器,用于存储实际的时间,把时间按照BCD码存储的时间信息,根据时间单位拆分成7个寄存器分别存储,这些寄存器需要用于读取;
  • ALM前缀的寄存器,用于闹铃的功能,在这些寄存器设定一个时间,当实际的时间到达ALM时间可以提供闹铃功能,这里的实验不用;
  • INTP寄存器用于挂起中断,与ALM功能一起使用,这里也用不上;
  • RTCCON用于配置RTC,需要配置;
  • 还有其它的暂时用不到。

 

需要关注的寄存器:

BCDXXX:

 

以BCDYEAR为例,它使用BCD码表示实际时间的年,只用了低12位;

比如 0000 0010 0010,即022,可以用来表示2022年;其它的BCDXXX寄存器同理。


 

RTCCON:

 

RTCCON寄存器只使用了低10位,1-9位都使用默认设置;

只需要关注第0位CTLEN:打开RTC时钟。


 

RTC实验代码

#include "exynos_4412.h"

void RTC_Init()
{
    RTCCON |= 1; /* 打开RTC设置 */

    /* 校准时间 */
    RTC.BCDYEAR = 0x22;     /* 设为022,BCD码: 0000 0010 0010 */
    RTC.BCDMON = 0x04;
    RTC.BCDDAY = 0x04;      /* week,它的日和星期弄反了 */    
    RTC.BCDWEEK = 0x28;     /* day */
    RTC.BCDHOUR = 0x02;
    RTC.BCDMIN = 0x07;
    RTC.BCDSEC = 0x50;

    RTCCON &= (~1); /* 禁止RTC设置 */
}

int main()
{
    RTC_Init();
    while(1)
    {
        printf("20%x-%x-%x %x:%x:%x", RTC.BCDYEAR,  RTC.BCDMON, RTC.BCDWEEK, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
    }
    return 0;
}

 

标签:RTC,接口技术,BCD,RTCCON,0010,寄存器,ARM,时钟
来源: https://www.cnblogs.com/zjccc/p/16201341.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有