版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
实时时钟思维导图2学习目标1.理解RTC硬件控制原理;2.掌握RTC功能特性。3技能目标41.具有RTC寄存器的配置能力;2.具有编程实现RTC的能力。CONTENTS目录8.1RTC概述8.2RTC寄存器8.3BCD码8.4RTC应用实例568.1
RTC概述嵌入式系统中,通常采用实时时钟(Real-timeClock,RTC)来提供可靠的系统时间,包括秒、分、时、星期、日、月和年,支持闰年自动修正,并且在系统处于关机状态下RTC也能够正常工作,通常采用后备电池(典型电压1.8-3.3v)供电,可在系统主电源关闭时维持计时连续性。
RTC单元运行与数据保持RTC单元可以通过备用电池供电,即使系统主电源关闭,仍可持续运行,确保时间、日期等关键数据不丢失。
RTC单元时间精度RTC单元以32.768kHz晶振为基准时钟,通过内置的15级分频器(215=32768)将频率分频至1Hz时,CPU通过BCD码读写时间信息。
RTC单元报警功能框图RTC具有定时报警的功能,RTC功能框图如图8-1所示。8.1
RTC概述外部32.768KHz晶振分频器时钟滴答产生模块时间寄存器组控制与复位模块闹钟与中断模块时间更新流程:32.768kHz晶振→215分频→1Hz信号→驱动SEC寄存器自增→逐级进位至年寄存器8.1
RTC概述81.RTC简介组成图8-1Exynos4412的RTC的功能框图8.1
RTC概述92.Exynos4412RTC定时器特点时钟数据采用BCD编码。能够对闰年的年月日进行自动处理。具有告警功能,当系统处于关机状态时,能产生告警中断。具有独立的电源输入。提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟。108.2
RTC寄存器1.RTC控制寄存器表8-1RTCCON寄存器(地址=0x10070040)2.RTC时间值寄存器(BCDSEC、BCDMIN、BCDHOUR等)RTC时间值寄存器,用来存放RTC时钟当前时间,年、月、日、时、分、秒、星期值每个单位都对应一个寄存器来存放。寄存器里的时间值都是使用BCD码来表示的。RTC时间值寄存器相对简单,以存放当前秒的数值的寄存器BCDSEC为例,如表8-2所示。表8-2BCDSEC寄存器(地址=0x10070000)8.2
RTC寄存器11
计算机内毫无例外地都使用二进制数进行运算,但通常采用八进制数和十六进制数的形式进行读写。对于计算机技术专业人员,要理解这些数的含义是没有问题的,但对非专业人员却不是那么容易。由于日常生活中,人们最熟悉的数制是十进制,因此专门规定了一种二进制的十进制码,称为BCD码,它是一种以二进制数表示的十进制数码。BCD码(BinaryCodedDecimal)这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6,7,8,9十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9这十个数符。最常用的BCD码称为8421BCD码,8、4、2、1分别是4位二进制数的位取值。十进制数和8421BCD编码的对应关系表如表8-3所示。表8-3BCD码表十进制数:75.4BCD码:7对应0111,5对应0101,4对应01008421BCD码是:01110101.0100BCD码:10000101.0101十进制数:1000对应8,0101对应5,0101对应5结果:85.5(D)。8.3
BCD码12138.4
RTC应用实例8.4.1
RTC定时器实验1.实验目的了解RTC的硬件控制原理及设计方法;掌握Exynos4412处理器的RTC模块程序设计方法(计时功能、闹钟功能、时间片功能)。2.实验原理
实时时钟(RTC)单元可以在当系统电源关闭后通过备用电池工作。RTC可以通过使用STRB/LDRB操作发送8位二——十进制交换码(BCD)值数据给CPU。这些数据包括年、月、日、星期、时、分和秒的时间信息。根据上面阐述RTC的工作原理和RTC寄存器的介绍,对相应的寄存器读写就可以实现修改时间和显示时间。148.4
RTC应用实例8.4.2
RTC定时器实验1.RTC设计步骤(1)系统复位后在RTC控制寄存器中的CTLEN必须设置为1来使能数据的读/写。(2)设置RTC当前时钟时间。(3)同样的在掉电前,CTLEN位应该清除为0来预防误写入RTC寄存器中。(4)读取年、月、日等相关寄存器的数据显示到屏幕上。158.4
RTC应用实例8.4.2
RTC定时器实验2.程序设计(1)下面的代码实现了一个RTC的年月日、时分秒读出的功能。voidRTC_init(){ RTCCON=0x1; //EnablesRTCcontrol RTC.BCDSEC=0x11; RTC.BCDMIN=0x11; RTC.BCDHOUR=0x11; RTC.BCDDAY=0x11; RTC.BCDWEEK=0x11; RTC.BCDMON=0x11; RTC.BCDYEAR=0x11; RTCCON=0x0; //DisablesRTCcontrol}/*-------------------------MAINFUNCTION------------------------------*/intmain(void){ GPX2.CON=0x1<<28; uart_init(); RTC_init(); printf("\n******RTC*******\n"); while(1) { //Turnon GPX2.DAT=GPX2.DAT|0x1<<7; mydelay_ms(500); printf("year20%x:month%x:date%x:day%x",RTC.BCDYEAR,RTC.BCDMON,RTC.BCDDAY,RTC.BCDWEEK); printf("hour%x:min%x:sec%x\n",RTC.BCDHOUR,RTC.BCDMIN,RTC.BCDSEC); //Turnoff GPX2.DAT=GPX2.DAT&~(0x1<<7); mydelay_ms(500); } return0;}168.4
RTC应用实例8.4.2
RTC定时器实验2.程序设计(2)下面的代码实现了一个20秒定时功能。
通过ALARM相关寄存器设置定时的规则,20秒后产生中断。在中断处理函数中打印出中断信息。RTC的“定时打铃”功能也是很常用的。voiddo_irq(void){ intirq_num; irq_num=(CPU0.ICCIAR&0x1FF); printf("\n*******RTC_ALARMinterrupt!!********\n"); RTCINTP|=0x2; //Endofinterrupt CPU0.ICCEOIR=(CPU0.ICCEOIR&~(0x1FF))|irq_num;}voidRTC_init(){ RTCCON=0x1; //EnablesRTCcontrol RTC.BCDSEC=0x11; RTC.BCDMIN=0x11; RTC.BCDHOUR=0x11; RTC.BCDDAY=0x11; RTC.BCDWEEK=0x11; RTC.BCDMON=0x11; RTC.BCDYEAR=0x11; RTCCON=0x0; //DisablesRTCcontrol}178.4
RTC应用实例8.4.2
RTC定时器实验2.程序设计(2)下面的代码实现了一个20秒定时功能。
通过ALARM相关寄存器设置定时的规则,20秒后产生中断。在中断处理函数中打印出中断信息。RTC的“定时打铃”功能也是很常用的。voidrtc_alarm_init(){ RTCALM.ALM=1;//Disablesalarmglobal,Enablessecondalarm RTCALM.SEC=0x20;//BCDvalueforalarmsecond,20'' RTCALM.ALM|=1<<6;//Enablesalarmglobal}/*-------------------------MAINFUNCTION------------------------------*/intmain(void){GPX2.CON=0x1<<28;uart_init();RTC_init();/*********************GICinterruptcontroller:*********************///EnablesthecorrespondinginterruptSPI44,RTC_ALARMICDISER.ICDISER2|=1<<12;//ICDISER2:spi32[bit0]~63[bit31],44-32=[bit12]CPU0.ICCICR|=0x1;//GlobalenableforsignalingofinterruptsCPU0.ICCPMR=0xFF;//Theprioritymasklevel.Priorityfilter.thresholdICDDCR=1;//Bit1:GICmonitorstheperipheralinterruptsignalsand//forwardspendinginterruptstotheCPUinterfaces2ICDIPTR.ICDIPTR19=(ICDIPTR.ICDIPTR19&~(0xFF))|0x1; //SPI44interrupts//aresenttoprocessor0rtc_alarm_init();printf("\n******RTC_ALARM*******\n");while(1){//TurnonGPX2.DAT=GPX2.DAT|0x1<<7;mydelay_ms(500);printf("year20%x:month%x:date%x:day%x",RTC.BCDYEAR,RTC.BCDMON,RTC.BCDDAY,RTC.BCDWEEK);printf("hour%x:min%x:sec%x\n",RTC.BCDHOUR,RTC.BCDMIN,RTC.BCDSEC);//TurnoffGPX2.DAT=GPX2.DAT&~(0x1<<7);mydelay_ms(500);} return0;}188.5
本章小结
本章详细介绍了嵌入式系统中实时时钟(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【三年级下册英语】三下英语人教版连词成句专项练习共9天带答案
- 2025年重庆建工第二建设有限公司招聘笔试历年参考题库附带答案详解
- 2025年贵州锦麟化工有限责任公司公开招聘13人笔试历年参考题库附带答案详解
- 2025年福州城市建设投资集团有限公司招聘笔试历年参考题库附带答案详解
- 2025年湖南浯溪发展集团有限公司公开招聘18人预笔试历年参考题库附带答案详解
- 2025年温岭市城市环境服务有限公司招聘笔试历年参考题库附带答案详解
- 2025年浙江台金融资租赁有限公司公开招聘工作人员笔试历年参考题库附带答案详解
- 2025年河北唐山滦州市河北通力公路管理有限公司招聘工作人员10名笔试历年参考题库附带答案详解
- 2025年昌邑锦盛环保能源有限公司公开招聘32人笔试历年参考题库附带答案详解
- 2025年度贵州习酒股份有限公司高校毕业生招聘660人笔试历年参考题库附带答案详解
- 2026年新社区工作者考试题及完整附答案
- 2026年学法减分题库和答案
- 2026年部编版新教材语文六年级上册全册教案设计(含教学计划)
- 营销策划 -臭宝螺蛳粉X邓超营销方案
- 民办培训机构消防安全教育课件
- 2026-2030中国白色家电行业深度调研及投资前景预测研究报告
- 宠物美容师职业技能等级认定考试复习题库(附答案)
- 输血科质控小组工作制度
- 医学生求职简历模板
- 医护人员个人防护培训
- 浙江省杭州市2026年中考模拟英语试题八套附答案
评论
0/150
提交评论