当前位置:首页 > 单片机 > 单片机
[导读]S3C2410 RTC(Real Time Clock)简介实时时钟(RTC)单元可以在系统电源关半闭的情况下依靠备用电池工作。RTC可以通过使用STRB/LDDRB这两个ARM指令向CPU传递8位数据(BCD码)。数据包括秒、分、小时、日期、天、月、和


S3C2410 RTC(Real Time Clock)简介

实时时钟(RTC)单元可以在系统电源关半闭的情况下依靠备用电池工作。RTC可以通过使用STRB/LDDRB这两个ARM指令向CPU传递8位数据(BCD码)。数据包括秒、分、小时、日期、天、月、和年。RTC单元依靠一个外部的32.768kHZ的石晶,也可以执行报警功能。

特性


BCD码:秒、分、时、日期、天、月和年


润年产生器


报警功能:报警中断,或者从power-off状态唤醒。


移除了2000年的问题


独立的电源引角:RTCVDD


为RTOS内核时间Tick time支持毫秒Tick time中断。


Round reset 功能。


RTC操作

润年产生器

润年产生器可以判断每个月的最后一天是28、29、30还是31,计算的基础是BCDDATA、 BCDMON和BCDYEAR中的数据。这一块在考虑最后一天的时候还考虑至了润年的情况,一个8位的计数器只能表示2个BCD数字,所以他汉有决定一个以“00”为结尾的年是不是润年。例如,他不能在1900和2000中分辨。为了解决这个问题,在S3C2410的RTC模块中用了硬线逻辑去支持2000这个润年,注意1900不是润年,而2000是润年,

读/写寄存器

RTCCON寄存器的Bit 0 必须被置高,这样是为了写RTC模块的BCD寄存器。为了显示秒、分、时、日期、月年,CPU应该分别读取 BCDSEC、BCDMNIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR寄存器中内容。然而在读这多个寄存器的时候会产生一秒变化是可能的,例如,当用户从BCDYEAR一直读到BCDMIN的时候,结果假定是 2059 (Year), 12 (Month), 31 (Date), 23 (Hour) and 59 (Minute). 当用户读BCDSEC寄存器,值的范围是1到时59,这没有问题, 但是当值为0秒时,年、月、日期、时和分可能已经变成了2060(Year), 1(Month), 1 (Date), 0 (Hour) and 0 (Minute) ,这是因为一秒的变化已经发生了,在这种情况下,用户应该在BCDSEC是0的进修重新读BCDYEAR到BCDSEC。

备用电池操作

RTC逻辑可以用备用电池驱动,它可以通过RTCVDD管角向RTC模块供电,即使系统电源关掉了。当系统是关的时候,CPU和RTC逻辑的接口应该是阻塞的,备用电池仅仅驱动振荡电路和BCD计数器去减少电源消耗。

报警功能

RTC在power-off模式或者正常操作模式时可以在一指定的时间产生一个报警信号。在正常操作模式下,报警中断(ALMINT)被激活,在power-off模式下,电源管理唤醒信号(PMWKUP)和ALMINT一起被激活。RTC报警寄存器(RTCALM)决定报警的enable/disable状态和报警时间设定的条件。

TICK TIME中断

RTC TICK TIME被用于中断请求。TICNT寄存器有一个中断使能位和中断的计数值。当计数值到达0时TICK TIME中断。所以中断的周期如下:

周期= (n+1 ) /128 秒

n:Tick time计数值(1~127)

这个RTC time tick可以被用于实时操作系统(RTOS)内核 time tick。如果time tick通过RTC time tick产生,那么RTOS的时间相关的功能就需要总是与实时时间同步。

ROUND RESET 功能

Rund reset功能可以通过RTC round reset寄存器(RTCRST)来执行。 The round boundary (30, 40, or 50 sec.) of the second carry generation can be selected, and the second value is rounded to zero in the round reset. For example, when the current time is 23:37:47 and the round boundary is selected to 40 sec, the round reset changes the current time to 23:38:00.

NOTE

All RTC registers have to be accessed for each byte unit using the STRB and LDRB instructions or char type pointer.



平台设备的注册

.../arch/arm/plat-s3c24xx/devs.c

/* RTC */


static struct resource s3c_rtc_resource[] = {

// 占用的IO内存范围

[0] = {

.start = S3C24XX_PA_RTC,

.end = S3C24XX_PA_RTC + 0xff,

.flags = IORESOURCE_MEM,

},

// RTC Alarm Interrupt

[1] = {

.start = IRQ_RTC,

.end = IRQ_RTC,

.flags = IORESOURCE_IRQ,

},

// RTC Tick time interrupt.

[2] = {

.start = IRQ_TICK,

.end = IRQ_TICK,

.flags = IORESOURCE_IRQ

}

};

