S3C2440A的实时时钟.ppt

上传人:小飞机 文档编号:6518043 上传时间:2023-11-08 格式:PPT 页数:35 大小:498.50KB
返回 下载 相关 举报
S3C2440A的实时时钟.ppt_第1页
第1页 / 共35页
S3C2440A的实时时钟.ppt_第2页
第2页 / 共35页
S3C2440A的实时时钟.ppt_第3页
第3页 / 共35页
S3C2440A的实时时钟.ppt_第4页
第4页 / 共35页
S3C2440A的实时时钟.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《S3C2440A的实时时钟.ppt》由会员分享,可在线阅读,更多相关《S3C2440A的实时时钟.ppt(35页珍藏版)》请在三一办公上搜索。

1、机电工程学院自控系 侯叶,第七章 S3C2440A的实时时钟,主要内容,7.1 实时时钟在嵌入式系统中的作用7.2 实时时钟操作7.3 实时时钟相关寄存器,7.1 实时时钟在嵌入式系统中的作用,在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日。即使系统处于关机状态下,它也能够正常工作(通常采用后备电池供电)。在嵌入式系统中,实时时钟主要用来显示时间。实时时钟(RTC)可以通过使用STRB/LDRB ARM操作发送8位二-十进制BCD值数据给CPU。这些数据包括年、月、日、星期、时、分和秒的时间信息。RTC单元工作在外部32.768kHz晶振并且可以执行闹钟功能。特

2、性:BCD数:年、月、日、星期、时、分和秒 闰年发生器 闹钟功能:闹钟中断或从掉电模式唤醒 已解决的2000年问题 独立电源引脚(RTCVDD)支持RTOS内核时钟节拍(tick)的毫秒节拍时间中断,7.2 实时时钟操作,闰年发生器:闰年发生器能够基于BCDDATE、BCDMON和BCDYEAR的数据,从28、29、30或31中决定哪个是每月的最后日。此模块决定最后日时会考虑闰年因素。8位计数器只能够表示为2个BCD数字,因此其不能判决“00”年(最后两位数为0的年份)是否为闰年。例如,其不能判别1900和2000年。请注意:1900年不是闰年,而2000年是闰年。,7.2 实时时钟操作,读/

3、写寄存器:为了写RTC模块中的BCD寄存器,RTCCON寄存器的位0必须设置为高。为了显示年、月、日、时、分和秒,CPU应该分别读取RTC模块中的各寄存器中的数据。然而因为读取了多个寄存器,可能存在1秒的偏差。例如,当用户从BCDYEAR到BCDMIN寄存器读取,其结果假定为2059(年)、12(月)、31(日)、23(时)和59(分)。当用户读取BCDSEC寄存器并且值的范围是从1到59(秒),这没有问题,但是如果该值为0秒,则年、月、日、时和分可能要变为2060(年)、1(月)、1(日)、0(时)和0(分),因为存在着1秒的偏差。在这种情况中,如果BCDSEC为0则应该重新从BCDYEAR

4、到BCDSEC读取。,7.2 实时时钟操作,备用电池操作:RTC逻辑可以由备用电池驱动,如果系统电源关闭,由RTCVDD引脚供电给 RTC模块。当关闭了电源,则应该阻塞掉CPU和RTC逻辑的接口,而备用电池只驱动振荡电路和BCD计数器以最小化功耗。闹钟功能:RTC在掉电模式中或正常工作模式中通过指定时间产生一个闹钟信号。在正常工作模式中,只激活闹钟中断(INT_RTC)信号。在掉电模式中,除了INT_RTC被激活之外还激活电源管理唤醒(PMWKUP)信号。,实时时钟控制(RTCCON)寄存器节拍时间计数(TICNT)寄存器RTC闹钟控制(RTCALM)寄存器闹钟秒数据(ALMSEC)寄存器闹钟

5、分数据(ALMMIN)寄存器闹钟时数据(ALMHOUR)寄存器闹钟日数据(ALMDATE)寄存器闹钟月数据(ALMMON)寄存器闹钟年数据(ALMYEAR)寄存器BCD秒(BCDSEC)寄存器BCD分(BCDMIN)寄存器BCD 时(BCDHOUR)寄存器BCD日(BCDDATE)寄存器BCD星期(BCDDAY)寄存器BCD月(BCDMON)寄存器BCD年(BCDYEAR)寄存器,7.3 实时时钟相关寄存器,7.3 实时时钟相关寄存器,实时时钟控制(RTCCON)寄存器,7.3 实时时钟相关寄存器,节拍时间计数(TICNT)寄存器,7.3 实时时钟相关寄存器,RTC闹钟控制(RTCALM)寄存

6、器,7.3 实时时钟相关寄存器,闹钟秒数据(ALMSEC)寄存器,7.3 实时时钟相关寄存器,闹钟分数据(ALMMIN)寄存器,7.3 实时时钟相关寄存器,闹钟时数据(ALMHOUR)寄存器,7.3 实时时钟相关寄存器,闹钟日数据(ALMDATE)寄存器,7.3 实时时钟相关寄存器,闹钟月数据(ALMMON)寄存器,7.3 实时时钟相关寄存器,闹钟年数据(ALMYEAR)寄存器,7.3 实时时钟相关寄存器,BCD秒(BCDSEC)寄存器,7.3 实时时钟相关寄存器,BCD分(BCDMIN)寄存器,7.3 实时时钟相关寄存器,BCD 时(BCDHOUR)寄存器,7.3 实时时钟相关寄存器,BCD

