作者:宋老师,华清远见嵌入式学院讲师。

1.1 RTC介绍

在 一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电 路,典型的就是只需要一个高精度的32.768kHz晶体和电阻电容等,如图10-8所示。


图10-8 RTC外接电路

1.2 RTC控制器

实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC
可以通过STRB/LDRB 指令将8 位BCD 码数据送至CPU。这些BCD 数据包括秒、分、时、日期、星期、月和年。RTC
单元通过一个外部的32.768kHz晶振提供时钟。RTC具有定时报警的功能,如图10-9所示。RTC 控制器功能说明:


图10-9 RTC控制器

时钟数据采用BCD 编码。
        能够对闰年的年月日进行自动处理。
        具有告警功能,当系统处于关机状态时,能产生告警中断。
        具有独立的电源输入。
        提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟。

1.3 RTC控制器寄存器详解

如表10-9所示为相关寄存器描述。

表10-9 RTC控制寄存器

RTCCON 描述 复位值
保留 [31:9] 保留 0
TICEN [8] 嘀嗒计时器
0 = 禁止
1 = 使能
0
TICCKSEL [7:4] 嘀嗒计时器子时钟源选择
4’b0000 = 32768 Hz  4’b0001 = 16384 Hz
4’b0010 = 8192 Hz   4’b0011 = 4096 Hz
4’b0100 = 2048 Hz   4’b0101 =1024 Hz
4’b0110 =512 Hz     4’b0111 =256 Hz
4’b1000 =128 Hz     4’b1001 =64 Hz
4’b1010 =32 Hz      4’b1011 =16 Hz
4’b1100 =8 Hz       4’b1101 =4 Hz
4’b1110 =2 Hz       4’b1111 =1 Hz
4’b0000
CLKRST [3] RTC时钟计数复位
0 = 不复位
1 = 复位
0
CNTSEL [2] BCD计数选择
0 = 分配 BCD 计数
1 = 保留
0
CLKSEL [1] BCD 时钟选择
0 = XTAL 1/ divided clock
1 = 保留(XTAL 供频)
0
RTCEN [0] RTC控制使能
0 = 禁止
1 = 使能
0

如表10-10所示为BCD值寄存器描述。

表10-10  BCD值寄存器

BCDSEC 描述 复位值
保留 [31:7] 保留 -
SECDATA [6:4] BCD 值
0~5
-
[3:0] 0~9 -

1.4 实验11 实时时钟RTC实验

1.4.1 实验目的

了解 RTC的硬件控制原理及设计方法;
        掌握 S5PV210 处理器的RTC模块程序设计方法(计时功能、闹钟功能、时间片功能);

1.4.2 实验原理

实时时钟(RTC)单元可以在当系统电源关闭后通过备用电池工作。RTC可以通过使用STRB/LDRB
ARM操作发送 8
位二-十进制交换码(BCD)值数据给CPU。这些数据包括年、月、日、星期、时、分和秒的时间信息。根据上面阐述RTC的工作原理和RTC的寄存器的介
绍。对相应的寄存器读写就可以实现修改时间和现实时间。

1.4.3 实验内容

1、 RTC设计步骤
        1) 系统复位后在 RTC 控制程序中必须设置为1来使能数据的读/写。
        2) 设置RTC当前时钟时间。
        3) 同样的在掉电前,RTCEN位应该清除为0 来预防误写入RTC寄存器中。
        4) 读取年、月、日等相关寄存器的数据显示到屏幕上。

2、 看门软件程序设计

下面的代码实现了一个设置RTC的年月日、时分秒,并将其读出的功能。

#include "s5pv210.h"

void rtc_init(void)
        {
                RTC.RTCCON = 0X01; //时钟控制器 使能RTC控制
                RTC.BCDSEC = 0x59; //秒控制器
                RTC.BCDMIN = 0x56; //分控制器
                RTC.BCDHOUR = 0x16; //时控制器
                RTC.BCDDAY = 0x12; //日控制器
                RTC.BCDDAYWEEK = 0X05; //星期控制器
                RTC.BCDMON = 0x10; //月控制器
                RTC.BCDYEAR = 0x14; //年控制器

RTC.RTCCON = 0; //时钟控制器 使能RTC控制
        }