// 平台设备结构。

struct platform_device s3c_device_rtc = {

.name = "s3c2410-rtc",

.id = -1,

.num_resources = ARRAY_SIZE(s3c_rtc_resource),

.resource = s3c_rtc_resource,

};


EXPORT_SYMBOL(s3c_device_rtc);






通过 platform_add_devices被注册。

static void __init qt2410_machine_init(void)

{

...


// 注册平台设备.

platform_add_devices(qt2410_devices, ARRAY_SIZE(qt2410_devices));

...

}



平台驱动


在.../drivers/rtc/Makefile中与我们有关的项有

obj-$(CONFIG_RTC_LIB) += rtc-lib.o

obj-$(CONFIG_RTC_HCTOSYS) += hctosys.o

obj-$(CONFIG_RTC_CLASS) += rtc-core.o

rtc-core-y := class.o interface.o


rtc-core-$(CONFIG_RTC_INTF_DEV) += rtc-dev.o

rtc-core-$(CONFIG_RTC_INTF_PROC) += rtc-proc.o

rtc-core-$(CONFIG_RTC_INTF_SYSFS) += rtc-sysfs.o


obj-$(CONFIG_RTC_DRV_S3C) += rtc-s3c.o

其中rtc-lib.c :提供了一些时间格式相互转化的函数。hctosys.c:在启动时初始化系统时间。RTC核心文件:class.c interface.c rtc-dev.c:字符设备的注册和用户层文件操作函数接口。 rtc-proc.c rtc-sysfs.crtc-s3c.o:S3C2410 RTC的芯片平台驱动。


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

  引言   汽车的普及为人们的生活带来了方便,同时也给人们提出了一大难题——汽车防盗。本设计是为了解决以往汽车防盗产品的缺点和不足而开发的集成传感、报警和远程图

关键字: 数据采集 操作系统 s3c2410 汽车防盗系统

  引言   巡航控制系统(CCS)是20世纪60年代发展起来的,又称为恒速行驶系统。巡航控制系统工作时,ECU根据各种传感器输送来的信号判断汽车的运行状况,通过执行元件自动调节节气门的

关键字: ARM 三星 Linux ecu s3c2410 电子控制系统

  在过去一百年里(l906-2005),全球地表平均温度升高了0.74摄氏度,未来20年,每十年全球温度将会升高0.2摄氏度。气候变暖已成为不容忽视的、直接影响全球生产和生活问题。  

关键字: can总线 s3c2410

  在此设计的基于 GPRS 的远程安防监控系统,是采用的是摄像机传送视频信号经压缩编码后,通过内部总线传送到内置的 Web 服务器。用户在监控端可以直接通过浏览器观看 Web服务器上的摄像机视

关键字: GPRS s3c2410 安防监控

网上介绍LINUX下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几;近期zhaoyang因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于刚接...

关键字: Linux s3c2410 dma驱动

1引言目前 , 在嵌入式系统里基于ARM核的嵌入式处理器已经成为市场主流。随着ARM技术的广泛应用 , 建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点。S3C2410是SAMSUNG公司基于ARM920T处理器...

关键字: s3c2410 移植 标准linux

一、S3C2410支持4种供电模式(1)NORMAL MODE耗电最大、可以通过关闭具体控制器的时钟来节电(2)SLOW MODE在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率(3)IDLE MODEFCLK...

关键字: s3c2410 电源管理

snailszzy的s3c2410_gpio_setpin()与s3c2410_gpio_cfgpin()函数定义s3c2410_gpio_setpin()在gpio.c中作用:设置相应GPIO口的值,如pin=S3C2...

关键字: s3c2410 函数定义

通过数据手册的INTERRUPT SOURCES即可看出所有中断源,其中Descriptions列有讲述,带多个中断源的用括弧表述出来了。以下中断源寄存器通过各自MAST连接到INTPND(只能一个位置一)SRCPND(...

关键字: s3c2410 中断源数量

反反复复弄了一个多星期,参考了不少资料,终于让UCOS在自己的板子上跑起来了。期间遇到了不少问题,还好坚持下来,挺 了过去.....复习一下,记录下来,以当后用: 1.在ADS中建产工程,进入工程界面后,先建立两个组,一...

关键字: s3c2410 ucos 移植
关闭