0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文搞懂Cortex-A9 RTC(上)

jf_78858299 来源:土豆居士 作者:土豆居士 2023-05-26 15:11 次阅读

一、RTC

RTC(Real-Time Clock) 实时时钟

RTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。

它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768kHz 晶体和电阻电容等,并且具有闹钟的功能。

二、Exynos 4412 RTC

本篇主要以Cortex-A9 soc为例讲解RTC的使用方法。

1. 特性

实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC可以通过STRB/LDRB 指令将8位BCD码数据送至CPU。这些BCD数据包括秒、分、时、日期、星期、月和年。

RTC单元通过一个外部的32.768kHz 晶振提供时钟。

RTC具有定时报警的功能。

其功能说明如下:

1 -- 时钟数据采用BCD编码。

2 -- 能够对闰年的年月日进行自动处理。

3 -- 具有告警功能,当系统处于关机状态时,能产生警告中断。

4 -- 具有独立的电源输入。

5 -- 提供毫秒级时钟中断,该中断可以用于作为嵌入式操作系统的内核时钟。

2. RTC Block

图片

RTC Block Diagram

RTC在Linux中主要实现两种功能,分别是系统掉电后的时间日期维持和时间日期报警(类似定时器)。

「1)时间日期维持功能:」

主要是由RTC实时时钟控制寄存器RTCCON进行功能的使能控制,由节拍时间计数寄存器TICNT来产生节拍时间中断来实现实时操作系统功能相关的时间和实时同步。其中对时间日期的操作实际上是对BCD码操作,而BCD码则是由一系列的寄存器组成(BCD秒寄存器BCDSEC、BCD分寄存器BCDMIN、BCD小时寄存器BCDHOUR、BCD日期寄存器BCDDATE、BCD日寄存器BCDDAY、BCD月寄存器BCDMON、BCD年寄存器BCDYEAR)。

「2)报警功能:」

主要由RTC报警控制寄存器RTC ALM进行功能使能控制,并产生报警中断。报警时间日期的设置也是对一系列的寄存器进行操作(报警秒数据寄存器ALMSEC、报警分钟数据寄存器ALMMIN、报警小时数据寄存器ALMHOUR、报警日期数据寄存器ALMDATE、报警月数据寄存器ALMMON、报警年数据寄存器ALMYEAR)。

「3)闰年发生器」

可以根据BCDDAY、BCDMON和BCDEEAR的值自动计算闰年。

3. 备用电池

备用电池可以驱动RTC逻辑。备用电池通过RTCVDD引脚向RTC块,即使系统电源关闭。如果系统关闭,您应该阻止CPU和RTC逻辑。为了减少功耗,备用电池单独驱动振荡电路和BCD计数器。

4. Alarm【报警】 功能

RTC在断电模式或正常运行模式都可以在执行的时间产生一个ALARM_INT 和ALARM_WK信号。在正常工作模式下,它会产生ALARM_INT。在断电模式下,它会ALARM_WK以及ALARM_INT信号。RTC报警寄存器(RTCALM)确定报警启用/禁用状态和报警时间设置的条件。

6. 晶振

32.768 kHz X-Tal Connection Example

图片晶振时钟频率 32.768 kHz。

图片

  1. XT_RTC_I 32.768 kHz RTC振荡器时钟输入
  2. XT_RTC_O 32.768 kHz RTC振荡器时钟输出
  3. XRTCCLKO 32.768 kHz RTC振荡器时钟输出,此信号默认关闭。可以通过设置寄存器RTCCON的CLKOUTEN字段为1来启用它。

引脚连接图:图片由电路图可知,只连接了RTC振荡器时钟输入引脚XT_RTC_I 。

三、寄存器

1. RTC寄存器组:

图片

寄存器组

2. INTP

图片设置对应的bit为1就可以清除中断。

3. RTCCON

RTCCON 描述 复位值
保留 [31:10] 保留 0
CLKOUTEN [9] 使能RTC通过XRTCCLKO输出 0 disable 1 enbale 0
TICEN [8] 嘀嗒计时器0 = 禁止1 = 使能 0
TICCKSEL [7:4] 嘀嗒计时器子时钟源选择**「4'b0000 = 32768 Hz」** 4'b0001 = 16384 Hz4'b0010 = 8192 Hz4'b0011 = 4096 Hz4'b0100 = 2048 Hz4'b0101 =1024 Hz4'b0110 =512 Hz4'b0111 =256 Hz4'b1000 =128 Hz4'b1001 =64 Hz4'b1010 =32 Hz 4'b1011 =16 Hz4'b1100 =8 Hz4'b1101 =4 Hz4'b1110 =2 Hz4'b1111 =1 Hz 4'b0000
CLKRST [3] RTC时钟计数复位0 = 不复位1 = 复位 0
CNTSEL [2] BCD计数选择 0 = 分配 BCD 计数 1 = 保留 0
CLKSEL [1] BCD 时钟选择0 = XTAL 1/2 divided clock1 = 保留(XTAL 供频) 0
RTCEN [0] RTC控制使能0 = 禁止1 = 使能 0
  1. RTCCON寄存器由10位组成,如控制BCD SEL读/写启用的CTLEN, CNTSEL、CLKRST、TICKSEL、TICEN用于测试,CLKOUTEN用于RTC时钟输出控制。
  2. CTLEN位控制CPU和RTC之间的所有接口。因此,您应该在RTC控件中将其设置为“1”,在系统重置后启用数据写入的例程。为了防止无意中写入BCD计数器寄存器,应该关闭电源前将CTLEN位清除为0。
  3. CLKRST是2^15^时钟分频器的计数器复位。在设置RTC时钟之前,应重置215时钟分频器以获得精确的RTC操作。

