S3C2410的RTC实时时钟
如何设置gec2410开发板系统时间及硬件时间(RTC)
如何设置gec2410开发板系统时间及硬件时间(RTC)如何设置gec2410开发板系统时间及硬件时间(RTC)2008-06-29 21:27 483人阅读评论(0) 收藏举报之前使用开发板时发现每次开机后,系统的时间都恢复到初始状态1969年,因为QT界面要显示采集数据的时间,没办法只能自己去解决这个问题,这两天总算把问题搞定了。
一、先说一下时钟的概念,时钟包括硬件时钟和系统时钟,系统时钟就是linux系统显示的时间,用命令date可以显示当前系统时间;硬件时钟就是硬件自身的时间了。
它们两者没有关系的,但是可以通过命令设置系统时钟和硬件设置,让它们同步。
在linux系统设置系统时钟用命令date,格式为:date ************.10,表示系统时间设置为2008年6月29日20时50分10秒。
硬件时钟RTC时间是通过hwclock命令来设置的,比如说硬件时间要设置为2008年6月29日20时50分10秒,则应该先用date ************.10,然后用命令:hwclock -w,这样RTC时间就跟系统时间一致了。
二、确保RTC在开发板断电后能继续工作。
原来的gec2410开发板的底层板电路有问题,RTC无法工作,导致开机时RTC的时间也回到了1969年(用hwclock命令查看硬件时间),后来发现3.3v的电池通过两个电阻跟RTC的VDDRTC(为RTC提供电压的引脚)相连后电压不要1v,而RTC工作电压为1.8v左右,前天去了广嵌,朱工把D8电阻短路掉,D9电阻换成一个发光二级管(压降为1.5v左右),这样开发板断电后就可以用3.3v的电池供电了。
三、让系统时间和RTC时间同步。
因为每次开机后系统的时间都是系统原来的时间,比如说1969年1月1日1时1分1秒,为了让系统时间和RTC时间同步,可以在文件系统中etc/init.d/rcS添加如下命令:/sbin/hwclock -s,这样每次开机时系统就会读取RTC的时间,系统时间就与RTC时间同步了。
S3C2410处理器RTC程序设计
课程设计题目S3C2410处理器RTC程序设计学院计算机科学与信息工程学院专业自动化班级2007级1班学生姓名指导教师2010 年12 月12 日课程设计任务书学生姓名:专业班级:2007级自动化一班指导教师:工作单位:题目: S3C2410处理器RTC程序设计已知技术参数和设计要求:1、嵌入式处理器选择S3C2410X;2、RTC模块包括年、月、日、时、分、秒;3、RTC模块使用晶振为32.768KHz;4、系统有定时报警功能。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、设计S3C2410X最小系统;2、配置RTC模块的特殊功能寄存器;3、提供RTC功能方框图;4、提供完成的软件设计;5、不少于3000字的课程设计报告。
时间安排:2010~2011学年第1学期13~14周指导教师签名: 2010年 11月 11日教研室主任签名: 2010年 11月 12日课程设计成绩评定表学院:计信班级:07自动化1班学生姓名:学号:指导教师评定成绩:指导教师签名:2010年12月12日S3C2410处理器RTC程序设计摘要:实时时钟RTC器件是一种能提供日历/时钟及数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。
特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,因此在当今的电子设备中应用非常广泛。
本次设计通过理解实时时钟的功能及各种特殊功能寄存器来实现对RTC的测试。
此设计基于S3C2410嵌入式开发平台,并结合PC的超级终端完成RTC模块的初始化、时间显示(显示于超级终端)、时间设置、重置测试、报警测试、时钟滴答测试等功能。
通过程序入口点对S3C2410X处理器及串口进行初始化,在主函数中调用不同功能的子函数以实现不同的测试。
关键词:S3C2410X RTC模块初始化测试函数前言:实时时钟的缩写是RTC(Real Time Clock). RTC 是集成电路,通常称为时钟芯片。
S3C2410中文手册第17章_实时时钟
RTC 节拍时间是用于中断请求。TICNT 寄存器有一个中断使能位和对于中断的计数器值。 当节拍时间中断出现时,计数器的值为 0。中断周期如下:
Period = ( n+1 ) / 128 second n: 节拍计数器值 (1~127)
RTC 节拍时间可以用于实时操作系统内核时间节拍。如果时间节拍由 RTC 时间节拍生成, 与实时操作系统功能相关的时间就会和实时同步。
TICK TIME COUNT REGISTER (TICNT)
寄存器
地址
读写
TICNT
0x57000044(L)
R/W
0x57000047(B) (字节)
描述 节拍时间计数寄存器
复位值
0x0
TICNT TICK INT ENABLE
位
[7] 节拍时间中断使能
描述
初始值
0
0 = 无效 1 = 有效
TICK TIME COUNT [6:0] 节拍时间计数值 (1~127).
000000
该计数器的值在内部减少,工作期间用户不能读取该计数
器值。
17.4.3 RTC 报警控制寄存器
RTC ALARM CONTROL REGISTER (RTCALM)
RTCALM 寄 存 器 决 定 了 报 警 使 能 和 报 警 时 间 。 在 掉 电 模 式 下 RTCALM 寄 存 器 通 过
S3C2440A 中文 Datasheet 第十七章 实时时钟
17.3.2 读写寄存器
为了写RTC模块中的BCD寄存器,RTCCON寄存器的位 0 必须置 1。为了显示秒分小时星期 日月年,CPU应该分别读取在RTC模块中的BCDSEC,BCDMIN,BCDHOUR,BCDDAY,
S3c2410电路设计(以北京博创s3c2410-s实验箱为例讲解)
17
印刷电路板的设计
电源质量与分配
电源分配
实际的工程应用和理论都证实,电源的分配对系统的稳定性有很 大的影响,因此,在设计印刷电路板时,要注意电源的分配问题。
在印刷电路板上,电源的供给一般采用电源总线(双面板)或电 源层(多层板)的方式。电源总线由两条或多条较宽的线组成,由 于受到电路板面积的限制,一般不可能布得过宽,因此存在较大的 直流电阻,但在双面板得设计中也只好采用这种方式了,只是在布 线的过程中,应尽量注意这个问题。 在多层板的设计中,一般使用电源层的方式给系统供电。该方式 专门拿出一层作为电源层而不再在其上布信号线。由于电源层遍及 电路板的全面积,因此直流电阻非常的小,采用这种方式可有效的 降低噪声,提高系统的稳定性。
32
33
LCD与触摸屏
从CPU 的LCD 控制器出来的信号线包括24 根数据线和若 干根控制线。对于256色LCD 只需要其中低8 位数据线即可。 这些信号线是经过74HC245 隔离后接到LCD 模块的,接 256 色屏时也由245 芯片完成电平转换。8 位LCD 模块除 了需要控制信号和数据信号外,还需要一个22V 左右的工 作电压和上千伏的背光电压。前者由MAX629 升压后得到, 后者由一个逆变器模块提供。另外LCD 信号线驱动芯片 74HC245 的电源是可选的,当使用5V 电平的256 色彩屏 时该芯片电源使用5V,使用3.3V 的16 位真彩屏选择3.3V。 (2410-S可以安装5#的伪彩屏和8#的真彩屏)。
芯片在工作时有一定的发热是正常的,但如果有芯片特 别发烫,则一定有故障存在,需断电检查确认无误后方可继 续通电调试。
20
硬件系统的调试
电源、晶振及复位电路调试
调试电源电路之前,尽量少接器件,通电之前检查有无 短路现象
S3C2410主要功能部件及参数设置(完全)
5.1 NandFlash控制器
(2)NFCMD寄存器 NAND Flash的命令寄存器NFCMD的地址是0x4e000004,表 5-3所示是NFCMD寄存器属性值设置,相对应位的默认值、 功能设置位的表示。NFCMD寄存器中,对于不同型号的 Flash,操作命令一般不同。
例如: NFCONF & = ~(1<<11) //发出片选信号 NFCMD = 0xff //在K9F1208U0M存储器中表示reset命令
5.1 NandFlash控制器 • 2. NAND Flash相关寄存器应用
(1)NFCONF寄存器 NFCONF寄存器的地址是0x4e000000,表5-2所示是NFCONF 寄存器属性值设置,相对应位的默认值、功能设置位的表 示。
5.1 NandFlash控制器
NAND Flash需要初始化,在一般情况下要使NAND Flash使能,[15:12]设置为0b1111; CLE和ALE持续时间 设置为HCLK,因而[11:8]=0b1000; TWRPH0持续为3,即 位[7:4]设置为0b0011,如果把TWRPH1值设为0,即把 NFCONF初始化为0xf830。 例如:设置第11位为0,使NAND Flash使能。 NFCONF & = ~0x800; 设置第11位为1,使NAND Flash禁用。 NFCONF | = 0x800;
5.1 NandFlash控制器
• 5.1.3 NAND Flash 存储器接口
图5-2是NAND Flash存储器接口示意图。
5.1 NandFlash控制器
图5-2中,NAND Flash的管脚配置如下: D[7:0]:数据/命令/地址/的输入/输出口 (与数据总线共 享) CLE:命令锁存使能 (输出) ALE:地址锁存使能(输出) nFCE:NAND Flash 片选使能(输出) nFRE:NAND Flash 读使能 (输出) nFWE:NAND Flash 写使能 (输出) R/nB:NAND Flash 准备好/繁忙(输入) S3C2410的内存片选有8个片选(BANK),在U-Boot中, 要配制SDRAM和FLASH的 BANK数,如果SDRAM或者FLASH就 接了n个片选的时候,就定义为n,如n为8,即BANK8。图 5-3是S3C2410的内存映射图,S3C2410和其他的大部分的 处理器一样,支持Nor Flash和NANDFlash启动,而这两种 启动方式内存所映射的地址不相同。
S3C2410中文手册第7章 时钟和功率管理
第七章时钟和功率管理概述时钟和功率管理模块由三部分组成:时钟控制,USB控制和功率控制。
S3C2410A的时钟控制逻辑能够产生系统所需要的时钟,包括CPU的FCLK,AHB总线接口的HCLK,和APB总线接口的PCLK。
S3C2410A有两个PLL,一个用于FCLK,HCLK,PCLK,另一个用于USB模块(48MHZ)。
时钟控制逻辑能够由软件控制不将PLL连接到各接口模块以降低处理器时钟频率,从而降低功耗。
S3C2410A有各种针对不同任务提供的最佳功率管理策略,功率管理模块能够使系统工作在如下4种模式:正常模式,低速模式,空闲模式和掉电模式。
正常模式:功率管理模块向CPU和所有外设提供时钟。
这种模式下,当所有外设都开启时,系统功耗将达到最大。
用户可以通过软件控制各种外设的开关。
例如,如果不需要定时器,用户可以将定时器时钟断开以降低功耗。
低速模式:没有PLL的模式。
与正常模式不同,低速模式直接使用外部时钟(XTIpll或者EXTCLK)作为FCLK,这种模式下,功耗仅由外部时钟决定。
空闲模式:功率管理模块仅关掉FCLK,而继续提供时钟给其他外设。
空闲模式可以减少由于CPU核心产生的功耗。
任何中断请求都可以将CPU从中断模式唤醒。
掉电模式:功率管理模块断开内部电源。
因此CPU和除唤醒逻辑单元以外的外设都不会产生功耗。
要执行掉电模式需要有两个独立的电源,其中一个给唤醒逻辑单元供电,另一个给包括CPU在内的其他模块供电。
在掉电模式下,第二个电源将被关掉。
掉电模式可以由外部中断EINT[15:0]或RTC唤醒。
功能描述时钟结构图7-1描述了时钟架构的方块图。
主时钟源由一个外部晶振或者外部时钟产生。
时钟发生器包括连接到一个外部晶振的振荡器和两个PLL(MPLL和UPLL)用于产生系统所需的高频时钟。
时钟源选择表7-1描述了模式控制引脚(OM3和OM2)和选择时钟源之间的对应关系。
OM[3:2]的状态由OM3和OM2引脚的状态在nRESET的上升沿锁存得到。
第九章S3C2410的实时时钟(RTC)
9.1.1 S3C2410的实时时钟单元
它具有以下特点:
❖ • 时钟数据采用BCD编码或二进制表示; ❖ • 能够对闰年的年、月、日进行自动处理; ❖ • 具有告警功能,当系统处于关机状态时,
能产生告警中断;
❖ • 具有独立的电源输入; ❖ • 提供毫秒级的时钟中断(时钟滴答中断),
6. 秒循环复位寄存器RTCRST
❖ 为了适应某些专门场合使用,S3C2410 RTC 设置了秒循环复位寄存器RTCRST,它可以 在程序规定的秒时间内循环复位,RTCRST 寄存器的配置见表9-6。
9.2 参考程序及说明
该中断可用于嵌入式操作系统的内核时钟。
9.1.2 S3C2410的实时时钟寄存器
1.实时时钟控制寄存器RTCCON ❖ 该寄存器及其各位的定义如表9-1所示: ❖ 在正常使用S3C2410的实时时钟前,一定
要对S3C2410的实时时钟控制寄存器 RTCCON进行正确的设置,例如,使能、 BCD时钟选择、计数方式等等。
第九章 S3C2410的实时时钟(RTC)
主要内容:
❖ 9.1 实时时钟在嵌入式系统中的作用 ❖ 9.2参考程序及说明
9.1 实时时钟在嵌入式系统中的作用
❖ 本节介绍实时时钟在嵌入式系统中的作用, 实时时钟单元控制寄存器功能及使用。
❖ 在一个嵌入式系统中,实时时钟单元可以提 供可靠的时钟,包括时、分、秒和年、月、 日。即使系统处于关机状态下,它也能够正 常工作(通常采用后备电池供电,可靠工作 十年),其外围也不需要太多的辅助电路, 典型的例子就是只需要一个高精度的晶振。
2.告警控制寄存器RTCALM
❖ 该寄存器及其各位的定义如表9-2所示:
s3c2410时钟信号:FCLK、HCLK和PCLK
s3c2410 有三个时钟FLCK 、HCLK 和PCLK (这3个时针都是核心时针)s3c2410 芯片有这么一段话:FCLK is used by ARM920T ,内核时钟,主频。
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是为AHB总线上的外设提供时钟信号,包括USB时钟。
AHB总线用于连接高速外设。
PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,ADC, UART, GPIO, RTC and SPI. 也就是为APB总线上的外设提供时钟信号,即IO接口时钟,串口的时钟设置就是从PCLK来的。
APB总线用于连接低速外设。
The S3C2410X supports selection of Dividing Ratio between FCLK, HLCK and PCLK. This ratio is determined by HDIVN and PDIVN ofCLKDIVN control register.s3c2410可通过设置CLKDIVN控制寄存器的HDIVN位(第1位)和PDIVN位(第0位)来改变FCLK, HLCK 和PCLK的比率。
那么如何获取FCLK, HLCK 和PCLK的时针频率呢?可先通过clk_get获取一个clk结构体再将clk_get返回的clk结构体传递给clk_get_rate,获取该时钟的频率一个例子:这里出现了另一个时针uclk,专门给usb供给时针信号。
s3c2410 Timer工作原理
s3c2410 Timer工作原理(蔡于清)分类:ARM2009-10-01 21:46s3c2410 Timer工作原理2009-05-14 14:28:54来源:网络转载作者:蔡于清共有评论(0)条浏览次数:753 s3c2410提供了5个16位的Timer(Timer0~Timer4),其中Timer0~Timer3支持Pulse Width Modulation——PWM(脉宽调制)。
Timer4是一个内部定时器(internal timer),他没有输出引脚(output pins)。
下面是Timer的工作原理图。
如上图所示,PCLK是Timer的信号源,我们通过设置每个Timer相应的Prescaler和Clock Divider把PCLK转换成输入时钟信号传送给各个Timer的逻辑控制单元(Control Logic),事实上每个Timer都有一个称为输入时钟频率(Timer input clock Frequency)的参数,这个频率就是通过PCLK,Prescaler和Clock Divider确定下来的,每个Timer 的逻辑控制单元就是以这个频率在工作。
下面给出输入时钟频率的公式:Timer input clock Frequency = PCLK / {prescaler value+1} / {clock divider }{prescaler value} = 0~255{ clock divider } = 2, 4, 8, 16然而并不是每一个Timer都有对应的Prescaler和Clock Divider,从上面的原理图我们可以看到Timer0,Timer1共用一对Prescaler和Clock Divider,Timer2,Timer3,Timer4共用另一对Prescaler和Clock Divider,s3c2410的整个时钟系统模块只存在两对Prescaler和Clock Divider。
ARM2410实时钟RTC
Reset R/W Description Value
0x5700005C(L) R/W ALMHOUR 字节) 0x5700005F(B) (字节 字节
报警小时 寄存器 义
0x00 初值
00 00 0000
字段名 Reserved ALMHOURH ALMHOURL
0x57000070/ BCDSEC R/W 秒当前值寄存器 0xXX 3 0x57000074/ BCDMIN R/W 分钟当前值寄存器 0xXX 7 0x57000078/ BCDHOUR R/W 小时当前值寄存器 0xXX B 0x5700007C/ BCDDAY R/W 日当前值寄存器 0xXX F 0x57000080/
意
义
初值
0 0 0 0 0 0 0 0
时报警使能位。 :失能; : 2 时报警使能位。0:失能;1:使能
1 分报警使能位。0:失能;1:使能 分报警使能位。 :失能; : 0 秒报警使能位。0:失能;1:使能 秒报警使能位。 :失能; :
4、RTC报警秒数寄存器(ALMSEC) 、 报警秒数寄存器( 报警秒数寄存器 )
1、RTC控制寄存器(RTCCON) 、 控制寄存器( 控制寄存器 )
Register
RTCCON
Address
R/W
Description
Reset Value
0x57000040(L) R/W RTC控制寄存器 0x0 控制寄存器 字节) 0x57000043(B) (字节 字节
字段名 位 CLKRST 3
意
义
初值
0 0 0 0
RTC时钟计数复位。 时钟计数复位。 时钟计数复位 0:不复位;1 = BCD计数复位。 计数复位。 :不复位; 计数复位 BCD计数选择。0:合并 计数选择。 :合并BCD计数; 计数; 计数选择 计数 2 1 = 保留(单独的 CNTSEL 保留(单独的BCD计数器) 计数器) 计数器 BCD时钟选择。 0:XTAL/32768 时钟选择。 : 时钟选择 1:用XTAL原值(但只用于测试) 原值( : 原值 但只用于测试) RTC控制使能。 0:失能; 1:使能 控制使能。 :失能; : 控制使能 RTCEN 0 指BCD时间计数和读取操作可以被执行 时间计数和读取操作可以被执行
S3C2410中文手册第17章 RTC模块
第十七章RTC模块概述实时时钟单元RTC能够在系统电源关闭后依靠后备电池供电工作。
RTC可以将8位数据通过STRB/LDRB ARM指令以BCD码的形式传给CPU,这些数据包括秒、分、小时、日期、星期几、月、和年。
RTC单元在外部32.768KHz的晶振下工作,并可以执行报警功能。
特性—BCD数据:这些数据包括秒、分、小时、日期、星期几、月、和年。
—闰年产生器—报警功能:报警中断或者从掉电模式唤醒—解决了千年虫问题—独立电源引脚RTCVDD—支持ms中断作为RTOS内核时钟—循环复位功能RTC操作闰年产生器闰年产生器可以基于BCDDATE、BCDMON、BCDYEAR决定每月的最后一天的日期是28、29、30还是31。
一个8位计数器只能表示两位BCD码,因此不能决定00年是否是闰年,例如它不能区别1900年还是2000年。
RTC模块通过硬件逻辑支持2000年为闰年(注意1900年不是闰年,2000年才是闰年)。
因此这两位“00”指的是2000年,而不是1900年。
寄存器读写要写BCD寄存器时必须要将RTCCON寄存器的0位置1,要显示秒、分、小时、日期、星期几、月、和年等时间,必须单独读取BCDSEC, BCDMIN, BCDHOUR, BCDDAY, BCDDATE, BCDMON, and BCDYEAR寄存器的值。
但是这中间可能存在1秒钟的偏差,因为要读多个寄存器。
例如,用户读到的结果是2059年12月31日23点59分,如果读取BCDSEC寄存器的值是1-59则没问题,但是如果是0,由于存在这1s钟的偏差,时间将变成2060年1月1日0时0分。
这种情况下,应该重新读取BCDYEAR – BCDSEC寄存器的值。
后备电池操作即使系统电源关闭,RTC模块可以由后备电池通过RTCVDD引脚供电。
当系统电源关闭时,CPU和RTC的接口应该被阻塞,后备电池应该只驱动晶振电路和BCD计数器,以最小化功耗。
计算机三级嵌入式系统开发技术真题(带答案)
操作题(一)电动汽车充电桩(示意图如图3-1所示)以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下:a、充电桩支持2种充电方式,一种是固定金额方式,如:充300元的电能。
那么,所充电能的金额等于300元后自动停止充电;另一种是随机充电,即:随时按"停止"键来停止充电,若未按"停止"键,则电池充满后也会自动停止充电。
b、支持现金和IC卡付费。
IC卡是预付费卡,金额不足将报警。
c、能够通过RS-485总线与后台结算服务器连接,传递结算信息。
d、用LCD显示器来显示被充电电池的电量情况,并显示充电时间、金额等信息。
根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。
(完善程序或回答问题所需的寄存器格式见题后附录)。
1)充电桩控制器设计时,需设计一个键盘,键盘中应包含0~9数字键及"切换"、"启动"、"停止"等3个命令键。
其键盘接口设计成4×4的阵列(按键排列示意如图3-2所示)。
图3-2中的键盘接口电路中选用GPE4~GPE7来输出键盘行扫描信号,选用GPE0~GPE3来输入键盘列信号。
软件设计时设计者自行设计键盘扫描函数,请你补充//**KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址#defineKEYOUTPUT (*(volatile INT8U *)0x56000044) //0x56000044是GPE端口数据寄存器的地址#define KEYINPUT (*(volatile INT8U *)0x56000044)INT16U ScanKey(){INT16U key=0xFFFF;INT16U i;INT8U temp=0xFF,output;//仅初始化GPE4~GPE7为输出rGPECON= ((rGPECON & 0xFFFF00FF) | (1) );//仅初始化GPE0~GPE3为输入rGPECON= rGPECON &(2); // rGPECON是对应GPE端口控制寄存器的变量for (i=(3); i<= 128; i<<=1) //循环扫描键盘,看是否有按键按下{output|= 0xFF;output&= (~i); //键盘行信号求反KEYOUTPUT= output; //通过GPE端口数据寄存器输出行信号temp= KEYINPUT; //通过GPE端口数据寄存器读列信号,该列无键按下时列信号是1 if((temp&0x0F)!= (4))//判断是否有键按下{key = (~i);key <<= 8; //变量key中存储键码值,行信号左移到高8位key |= temp|0xF0; //列信号存于变量key的低8位中,无用位置1return (key); //返回键码值}}return 0xFFFF;}上面的键盘扫描函数返回的是键码值,程序中循环(5)次来扫描所有键盘行,若所有行均无键按下时,返回的键码值应为:(6)。
S3C2410的RTC实时时钟
(1)控制寄存器(RTCON)
(2)实时时钟计数器(TICNT)
(3)秒、分、Leabharlann 、日、星期、月、年寄存器寄存器名 BCDSEC BCDMIN
地址 0x57000070 0x57000074
R/W (byte) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W) (R/W)
说明 秒时钟当前值 分时钟当前值 时时钟当前值 日时钟当前值 星期当前值 月时钟当前值 年时钟当前值
}
6、RTC 编程实例
(2)实时时钟显示函数 void Display_Rtc(void) /************************************************ Function name: Display_Rtc Description : 实时时钟显示程序 Argument : 读出当前的时间,然后显示 ************************************************/
***********************************************/
void Main (void) { BoardInitStart(); // 系统初始化,MMU初始化 SystemClockInit(); // 系统时钟初始化 RtcInit(); // RTC初始化 while (1) { Display_Rtc( ); Delay(500); } }
2、S3C2410的RTC基本特性
时钟数据采用BCD编码 能够对闰年的年月日进行自动处理 具有报警功能 具有独立的电源输入 提供毫秒级时钟中断,可作为内核时钟
3、RTC实时时钟的结构框图
4、RTC模块构成
S3C2410的实时时钟(RTC)
第八章 S3C2410的实时时钟(RTC) S3C2410的实时时钟 的实时时钟(RTC)
8.1 实时时钟结构和工作原理 在一个嵌入式系统中,实时时钟单元可以提供 在一个嵌入式系统中, 可靠的时钟,包括时、 秒和年、 可靠的时钟,包括时、分、秒和年、月、日。 即使系统处于关机状态下, 即使系统处于关机状态下,它也能够正常工作 通常采用后备电池供电, (通常采用后备电池供电,能够可靠工作十 ),其外围也不需要太多的辅助电路 其外围也不需要太多的辅助电路, 年),其外围也不需要太多的辅助电路,只需 要一个高精度的晶振。 要一个高精度的晶振。
//--------------------------------------------------------------------//-------------------------------------------------------------------------// RTC初始化 RTC初始化 //--------------------------------------------------------------------//-------------------------------------------------------------------------// 定义初始化时钟值 #define TESTYEAR 0x06 /* 2006年 */ 2006年 #define TESTMONTH 0x01 /* 1月 */ 1月 #define TESTDATE 0x10 /* 10日 */ 10日 #define TESTDAY 0x02 /* 星期二 */ #define TESTHOUR 0x20 /* 20时 */ 20时 #define TESTMIN 0x30 /* 30分 */ 30分 #define TESTSEC 0x00 /* 0秒 */ 0秒
关于S3C2410时钟与启动方式
关于S3C2410时钟一、对clock的基本认识第七部分是“clock & power management”,总结如下:1 s3c2410的clock & power management模块包含三个部分:clock cont rol、usb control、power control。
现在的关注点是clock control。
2、s3c2410有两个pll(phase locked loop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。
其中一个是MPLL,M即为main,用来产生三种时钟信号:Fclk(给CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk 即为cpu时钟周期)、Hclk(为AHB bus peripherals供给时钟信号,AHB 为advanced high-performance bus)、Pclk(为APB bus peripherals 供给时钟信号,APB为advanced peripherals bus)。
在这里,需要了解一下AMBA system architecture了。
这个可以到官方网站下载相关资料。
简单的说,AMBA是一种协议,这种协议已经称为片上组织通信的事实上的标准(the de facto standard for on-chip fabric communicatio n)。
下面给出英文描述:The AMBA protocol is an open standard, on-chip bus specification that details a stategy for the interconnection and management of functional blocks that makes up a system-on-ch ip(SoC).It facilitates "right-first-time" development of embedded proc essors with one or more CPU/signal processors and multiple periph erals. The AMBA protocol enhances a resuable design methodology by defining a common backbone for SoC modules.需要知道的是,AMBA总线是ARM提出的一种解决方案,它并非唯一的规范,但是因为ARM的广泛使用,AMBA总线也就成为了事实上的规范了。
2019年S3C2410系统时钟和定时器.doc
S3C2410系统时钟和定时器S3C2410系统时钟和定时器(2011-05-26 08:59)主机环境:UBUNTU10.04LTS+arm-linux-gcc 2.95.3开发板环境:EdukitIII实验箱+s3c2410子板问题描述:首先初始化S3C2410系统时钟,然后通过定时器中断来控制LED的点亮、熄灭情况【1.系统时钟硬件原理】EdukitIII实验箱上一共有两个时钟,都是通过外接晶振实现,一个是实时时钟RTC,主要为系统计时使用,其晶振X101频率为32.768 kHz;另一个是系统时钟,为硬件设备提供时钟信号使用,其晶振X102为12MHz,系统时钟都是在X102的基础上通过时钟寄存器的控制来生成不同的时钟信号,为不同的硬件设备提供工作时钟信号。
S3C2410的时钟控制逻辑可以外接晶振,然后通过内部的电路产生时钟源,也可以直接使用外部提供的时钟源,通过引脚设置来选择。
时钟逻辑为整个系统提供3种时钟:FCLK用于CPU核;HCLK用于AHB总线上的设备,如存储控制器、中断控制器、LCD控制器、DMA、USB主机模块等;PCLK用于APB总线上的设备,如WATCHDOG、IIS、I2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC、SPI等。
开发板上的外接时钟(晶振X102为12MHz)通过相位锁相环(PLL)电路来提高频率,S3C2410有两个PLL,一个MPLL,用于设置FCLK、HCLK、PCLK;另一个为UPLL,用于USB设备。
上电时,PLL没有启动,FCLK等于外部输入时钟Fin,若要提高系统频率,通过软件来启用PLL(设置相关寄存器),图1为PLL上电后的启动过程图1上电后MPLL的启动过程图中的OSC即是外接晶振X102,频率为12MHz,上电后需要等待一段时间(Lock Time),MPLL才能输出稳定,Lock Time的值由寄存器LOCITIME设置。
S3C2410A中文数据手册
S3C2410A中⽂数据⼿册第⼀章产品综述1.1特性 (2)体系结构 (2)系统管理器 (3)NAND Flash 启动引导 (3)Cache 存储器 (3)时钟和电源管理 (3)中断控制器 (4)具有脉冲带宽调制功能的定时器 (4)RTC(实时时钟) (4)通⽤I/O端⼝ (4)UART (4)DMA控制器 (5)A/D转换和触摸屏接⼝ (5)LCD控制器STN LCD显⽰特性 (5)TFT彩⾊显⽰屏 (5)看门狗定时器 (5)IIC总线接⼝ (6)IIS总线接⼝ (6)USB主设备 (6)SD主机接⼝ (6)SPI接⼝ (6)⼯作电压 (7)操作频率 (7)封装 (7)1.2内部结构图 (8)表1-1 272-FBGA 引脚分配及顺序 (9)表1-2 272-FBGA封装的引脚分配 (12)信号描述 (21)表1-3 S3C2410A信号描述 (21)表1-4 S3C2410A 专⽤寄存器 (25)Samsung 公司推出的16/32位RISC处理器S3C2410A,为⼿持设备和⼀般类型应⽤提供了低价格、低功耗、⾼性能⼩型微控制器的解决⽅案。
为了降低整个系统的成本,S3C2410A提供了以下丰富的内部设备:分开的16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(⽀持STN&TFT),⽀持NAND Flash系统引导,系统管理器(⽚选逻辑和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定时器,I/O 端⼝,RTC,8通道10位ADC和触摸屏接⼝,IIC-BUS接⼝,IIC-BUS接⼝,USB主机,USB 设备,SD主卡&MMC卡接⼝,2通道的SPI以及内部PLL时钟倍频器。
S3C2410A采⽤了ARM920T内核,0.18um⼯艺的CMOS标准宏单元和存储器单元。
它的低功耗、精简和出⾊的全静态设计特别适⽤于对成本和功耗敏感的应⽤。
S3C2410中文手册第7章_时钟及电源管理模块
S3C2410中文手册第7章_时钟及电源管理模块第七章时钟及电源管理模块时钟电源管理模块包含了3部分:Clock控制、USB控制、POWER控制.时钟控制逻辑单元能够产生s3c2440需要的时钟信号,包括CPU 使用的主频FCLK,AHB总线设备使用的HCLK,以及APB总线设备使用的PCLK.2440内部有2个PLL(锁相环):一个对应FCLK、HCLK、PCLK,另外一个对应的是USB使用(48MHz)。
时钟控制逻辑单元可以在不使用PLL情况下降低时钟CLOCK的频率,并且可以通过软件来驱使时钟和各个模块的连接/断开,以减少电源消耗。
对于电源控制逻辑单元,2440有许多钟电源管理方案来针对所给的任务保持最优的电源消耗。
S3c2440中的电源管理模块对应4种模式:NORMAL模式、SLOW模式,IDLE模式,SLEEP 模式。
NORMAL模式:这个模块给CPU时钟以及2440相应的外围设备提供时钟。
这个模式下,当所有的外围设备都被打开,电源消耗被最大化。
它允许用户通过软件来控制外部设备的操作。
例如,如果一个定时器不需要时,那么用户可以通过CLKCON寄存器来关闭时钟和定时器的连接,来降低电源消耗。
SLOW模式:NON-PLL模式,不同于Normal模式,这个模式使用的一个外部时钟(XTlpll 或EXTCLK)来直接作为2440的主频FCLK,而没有使用PLL。
在这个模式下,电源的消耗仅依赖于外部时钟频率,电源同PLL有关的消耗可以被排除。
IDLE模式:这个模式下CPU的时钟FCLK被断开,而还继续提供其他外围设备的时钟。
因此空闲模式导致减少了CPU核相应的电源消耗。
任何中断请求都能够将CPU唤醒。
Sleep模式:这个模式断开了内部电源。
因此在这个模式下CPU &内部的逻辑单元都没有电源消耗,除了一个wake-up逻辑单元。
激活sleep模式需要2个独立的电源。
一个给wake-up逻辑模块提供电源,另外一个给内部逻辑包括CPU提供电源,并且其是对于poweron/off可控的。
S3C2440A的实时时钟
7.3 实时时钟相关寄存器
实时时钟控制(RTCCON)寄存器 节拍时间计数(TICNT)寄存器 RTC闹钟控制(RTCALM)寄存器 闹钟秒数据(ALMSEC)寄存器 闹钟分数据(ALMMIN)寄存器 闹钟时数据(ALMHOUR)寄存器 闹钟日数据(ALMDATE)寄存器 闹钟月数据(ALMMON)寄存器 闹钟年数据(ALMYEAR)寄存器 BCD秒(BCDSEC)寄存器 BCD分(BCDMIN)寄存器 BCD 时(BCDHOUR)寄存器 BCD日(BCDDATE)寄存器 BCD星期(BCDDAY)寄存器 BCD月(BCDMON)寄存器 BCD年(BCDYEAR)寄存器
主要内容
➢7.1 实时时钟在嵌入式系统中的作用 ➢7.2 实时时钟操作 ➢7.3 实时时钟相关寄存器
7.1 实时时钟在嵌入式系统中的作用
➢ 在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、 月、日。即使系统处于关机状态下,它也能够正常工作(通常采用后备电池供 电)。
➢ 在嵌入式系统中,实时时钟主要用来显示时间。实时时钟(RTC)可以通过使用 STRB/LDRB ARM操作发送8位二--十进制BCD值数据给CPU。这些数据包括年、 月、日、星期、时、分和秒的时间信息。RTC单元工作在外部32.768kHz晶振并 且可以执行闹钟功能。
➢
➢ rRTCCON = 0x00; ➢}
➢ /*****************************************************************************
➢ // Function name: rtc_tick_init ➢ // Description: 初始化S3C2440的TICK定时器
计算机三级嵌入式系统开发技术机试模拟题2019年(2)_真题-无答案
计算机三级(嵌入式系统开发技术)机试模拟题2019年(2)(总分100,考试时间120分钟)选择题1. 下面是关于嵌入式系统的叙述,其中错误的是( )。
A. 嵌入式系统是嵌入式计算机系统的简称B. 从应用角度来说,嵌入式系统可以理解为是一种控制、监视或协助设备、机器、工厂运行的装置C. 随着技术的进步和应用的拓展,嵌入式系统的内涵也还在发展和变化D. 人们日常使用的通用计算机(如个人计算机)是一种典型的嵌入式系统2. 下面关于嵌入式系统的叙述中,错误的是( )。
A. 嵌入式系统与具体应用紧密结合,具有很强的专用性B. GPS导航仪、数码相机等设备是嵌入式系统的典型应用C. 汽车、数控机床中的嵌入式系统要求具有很高的可靠性D. 嵌入式系统中的软件一般存放在硬盘中,用户可以方便地变更系统中的软件3. 下面关于嵌入式系统组成的叙述中,错误的是( )。
A. 嵌入式系统由硬件和软件两部分组成B. 嵌入式系统一般只能包含一个处理器,不采用多处理器组成系统C. 嵌入式系统中的存储器用于存储程序和数据D. 数据总线是嵌入式系统中各组件之间进行数据传输的一个传输通路4. 下面关于嵌入式处理芯片特点的叙述中,错误的是( )。
A. 嵌入式处理芯片一般支持实时处理B. 嵌入式处理芯片一般具有低功耗的特性C. 嵌入式处理芯片有多种产品类型,但不包括微处理器D. 嵌入式处理芯片一般集成了测试电路5. 下列各项中,不属于静态图像格式的是( )。
A. BMPB. APEC. JPEGD. GIF6. 下列术语中,并非用于描述数字图像参数的是( )。
A. 位平面数目B. 图像分辨率C. 像素深度D. 量化位数7. 下列关于数字媒体的描述中,不正确的是( )。
A. W A V是未经压缩的数字音频,其音质与CD相当B. 字符的形状用点阵法描述时,应在字型库中记录每一直线和曲线的端点及控制点的坐标C. UTF一8采用的是单字节可变长编码D. 数字视频的数据量可压缩几十倍甚至几百倍8. 下面关于通信的说法中,错误的是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BCDMIN 0x57000074 (R/W) 分时钟当前值 不定
BCDHOUR 0x57000078 (R/W) 时时钟当前值 不定
BCDDAY 0x5700007C BCDDATE 0x57000080 BCDMON 0x57000084
(R/W) (R/W) (R/W)
日时钟当前值 不定 星期当前值 不定 月时钟当前值 不定
month = rBCDMON; day = rBCDDAY;
weekday = rBCDDATE; hour = rBCDHOUR;
min = rBCDMIN;
sec = rBCDSEC;
if(sec!=0) break;
}
精选课件
8
printf( "RTC TIME : %4x / %02x / %02x %s – %02x: %02x: %02x\n", year, month, day, date[weekday], hour, min, sec );
精选课件
1
2、S3C2410的RTC基本特性
时钟数据采用BCD编码 能够对闰年的年月日进行自动处理 具有报警功能 具有独立的电源输入 提供毫秒级时钟中断,可作为内核时钟
精选课件
2
(3)秒、分、时、日、星期、月、年寄存器
寄存器名
地址 R/W (byte)
说明
复位值
BCDSEC 0x57000070 (R/W) 秒时钟当前值 不定
rBCDHOUR = 0x17 ; // 设定小时
rBCDMIN = 0x34 ; // 设定分钟
rBCDSEC = 0x28 ; // 设定秒
rRTCCON = 0x00; // RTC读写禁止,选择BCD时钟
// 无复位,1/32768
}
精选课件
6
6、RTC 编程实例
(2)实时时钟显示函数 void Display_Rtc(void) /************************************************ Function name: Display_Rtc Description : 实时时钟显示程序 Argument : 读出当前的时间,然后显示 ************************************************/
rRTCCON = 0x0; }
精选课件
9
6、RTC 编程实例
(3)测试主函数 void main (void) /********************************************** Function name: main Argument : 初始化系统,并调用RTC显示函数 ***********************************************/
#define rBCDSEC (*(volatile unsigned char *)0x57000070)
#define rBCDMIN (*(volatile unsigned char *)0x57000074)
#define rBCDHOUR (*(volatile unsigned char *)0x57000078)
精选课件
10
void Main (void)
{
BoardInitStart(); // 系统初始化,MMU初始化
SystemClockInit(); // 系统时钟初始化
RtcInit();
// RTC初始化
while (1)
{
Display_Rtc( );
Delay(500);
}
}
精选课件
11
感谢亲观看此幻灯片,此课件部分内容来源于网络,id Display_Rtc(void)
{
int year;
int month, day, weekday, hour, min, sec;
rRTCCON = 0x01;
while(1)
{
if (rBCDYEAR == 0x99) year = 0x1999;
else year = 0x2000 + rBCDYEAR;
#define rBCDYEAR (*(volatile unsigned char *)0x57000088)
精选课件
4
6、RTC 编程实例
(1)实时时钟初始化函数 void Rtc_Init(void) /********************************************* Function name: Rtc_Init Description : 实时时钟初始化程序 *********************************************/
BCDYEAR 0x57000088 (R/W)
精选课件
年时钟当前值 不定
3
6、RTC 编程实例
#define rRTCCON (*(volatile unsigned char *)0x57000040)
#define rTICNT
(*(volatile unsigned char *)0x57000044)
#define rBCDDATE (*(volatile unsigned char *)0x5700007c)
#define rBCDDAY (*(volatile unsigned char *)0x57000080)
#define rBCDMON (*(volatile unsigned char *)0x57000084)
RTC实时时钟
1、S3C2410的RTC实时时钟
在一个嵌入式系统中,通常采用RTC来提供可靠的 系统时间,包括时、分、秒和年、月、日、星期等,而 且要求在系统处于关机状态下它也能够正常工作(通常 采用后备电池供电)。
它的外围也不需要太多的辅助电路,典型的就是只 需要一个高精度的32.768KHz晶体和电阻电容等。
精选课件
5
void Rtc_Init(void)
{ rRTCCON = 0x01; // RTC读写使能,选择BCD时钟
// 无复位,1/32768
rBCDYEAR = 0x05 ; // 设定年
rBCDMON = 0x03 ; // 设定月
rBCDDAY = 0x06 ; // 设定日
rBCDDATE = 0x03 ; // 设定星期