您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于S3C2410的RTC模块应用计划

发布日期:2011-05-10

  本文扼要先容了S3C2410嵌入衰落处理惩罚器,阐发了RTC(Real-time clock)硬件构架及其事变机理,在此底子上给出了RTC模块的应用成果开辟流程及各成果模块的实现。
 
  本文在先容S3C2410的底子上,对RTC内部布局及事变机理举行了阐发,末了给出了专用于RTC成果的应用开辟。
 
  硬件布局
 
  S3C2410处理惩罚器简介
  
  S3C2410是三星公司推出的16/32位RISC微处理惩罚器,它是为应用于小型掌上配置和高性价比、低功耗、高性能的嵌入式体系应用而提供的微控制办理方案。S3C2410利用了ARM920T内核。

图1 S3C2410内部RTC模块布局图
 
  硬件构架
  
  RTC模块可以或许在体系断电的环境下由后备电池供电连续事变,它能将8位数据转换为BCD码的格局发送给CPU。这些数据包括秒、分、时、日期、星期、月、年。RTC模块必要一个外部晶振提供32.768kHz的频率才华事变,它也能完成报警成果。
  
  S3C2410内部RTC模块布局框图如图1所示。XTlrtc 与Xtortc是连接外部晶振的两个引脚,它们连接32.768kHz的晶振,为RTC内部提供频率输入。215时钟分频器认真对从晶振外部输入的信号举行分频,分频精度为215。时钟滴答产生器可以孕育产生时钟滴答,它可以引起停止,它由一个叫做TICNT的寄存器举行设置,寄存器中有一位停止使能位和计数数值n(n可取1~127),时钟滴答的周期根据下式谋略:
 
  周期=(n+1)/128 秒 (1)
  
  闰年产生器根据从日期、月、年得来的BCD数据决定一个月的末了一天是28、29、30还是31号(也便是谋略是否是闰年)。报警产生器可以根据详细的时间决定是否报警。控制寄存器控制读/写BCD寄存器的使能、时钟复位、时钟选择等。重置寄存器可以选择“秒”对“分”进制的边界,提供三个可选边界:30、40大概50秒。
  
  RTC最紧张的成果便是表现时间。在失电模式下,RTC依然可以或许正常事变,此时,RTC模块通过外部的电池事变。电池一样平常选用可以或许提供1.8V电压的银芯电池,电池与专用于RTC电源的引脚RTCVDD连接。RTC时间表现成果是通过读/写寄存器实现的。要表现秒、分、时、日期、月、年,CPU必须读取存于BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE, BCDMON与BCDYEAR寄存器中的值。时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读可写的。

图2 RTC应用开辟流程图
 
  步伐计划
  
  本计划基于S3C2410嵌入式开辟平台,并连合PC的超等终端完成RTC模块的初始化、时间表现(表现于超等终端)、时间设置、重置测试、报警测试、时钟滴答测试等成果。其步伐开辟流程如图2所示。为了完成以上成果,必要前期的一些初始化事变。
 
  硬件初始化
  
  RTC模块不是孤独的,它是S3C2410的一个内部模块,要对其编程,必须完成对基于S3C2410的嵌入式体系的初始化。初始化事变包括对S3C2410和串口的初始化以及一些帮助函数的实现。
  
  S3C2410的初始化事变包括步伐入口点定义、停止矢量的确定、堆栈的初始化、电源办理(包括失电与重启处理惩罚)、S3C2410各模块的寄存器地点定义及其初始化,以上初始化事变与硬件精密相干,采取32位的ARM/Thumb指令集举行编程。
本计划利用PC机的超等终端作为人机接口,完成RTC模块的调试、时间表现及下令选择。因此,在RTC模块成果计划之前要完成对串行口的初始化。串口的初始化由设置PCLK(CPU体系时钟)、波特率设置、控制寄存器设置等几部分完成。这部分步伐与硬件相干性不是分外精密,可以用嵌入式C语言完成。在举行人机接口交互时,必要从超等终端输入/输出一些信息。
 
  成果计划
  
  完成初始化事变之后,举行RTC模块的成果应用开辟。成果应用根据自顶向下的步伐计划思路,可以分为差别的成果模块来分别实现。这些成果模块由详细的函数实现,在编写main()函数时,可以按完告成能的差别,分别调用差别的子函数。下面先容各成果模块子函数的实现。
  
  RTC模块初始化由函数Rtc_Init()实现。函数重要实现BCD数据的初始化,当别的函数读取初始化时间时,可以调用此函数。
  
  时间设置成果由函数Rtc_TimeSet()实现。该函数调用Uart_GetIntNum()函数从超等终端读入整型数字,由用户完成对当前时间的修改。
  
  重置测试成果由函数RndRst_Rtc()实现。该函数通过对Rtc_TimeSet()的调用完成用户确当前时间设置,然后通过修改RTCRST寄存器,实现重置边界的修改,继而通过对Uart_Printf()函数的调用,输出时间表现。用户可以观察重置后的时间,以测试重置成果。
  
  报警测试成果由函数Test_Rtc_Alarm()实现。该函数完成RTC初始化,打扫RTC模块的停止屏蔽位,孕育产生报警,然后设置停止屏蔽位,封闭停止。
  
  时钟滴答测试成果由函数Test_Rtc_Tick()实现。通过寄存器RTICNT设置时钟滴答周期,通过调用Uart_Printf()输出时钟滴答详细值。
  
  报警停止开与时钟滴答停止开完成相应停止状态位和停止挂起位开停止的成果。相应的成果可以查察S3C2410的停止模块。
  
  表现时间成果由函数Display_Rtc()完成。
 
  结语
  
  本文给出了RTC模块的根本成果计划,还可以进一步开辟如时钟界面等,以美满其成果,适应多种嵌入式体系应用的请求。