当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于S3C2410的RTC模块应用设计

引言
本文在介绍S3C2410的基础上,对RTC内部结构及工作机理进行了分析,最后给出了专用于RTC功能的应用开发。

硬件结构
S3C2410处理器简介
S3C2410是三星公司推出的16/32位RISC微处理器,它是为应用于小型掌上设备和高性价比、低功耗、高性能的嵌入式系统应用而提供的微控制解决方案。S3C2410使用了ARM920T内核。

javascript:if(this.width>690)this.width=690;if(this.height>690)this.height=690;" border="0" />

图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寄存器中的值。时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读可写的。

javascript:if(this.width>690)this.width=690;if(this.height>690)this.height=690;" border="0" />

图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模块的基本功能设计,还可以进一步开发如时钟界面等,以完善其功能,适应多种嵌入式系统应用的要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