RTC实时时钟
作者:宋老师,华清远见嵌入式学院讲师。
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/ ![]() 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实时时钟的更多相关文章
- stm32——RTC实时时钟
stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自19 ...
- 第43章 RTC—实时时钟
第43章 RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...
- 教你在树莓派使用上RTC实时时钟,不用再担心断电后时间归零的问题,开机后自动同步RTC时钟!!!
准备工作:1.系统建议使用官方最新的镜像文件 2.RTC时钟模块板(I2C接口)建议使用DS1307时钟模块,或者RTC时钟模块RTC时钟模块: 大家知道arduino的电平是5V,树莓派是3.3V, ...
- 第43章 RTC—实时时钟—零死角玩转STM32-F429系列
第43章 RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...
- RTC实时时钟驱动
RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去. RTC通过STRB/LDRB这两个ARM指令向CP ...
- RTC实时时钟-备份区域BKP--原理讲解
RTC(Real Time Clock):实时时钟 BCD码:用4位2进制来表示10以内的十进制的形式. RTC的时钟源:LSE(32.768KHZ).HSE_RTC.LSI.经过一个精密校准(RTC ...
- stm32 rtc 实时时钟
STM32的实时时钟是一个独立的定时器 通常会在后备区域供电端加一个纽扣电池,当主电源没有电的时,RTC不会停止工作 若VDD电源有效,RTC可以触发秒中断.溢出中断和闹钟中断 备份寄存器BKP 备份 ...
- 【iCore3 双核心板】例程十:RTC实时时钟实验——显示日期和时间
实验指导书及代码包下载: http://pan.baidu.com/s/1jHuZcnc iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore4 双核心板_ARM】例程十:RTC实时时钟实验——显示时间和日期
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ RTC_TimeTypeDef sTime; RTC_DateTypeDef sDate; ; ...
随机推荐
- macosx安装MySQLdb
折腾了半天,记录一下. 先按照这个步骤安装mysql-python 如果python setup.py install 时候出现clang 错误,运行 python -E setup.py insta ...
- 对服务器的ftp端口进行修改
对服务器的ftp端口进行了修改,把21端口改了,比如221端口,就这样用221连接的时候,连接登录成功,但打不开目录,为何,总结如下: 1.完成一个FTP的传输过程不仅仅只需要21一个端口,而是2个端 ...
- 设置SecureCRT会话的缓冲区大小
转自:http://blog.csdn.net/imxiangzi/article/details/7457703 在使用SecureCRT操作设备时,默认的回滚行数为500行.可以通过打开[选项]- ...
- Java 类装载器
类装载器 基本概念: 顾名思义,类加载器(class loader)用来把Java 类动态的加载到 Java 虚拟机中.也就是说当程序需要某个类时,类加载器就把这个类的二进行加入到虚拟机中. 类加载器 ...
- Linux系统安装及初始化(ubuntu14.04)
Windows 7下硬盘安装Ubuntu 14.04图文教程 Ubuntu 官方已经发布了正式版的 Ubuntu 14.04 LTS,并宣称这是为云计算准备的版本.该版本在云平台和伸缩环境的可靠性.性 ...
- Zigzag convert
public static String Convert(String s,int row) { char[] c=s.toCharArray(); int len=s.length(); Strin ...
- [Liferay6.2]核心配置文件portal.properties
portal.properties是liferay中一个非常核心的配置文件.我们可以在liferay源代码或者解压liferay部署包中的portal-impl.jar中获得.以liferay6.2为 ...
- java基础之——类的初始化顺序
由浅入深,首先,我们来看一下,一个类初始化有关的都有些啥米: 静态成员变量.静态代码块.普通成员变量.普通代码块.构造器.(成员方法?貌似跟初始化没有啥关系) 现在我们来看看她们的初始化顺序, 从性质 ...
- 【POI word】使用POI实现对Word的读取以及生成
项目结构如下: 那第一部分:先是读取Word文档 package com.it.WordTest; import java.io.FileInputStream; import java.io.Fil ...
- ROC曲线绘制
ROC 曲线绘制 个人的浅显理解:1.ROC曲线必须是针对连续值输入的,通过选定不同的阈值而得到光滑而且连续的ROC曲线,故通常应用于Saliency算法评价中,因为可以选定0~255中任意的值进行阈 ...