您好,欢迎访问三七文档
实时钟RTC主要内容概述结构寄存器应用举例重点:(1)控制寄存器;(2)RTC应用一、概述RTC(实时时钟)功能:通常采用RTC来提供可靠的系统时间,包括时、分、秒、和年、月、日等;而且要求在系统处于关机状态下它也能够正常工作(后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768KHz晶振和电阻电容等。RTC应用:现在很多电子产品都有RTC功能,如电子日历(台式、壁式等)、手持数码产品(手机、电子词典、各种学习机、照相机、摄像机等)、电子计量仪表(电度表、燃气表、水表等)、家用电器(电视机、机顶盒、DVD等)等,应用非常广泛。RTC芯片:在上面所说产品,都有RTC功能的芯片,有的产品使用独立的RTC芯片,如壁式电子日历、电子计量仪表等;有的产品使用的不是独立的RTC芯片,而是RTC功能集成到了其它的芯片中,如手持数码产品等。S3C2410的RTC的特点:•时钟数据采用BCD编码•时钟数据有:秒、分、时、日、月、年、星期•能够对闰年的年月日进行自动处理•具有告警功能,当系统处于关机状态时,能产生告警中断•具有独立的电源输入•提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟二、S3C2410的RTC结构1、S3C2410的RTC结构S3C2410的RTC主要有5部分构成:时钟发生器、节拍发生器、时间与日期计数器(时分秒年月日星期)、报警发生器、控制逻辑等部分。如下图所示。XTAL1XTAL2节拍发生器时钟发生器时分秒计数器年月计数器闰年发生器日星期计数器控制逻辑时钟分频器报警发生器RTCVDDPMWKUPALMINTPWDN时钟分频器节拍发生器报警发生器掉电唤醒信号报警中断闰年发生器控制逻辑RTC秒循环复位寄存器闰年产生器•这个模块可以决定每个月的最后日期是28,29,30还是31,并可以根据是否是闰年来决定日期。•由于8位的计数器只能表示2个BCD码,因此它不能判断00年究竟是不是闰年。•例如它不能够判断1900年和2000的差别。为了解决这个问题,S3C2410内的RTC模块中有一个固定的逻辑,用来支持2000年为闰年。请注意虽然2000年是闰年,但1900年不是闰年。因此,S3C2410中00代表2000年,而不是1900年。2、S3C2410RTC的振荡电路S3C2410RTC的只需外接2个20P左右的小电容、32.768KHz的晶振即可。如下图所示。三、RTC专用寄存器S3C2410的RTC有17个专用寄存器,均需用字节读写。下表为前10个,有4个为控制寄存器,6个为报警寄存器。RegisterAddressR/WDescriptionResetValueRTCCON0x57000040/3R/WRTC控制寄存器0x0TICNT0x57000044/7R/WRTC节拍计数器0x00RTCALM0x57000050/3R/WRTC报警控制寄存器0x00RTCRST0x5700006C/FR/WRTC循环复位寄存器0x0ALMSEC0x57000054/7R/W报警秒数寄存器0x00ALMMIN0x57000058/BR/W报警分钟数寄存器0x00ALMHOUR0x5700005C/FR/W报警小时数寄存器0x00ALMDAY0x57000060/3R/W报警天(日)数寄存器0x01ALMMON0x57000064/7R/W报警月数寄存器0x01ALMYEAR0x57000068/BR/W报警年数寄存器0x00三、RTC专用寄存器S3C2410的RTC有17个专用寄存器,均需用字节读写。下表为4个控制寄存器。RegisterAddressR/WDescriptionResetValueRTCCON0x57000040/3R/WRTC控制寄存器0x0TICNT0x57000044/7R/WRTC节拍计数器0x00RTCALM0x57000050/3R/WRTC报警控制寄存器0x00RTCRST0x5700006C/FR/WRTC秒循环复位寄存器0x0本表6个寄存器:为报警日期、时间寄存器RegisterAddressR/WDescriptionResetValueALMSEC0x57000054/7R/W报警秒数寄存器0x00ALMMIN0x57000058/BR/W报警分钟数寄存器0x00ALMHOUR0x5700005C/FR/W报警小时数寄存器0x00ALMDAY0x57000060/3R/W报警天(日)数寄存器0x01ALMMON0x57000064/7R/W报警月数寄存器0x01ALMYEAR0x57000068/BR/W报警年数寄存器0x00后7个寄存器:为日期、时间寄存器。RegisterAddressR/WDescriptionResetValueBCDSEC0x57000070/3R/W秒当前值寄存器0xXXBCDMIN0x57000074/7R/W分钟当前值寄存器0xXXBCDHOUR0x57000078/BR/W小时当前值寄存器0xXXBCDDAY0x5700007C/FR/W日当前值寄存器0xXXBCDDATE0x57000080/3R/W星期当前值寄存器0xXXBCDMON0x57000084/7R/W月当前值寄存器0xXXBCDYEAR0x57000088/BR/W年当前值寄存器0xXX寄存器需字节读取•#definerRTCCON(*(volatileunsignedchar*)0x57000040)//RTCcontrol•#definerTICNT(*(volatileunsignedchar*)0x57000044)//Ticktimecount•#definerRTCALM(*(volatileunsignedchar*)0x57000050)//RTCalarmcontrol•#definerALMSEC(*(volatileunsignedchar*)0x57000054)//Alarmsecond•#definerALMMIN(*(volatileunsignedchar*)0x57000058)//Alarmminute•#definerALMHOUR(*(volatileunsignedchar*)0x5700005c)//AlarmHour•#definerALMDATE(*(volatileunsignedchar*)0x57000060)//Alarmday•#definerALMMON(*(volatileunsignedchar*)0x57000064)//Alarmmonth•#definerALMYEAR(*(volatileunsignedchar*)0x57000068)//Alarmyear•#definerRTCRST(*(volatileunsignedchar*)0x5700006c)//RTCroundreset•…….RegisterAddressR/WDescriptionResetValueRTCCON0x57000040(L)0x57000043(B)R/W(字节)RTC控制寄存器0x01、RTC控制寄存器(RTCCON)字段名位意义初值CLKRST3RTC时钟计数复位。0:不复位;1=BCD计数复位。0CNTSEL2BCD计数选择。0:合并BCD计数;1=保留(单独的BCD计数器)0CLKSEL1BCD时钟选择。0:XTAL/327681:用XTAL原值(但只用于测试)0RTCEN0RTC控制使能。0:禁止;1:使能指BCD时间计数和读取操作可以被执行0RegisterAddressR/WDescriptionResetValueTICNT0x57000044(L)0x57000047(B)R/W(字节)RTC节拍时间计数器0x002、RTC节拍时间计数器(TICNT)字段名位意义初值TICKINTENABLE7节拍中断使能。0:禁止,1:使能。0TICKTIMECOUNT6:0节拍时间计数值(1~127)。0000000说明:这个计数器的值在内部减少,用户不能在工作时读取这个计数器的值。RTC节拍时间用于中断请求。TICNT寄存器具有一个中断使能位,同时其中的计数值用于中断。当计数值到达0时,节拍时间中断就会触发。中断的间隔时间计算如下:Period=(n+1)/128秒n:节拍时间计数值(1~127)RegisterAddressR/WDescriptionResetValueRTCALM0x57000050(L)0x57000053(B)R/W(字节)RTC报警控制寄存器0x03、RTC报警控制寄存器(RTCCON)3、RTC报警控制寄存器(RTCCON)字段名位意义初值Reserved7保留(为0)0ALMEN6报警总使能位。0:禁止;1:使能0YEAREN5年报警使能位。0:禁止;1:使能0MONEN4月报警使能位。0:禁止;1:使能0DATEEN3日报警使能位。0:禁止;1:使能0HOUREN2时报警使能位。0:禁止;1:使能0MINEN1分报警使能位。0:禁止;1:使能0SECEN0秒报警使能位。0:禁止;1:使能0RegisterAddressR/WDescriptionResetValueALMSEC0x57000054(L)0x57000057(B)R/W(字节)报警秒数寄存器0x004、RTC报警秒数寄存器(ALMSEC)字段名位意义初值Reserved7保留(为0)0ALMSECH6:4报警时间秒十位,BCD值。0~5000ALMSECL3:0报警时间秒个位,BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMMIN0x57000058(L)0x5700005B(B)R/W(字节)报警分钟数寄存器0x005、报警时间分钟数寄存器(ALMMIN)字段名位意义初值Reserved7保留(为0)0ALMMINH6:4报警时间分钟十位,BCD值。0~5000ALMMINL3:0报警时间分钟个位,BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMHOUR0x5700005C(L)0x5700005F(B)R/W(字节)报警小时寄存器0x006、报警时间小时数寄存器(ALMHOUR)字段名位意义初值Reserved7:6保留(为0)00ALMHOURH5:4报警时间小时十位,BCD值。0~200ALMHOURL3:0报警时间小时个位,BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMDATE0x57000060(L)0x57000063(B)R/W(字节)报警日期天数寄存器0x017、RTC报警天数寄存器(ALMDATE)字段名位意义初值Reserved7:6保留(为0)00ALMDATEH5:4报警日期天数十位,BCD值。0~300ALMDATEL3:0报警日期天数个位,BCD值。0~90001RegisterAddressR/WDescriptionResetValueALMMON0x57000064(L)0x57000067(B)R/W(字节)报警日期月数寄存器0x018、报警时间月数寄存器(ALMMON)字段名位意义初值Reserved7:5保留(为0)000ALMMONH4报警日期月数十位,BCD值。0~10ALMMONL3:0报警日期月数个位,BCD值。0~90001RegisterAddressR/WDescriptionResetValueALMYEAR0x57000068(L)0x5700006B(B)R/W(字节)报警年数寄存器0x009、报警时间年数寄存器(ALMYEAR)字段名位意义初值ALMYEARH7:4报警日期年数十位,BCD值。0~90000ALMYEARL3:0报警日期年数个位,BCD值。0~90000说明:年数的千位和百位应该是20。Regist
本文标题:ARM实时钟RTC
链接地址:https://www.777doc.com/doc-23661 .html