• 首页 |  
  • 查询 |  
  • 供应 |  
  • 求购
  • 资讯 |  
  • 产品中心 |  
  • 技术应用 |  
  • 商务中心 |  
  • IC供货商 |  
  • 下载中心 |  
  • 求职招聘 |  
  • 论坛 |  
  • 博客
  • 您所在的位置: 首页 > 技术应用 > 便携设备 > 其他 > 正文
    文章搜索:
    基于S3C2410的RTC模块应用设计

    http://www.ic36.com 2006年6月19日11:45

    陕西科技大学 电气与电子工程学院 杨峰 张根宝 吕岑


    引言

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

    硬件结构

    S3C2410处理器简介

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

    硬件架构

      RTC模块能够在系统断电的情况下由后备电池供电继续工作,它能将8位数据转换为BCD码的格式传送给CPU,这些数据包括秒、分、时、日期、星期、月、年。RTC模块需要一个外部晶振提供32.768kHz的频率才能工作,它也能完成报警功能。

      S3C2410内部RTC模块框图如图1所示。XTlrtc与Xtortc是连接外部晶振的两个引脚,它们连接32.76kHz的晶振,为RBTC内部提供频率输入。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寄存器中的值,时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读可写的。

    程序设计

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

     
    本文摘自《电子设计应用》

    (关键词):处理器 模块应用

    IC型号速查
    [0]  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [A]  [B]  [C]  [D]  [E]  [F]  [G]  [H]
    [I]  [J]  [K]  [L]  [M]  [N]  [O]  [P]  [Q]  [R]  [S]  [T]  [U]  [V]  [W]  [X]  [Y]  [Z]
    相关链接
    基于S3C2410的RTC模块应用设计 2006-6-19 15:17:52
    Tower半导体音频处理器有效改善小音箱低频响应2006-8-10 13:51:36
    续走“重组之路”,英特尔倾售Dialogic等媒体信号业务2006-8-14 11:30:15
    赛普拉斯时钟发生器支持新兴Cell处理器2006-8-18 10:06:42
    NI推出LabVIEW 平台20周年纪念版本2006-8-14 11:40:39
    Tensilica入Nexus论坛 推进多核开发工具2006-8-19 9:35:53
    Cypress时钟发生器支持新兴Cell处理器应用2006-8-15 10:29:56
     我来评两句
    查看最新评论〗 

    昵称:  匿名
    请您注意:
    ·遵守中华人民共和国的各项有关法律法规
    ·承担一切因您的行为而导致的法律责任
    ·本网留言板管理人员有权删除其管辖留言内容
    ·您在本网的留言,本网有权在网站内转载或引用
    ·参与本留言即表明您已经阅读并接受上述条款

    芯片之家  电子之家  电子元器件之家  半导体之家  微电子之家 
    ·免费发布紧急IC求购 ·到哪里找工厂求购 ·全球最好十个IC网站 ·我为什么选择IC36
    ·IC是怎样炼成的 ·想知道所有的IC封装吗 ·如何鉴别旧货刷新货 ·芯片的前缀代表什么
    ·IC行业的网站体验 ·元器件常见问题解答 ·这里居然可以实时洽谈 ·有问必有答
    ·IC行业之25颗钻石 ·IC代理商查询 ·十家最牛的公司 ·中国IC公司200强
    元器件之家  晶圆之家  集成电路之家  电子元件之家  模块之家  电子管之家
    ·舍我其谁的高级会员 ·IC36是怎样收费的 ·网站广告是如何占领的 ·IC之家的增值服务
    ·我该到哪里去找工作 ·到哪里去招人呢 ·今日芯片需求排行 ·还有我们没有的型号吗
    ·中国IC行业的害群之马 ·中国最优秀的IC供应商 ·国外的IC骗子公司 ·信誉良好的IC供货商
    ·谁是IC之家的明星 ·做我们的代理吧 ·免费注册 机不可失 ·广告热线 010-51653935
    热 点 专 题
    热 点 论 坛
    关于我们 | 增值服务 | 免责条款 | 收费标准 | 付款方式 | 广告服务 | 网站地图 | 联系我们 | 友情链接 | 网站代理
    MSN:ic36@hotmail.com  QQ:IC之家 在线咨询  联系电话:(010)51653935 传真:(010)51653936 客户服务:service@ic36.com
    Copyright © 2003-2006 IC36.COM IC之家 本网站中文域名:IC之家 芯片之家
    京ICP证060068号