7、日(BCDDATE)寄存器,7.3 实时时钟相关寄存器,BCD星期(BCDDAY)寄存器,7.3 实时时钟相关寄存器,BCD月(BCDMON)寄存器,7.3 实时时钟相关寄存器,BCD年(BCDYEAR)寄存器,实验五、系统时钟实验,一、实验目的了解实时时钟在嵌入式系统中的作用;掌握实时时钟的使用。二、实验仪器 JXARM9-2440教学实验箱、ADT1000仿真器和ADT IDE集成开发环境、串口连接线、PC机。三、实验原理在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时分秒和年月日;即使在系统处于关机状态下它也能够正常工作(通常采用后备电池供电)。,/*包含文件*/#includ

8、e def.h#include 2410lib.h#include option.h#include 2410addr.h#include interrupt.h/*表示日期、时间的数据结构*/typedef struct ST_DATEshort year;/年charmon;/月charday;/日charweek_day;/星期charhour;/时charmin;/分charsec;/秒 st_date;/*全局变量*/int led_index=0;int ext0_count=0;,/*functions*/void rtc_tick_isr(void)_attribute_(in

9、terrupt(IRQ);void rtc_int_isr(void)_attribute_(interrupt(IRQ);/*/Function name:rtc_set_date/Description:修改实时时钟当前时间、日期/Return type:void/Argument:p_date,待设置的日期*/void rtc_set_date(st_date*p_date)rRTCCON=0 x01;rBCDYEAR=p_date-year;rBCDMON=p_date-mon;rBCDDAY=p_date-day;rBCDDATE=p_date-week_day;rBCDHOUR=p

10、_date-hour;rBCDMIN=p_date-min;,四、参考程序,rBCDSEC=p_date-sec;rRTCCON=0 x00;/*/Function name:rtc_get_date/Description:获取实时时钟当前时间、日期/Return type:void/Argument:p_date,返回日期的指针*/void rtc_get_date(st_date*p_date)rRTCCON=0 x01;p_date-year=rBCDYEAR;p_date-mon=rBCDMON;p_date-day=rBCDDAY;p_date-week_day=rBCDDATE;

11、p_date-hour=rBCDHOUR;p_date-min=rBCDMIN;p_date-sec=rBCDSEC;rRTCCON=0 x00;,/*/Function name:rtc_tick_init/Description:初始化S3C2440的TICK定时器/Return type:void/Argument:tick,设置的TICK频率(时钟滴答的周期为(1+tick)/128秒)*/void rtc_tick_init(char tick)Irq_Request(IRQ_TICK,rtc_tick_isr);rRTCCON=0 x0;/No reset3,Merge BCD c

12、ounters2,BCD clock select XTAL1,RTC Control disable0 rTICNT=(tick/*/Function name:rtc_alarm_set/Description:设置S3C2440的告警时间以及方式/Return type:void/Argument:p_date,告警的时间/mode,告警模式*/,void rtc_alarm_set(st_date*p_date,unsigned char mode)Irq_Request(IRQ_RTC,rtc_int_isr);rRTCCON=0 x01;rALMYEAR=p_date-year;r

13、ALMMON=p_date-mon;rALMDATE=p_date-day;rALMHOUR=p_date-hour;rALMMIN=p_date-min;rALMSEC=p_date-sec;rRTCALM=mode;rRTCCON=0 x00;Irq_Enable(IRQ_RTC);/*/Function name:Main/Description:JXARM9-2440 实时时钟实验主程序/完成功能:时钟滴答:每秒钟刷新数码管显示/设置当前日期、时间,/动态刷新当前日期、时间,通过串口打印出来/时间告警功能:每分钟的第5秒告警,并进行跑马灯显示/Return type:void/Argu

14、ment:void*/void Main(void)int old_index;st_date m_date;/*配置系统时钟*/ChangeClockDivider(2,1);U32 mpll_val=0;mpll_val=(9212),/*初始化串口*/Uart_Init(0,115200);Uart_Select(0);/*打印提示信息*/PRINTF(n-实时时钟测试程序-n);PRINTF(n请将UART0与PC串口进行连接,然后启动超级终端程序(115200,8,N,1)n);PRINTF(n实时时钟测试开始n);/*采用BCD编码,如2004年需要设置的值为0 x2004*/TO

15、DO/*修改当前日期和时间*/rtc_set_date(,while(1)if(old_index!=led_index)/*每隔一秒更新一次数据*/rtc_get_date(/*清除TICK中断*/,/*(unsigned char*)0 x02000006)=0 x00;/*(unsigned char*)0 x02000004=seg7tableled_index%10;led_index+;/*/Function name:rtc_int_isr/Description:rtc中断处理程序,程序中设置每分钟的第5秒引发该中断/Return type:int/Argument:void*

16、/void rtc_int_isr(void)Irq_Clear(IRQ_RTC);/*清除RTC中断*/if(ext0_count,五、实验内容及步骤(一)学习与分析实验例程,学习时钟寄存器的设置;(二)1、补充程序,设置与修改当前的日期和时间;实现闹钟告警功能(设05S时报警),使能秒时钟告警;2、将时分秒在数码管上显示出来。3、自行开发。步骤:参照模板工程rtc(modulesrtcrtc.apj),新建一个工程rtc,添加相应的文件,并修改rtc的工程设置;创建main.c并加入到工程rtc中;根据内容编程。编译rtc,下载程序并运行,通过超级终端和数码管看输出结果。,六、按要求写出实验报告1、实验目的2、实验原理3、实验内容4、实验步骤5、实验程序6、结果及分析7、实验总结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号