/********************main function*************************************/
        int main()
        {
                unsigned int i = 0;

uart0_init(); //串口初始化
                rtc_init(); //RTC 初始化

while(1) //循环打印时钟
                {
                        printf("year 20%x : mon %x : date %x :day
%d ", RTC.BCDYEAR, RTC.BCDMON, RTC.BCDDAY, RTC.BCDDAYWEEK);
                        printf("hour %x : min %x : sec %x\n", RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
                        for(i = 0; i < 1500000; i++);
                }
                return 0;
        }

1.4.4 实验步骤

实验操作步骤请参考第5.4.4或7.3.4章节,

光盘实验源码路径:华清远见-CORTEXA8资料2\实验资料\1. ARM体系结构与接口技术部分\14-rtc

1.4.5 实验现象

Debug 调试点击运行按钮 ,在调试助手接收区你可以看到终端打印信息如图所示。RTC时钟的秒数据是在一秒一秒的增加。


图 打印实时时钟信息

文章来源:华清远见嵌入式学院原文地址:http://www.embedu.org/Column/Column867.htm

更多相关嵌入式免费资料查看华清远见讲师博文>>

RTC实时时钟的更多相关文章

  1. stm32——RTC实时时钟

    stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自19 ...

  2. 第43章 RTC—实时时钟

    第43章     RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  3. 教你在树莓派使用上RTC实时时钟,不用再担心断电后时间归零的问题,开机后自动同步RTC时钟!!!

    准备工作:1.系统建议使用官方最新的镜像文件 2.RTC时钟模块板(I2C接口)建议使用DS1307时钟模块,或者RTC时钟模块RTC时钟模块: 大家知道arduino的电平是5V,树莓派是3.3V, ...

  4. 第43章 RTC—实时时钟—零死角玩转STM32-F429系列

    第43章     RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  5. RTC实时时钟驱动

    RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去. RTC通过STRB/LDRB这两个ARM指令向CP ...

  6. RTC实时时钟-备份区域BKP--原理讲解

    RTC(Real Time Clock):实时时钟 BCD码:用4位2进制来表示10以内的十进制的形式. RTC的时钟源:LSE(32.768KHZ).HSE_RTC.LSI.经过一个精密校准(RTC ...

  7. stm32 rtc 实时时钟

    STM32的实时时钟是一个独立的定时器 通常会在后备区域供电端加一个纽扣电池,当主电源没有电的时,RTC不会停止工作 若VDD电源有效,RTC可以触发秒中断.溢出中断和闹钟中断 备份寄存器BKP 备份 ...

  8. 【iCore3 双核心板】例程十:RTC实时时钟实验——显示日期和时间

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHuZcnc iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  9. 【iCore4 双核心板_ARM】例程十:RTC实时时钟实验——显示时间和日期

    实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ RTC_TimeTypeDef sTime; RTC_DateTypeDef sDate; ; ...

随机推荐

  1. maven File encoding has not been set

    原pom.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  2. mysql无法远程连接的解决方法

        在阿里云服务器上安装好MySQL后,首先想到的就是安装一款工具来管理数据库,一开始选择了phpMyAdmin,这个工具安装很简单,只要解压到能访问的目录下就行了.在浏览器中访问phpMyAdm ...

  3. Codeforces Round #369 (Div. 2) C. Coloring Trees DP

    C. Coloring Trees   ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the pa ...

  4. loj 1032 数位dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1032 思路:数位dp, 采用记忆化搜索, dp[pos][pre][have] 表示 ...

  5. ios程序后台运行设置(不是太懂)

    文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文 ...

  6. php 常见的问题

    1. this指针错误的引用变量($(php)<->*(c)) $this->inputData right wrong 2. json_encode(array) 不一定按数组关键 ...

  7. 用Access作为后台数据库支撑。

    /// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称&l ...

  8. 浏览器 - Firefox开发者附加组件

    Firefox开发者版本下载地址: https://www.mozilla.org/zh-CN/firefox/channel/desktop/#developer 教程: https://devel ...

  9. WebAPI身份验证

    对WebAPI接口的开放当然要做控制,需要身份验证如何做到呢. 进行身份验证后的 服务器拒绝了访问! 第一步添加一个CustomHandler.cs的类 1: using System; 2: usi ...

  10. json 转化

    1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码代码如下:     JSONArray array = JSONArray.fromObject(userlist);    S ...