基于S3C2410的RTC模块应用设计
发布时间:2008/5/26 0:00:00 访问次数:1296
    
    
    摘 要:本文简要介绍了s3c2410嵌入式微处理器,分析了rtc(real-time clock)硬件构架及其工作机理,在此基础上给出了rtc模块的应用功能开发流程及各功能模块的实现。
    关键词:s3c2410;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模块初始化由函数
    
    
    摘 要:本文简要介绍了s3c2410嵌入式微处理器,分析了rtc(real-time clock)硬件构架及其工作机理,在此基础上给出了rtc模块的应用功能开发流程及各功能模块的实现。
    关键词:s3c2410;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模块初始化由函数