四、RTC的操作

1. 设置时间

「举例:」 我们要将当前时间设置为 「2020年11月11日, 15:24:50」

1) 先将RTC控制使能开启,即RTCCON[0]置为1;2)然后将时间对应的BCD格式数值,设置到应对的寄存器,BCDYEAR 、BCDMON 、BCDDAY 、BCDHOUR 、BCDMIN 、BCDSEC;3) 将RTCCON[0]置为0,防止误操作修改了时间;4)如果我们要访问当前时间,可以直接读取寄存器BCDYEAR 、BCDMON 、BCDDAY 、BCDHOUR 、BCDMIN 、BCDSEC。

void rtc_init(void)
{
 RTCCON = 1;//使能RTC控制写功能
 RTC.BCDYEAR = 0x20;// 2020年11月11日, 15:24:50.以BCD码格式写入
 RTC.BCDMON = 0x11;
 RTC.BCDDAY = 0x11;
 RTC.BCDHOUR = 0x15;
 RTC.BCDMIN = 0x24;
 RTC.BCDSEC = 0x50;
 RTCCON = 0;//关闭RTC控制写功能
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 集成电路
    +关注

    关注

    5371

    文章

    11208

    浏览量

    358820
  • 时钟芯片
    +关注

    关注

    2

    文章

    240

    浏览量

    39743
  • RTC
    RTC
    +关注

    关注

    2

    文章

    511

    浏览量

    65948
  • 电阻电容
    +关注

    关注

    1

    文章

    40

    浏览量

    9475
收藏 人收藏

    评论

    相关推荐

    Cortex-A9处理器的精妙应用

    卡片电脑等等。并且通过开发板内的资料文档可快速开发产品,缩短研发周期。 Cortex-A9代表——Rayeager PX2开发板 、微结构  1.Cortex-A9两种微架构  可扩展
    发表于 11-03 17:02

    求ucosii 移植到cortex-A9教程

    想要把ucosii移植到cortex-A9,因为水平有限,希望有人帮忙,我们用的是DS-5软件进行移植,最好是有个工程!!谢谢!!!
    发表于 10-13 15:43

    AM4379 Cortex-A9试用体验

    【创龙AM4379 Cortex-A9试用体验】1.AM4379开发板开箱+电创龙TI AM4379 ARM Cortex A9开发板【创龙AM4379
    发表于 08-29 17:45

    ARM Cortex-A9的具体开发流程有哪些

    Linux的常用命令该怎样去使用呢?ARM Cortex-A9的具体开发流程有哪些?ARM Cortex-A9的开发流程与51的有什么不同?
    发表于 11-12 07:53

    ARM Cortex-A9 MPCore 测试芯片技术手册

    ARM Cortex-A9 MPCore 测试芯片技术手册
    发表于 08-02 19:07

    Cortex-A9技术参考手册

    Cortex-A9处理器是款高性能、低功耗的ARM宏单元,具有提供完整虚拟内存功能的级高速缓存子系统。 Cortex-A9处理器实现ARMv7-
    发表于 08-17 06:53

    ARM Cortex-A9 MPCore

    The ARM Cortex-A9 MPCore multicore processor integrates the proven and highly successful ARM MPCore
    发表于 07-11 09:47 89次下载

    晶晨推出集成了ARM CORTEX-A9的芯片-AML8726-M

    ARM CORTEX-A9内置1080p高清视频解码器、ARM Cortex-A9处理器和Mali&trade -400 3D图像处理器的AML8726-M片系统为成本敏感的多媒体应用提供出色的性能支持。
    发表于 06-19 15:59 3517次阅读

    Cortex-A9处理器系列

    Cortex-A9处理器系列,有需要的朋友下来看看。
    发表于 01-22 13:57 27次下载

    收获块功能强大价值的Cortex-A9 SoC开发板

    秋天是收获的季节,您是否想靠自己的实力收获块功能强大价值150美元的Cortex-A9 SoC 开发板呢?
    的头像 发表于 09-22 09:59 7331次阅读

    Cortex-A9 MBIST ControllerTechnical Reference

    Cortex-A9 MBIST ControllerTechnical Reference
    发表于 10-26 08:59 8次下载
    <b class='flag-5'>Cortex-A9</b> MBIST ControllerTechnical Reference

    Altera SoC 合作伙伴研讨会2013演讲PPT——ARM Cortex-A9

    Altera SoC 合作伙伴研讨会2013演讲PPT——ARM Cortex-A9
    发表于 10-26 09:04 13次下载
    Altera SoC 合作伙伴研讨会2013演讲PPT——ARM <b class='flag-5'>Cortex-A9</b>

    cortex-a9是什么处理器_cortex-a9处理器介绍

    本文首先介绍了cortex-a9是什么处理器,其次介绍了cortex-a9处理器的单核与多核,最后阐述了cortex-a9处理器的特点及优势。
    发表于 04-18 16:41 2.5w次阅读

    ARM Cortex-A9芯片技术参考手册

    ARM Cortex-A9技术参考手册(TRM)描述了CortexA9处理器的单处理器版本,包括可选的预加载引擎。寄存器、指令、缓存、内存和内存接口指南。
    发表于 05-09 08:00 68次下载
    ARM <b class='flag-5'>Cortex-A9</b>芯片技术参考手册

    搞懂Cortex-A9 RTC(下)

    RTC是集成电路,通常称为时钟芯片。在个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。 它的外围
    的头像 发表于 05-26 15:21 558次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b><b class='flag-5'>Cortex-A9</b> <b class='flag-5'>RTC</b>(下)