收藏 分享(赏)

s3c2410主要功能部件及参数设置(完全).ppt

上传人:天天快乐 文档编号:580841 上传时间:2018-04-12 格式:PPT 页数:76 大小:904KB
下载 相关 举报
s3c2410主要功能部件及参数设置(完全).ppt_第1页
第1页 / 共76页
s3c2410主要功能部件及参数设置(完全).ppt_第2页
第2页 / 共76页
s3c2410主要功能部件及参数设置(完全).ppt_第3页
第3页 / 共76页
s3c2410主要功能部件及参数设置(完全).ppt_第4页
第4页 / 共76页
s3c2410主要功能部件及参数设置(完全).ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

1、第5章 S3C2410主要功能部件及参数设置,本章重点,NandFlash控制器中断控制器系统定时器 异步串行口IIC总线接口AD转换控制器,本章内容,5.1 NandFlash控制器5.2 中断控制器5.3 系统定时器5.4 异步串行口5.5 IIC总线接口 5.6 AD转换控制器,5.1 NandFlash控制器,5.1.1 NOR Flash和NAND Flash比较NOR和NAND是现在市场上两种主要的非易失闪存技术。NOR Flash指线性存储器,通过线性、连续的地址进行寻址;NAND Flash指非线性存储器,通过非线性、不连续的地址进行寻址。(1)应用大多数情况下用NOR存储少量

2、代码,而NAND则是高数据存储密度的理想解决方案。NOR的特点是芯片内执行,应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。(2)读写速度NAND写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。NOR的传输效率很高,但是很低的写入和擦除速度大大影响了它的性能。NOR的读速度比NAND稍快一些,NAND的写入速度比NOR快很多.,5.1 NandFlash控制器,(3)接口性质NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取

3、一块的形式来进行的,通常是一次读取512个字节,与硬盘管理有些类似。(4)容量与成本NOR flash占据了容量为116MB闪存市场的大部分,而NAND Flash只是用在8128MB的产品当中。NAND Flash比NOR Flash廉价。,5.1 NandFlash控制器,5.1.2 S3C2410 NAND Flash控制器NOR flash存储器的价格比较昂贵,而 SDRAM和NAND flash 存储器的价格相对比较合适。因而嵌入式开发者希望从NANDflash启动和引导系统,而在SDRAM上执行主程序代码的想法。S3C2410实现了从NOR Flash及NAND Flash 上执行

4、引导程序。为了支持NAND Flash 的系统引导,S3C2410具有一个内部SDRAM缓冲器。当系统启动时,引导代码需要将NAND flash中程序内容拷贝到SDRAM中,然后系统自动执行这些载入的引导代码。从NAND Flash启动要通过引脚OM1:0进行选择,当选择OM1:0=00时,处理器通过NAND Flash启动;OM1:0=01或10时,处理器通过NOR Flash启动。图5-1所示是S3C2410 NAND Flash控制器的方块电路图。,5.1 NandFlash控制器,NAND Flash启动过程S3C2410支持从NAND Flash引导系统,这是通过内置的SRAM及自动

5、引导控制逻辑实现的,在系统加电时,自动引导控制逻辑自动把NASRND flash的最前面的4k内容会被自动地复制到内部SRAM中, 使用这4kb代码来把更多的代码从NAND Flash中读到sdram中去,然后执行SRAM中的指令,这4kb的程序一般实现CPU、GPIO、Memory、Clock、Watchdog、Uart等的初始化,然后把4kb后面的程序复制到SDRAM,然后跳转到SDRAM入口实现系统的引导。,5.1 NandFlash控制器,自动引导过程 (1)复位完成(2)NAND Flash的前4kb被拷到内部SRAM(3)SRAM被映射到GCS0(BANK0)(4)CPU从内部SR

6、AM开始执行程序NAND Flash操作过程NAND Flash的操作通过NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT和NFECC这六个寄存器来完成。具体操作步骤如下:(1)配制NAND Flash控制寄存器NFCONF(2)写 NAND Flash命令到NFCMD寄存器(3)写NAND Flash地址到NFADDR寄存器(4)通过NFSTAT寄存器检查NAND Flash状态实现读/写操作。,5.1 NandFlash控制器,5.1.3 NAND Flash 存储器接口 图5-2是NAND lash存储器接口示意图。,5.1 NandFlash控制器,图5-中,NAND

7、 Flash的管脚配置如下: D7: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的内存映射图,S3C

8、2410和其他的大部分的处理器一样,支持Nor Flash和NANDFlash启动,而这两种启动方式内存所映射的地址不相同。,5.1 NandFlash控制器,在图5-3中BANK6、BANK7对应的地址空间与BANK0-5不同。BANK0-5的地址空间都是固定的128M,地址范围是(x*128M)到(x+1)*128M-1,x表示0到5。但是BANK7的起始地址是可变的,您可以查找S3C2410数据手册第5章,获取BANK6、7的地址范围与地址空间的关系。,5.1 NandFlash控制器,5.1.4 NAND Flash相关寄存器1.NAND Flash相关寄存器概述前面已经谈到,NAND

9、 Flash的操作通过设置NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT和NFECC这六个寄存器来完成的,下面首先讨论NAND Flash这些寄存器的一些性质,这对嵌入式程序设计至关重要,表5-1列出了NAND Flash相关寄存器的地址、读写情况与功能的描述。其中:FCONF是NAND Flash的配置寄存器;NFCMD是NAND Flash命令寄存器,CPU通过此寄存器向NAND Flash 传递控制命令;NFADDR是NAND Flash地址寄存器,CPU通过此寄存器向NAND Flash传递地址;,5.1 NandFlash控制器,NFDATA是NAND Flash

10、 数据寄存器,CPU通过此寄存器向NAND Flash 传递数据;NFSTAT是NAND Flash状态寄存器,CPU通过读取该寄存器获取NAND Flash当前状态;NFECC是NAND Flash ECC寄存器,实现循环校验功能。#define rNFCONF (*(volatile unsigned *)0x4e000000)#define rNFCMD (*(volatile unsigned *)0x4e000004) #define rNFADDR (*(volatile unsigned *)0x4e000008) #define rNFDATA (*(volatile unsi

11、gned *)0x4e00000c) #define rNFSTAT(*(volatile unsigned *)0x4e000010) #define rNFECC (*(volatile unsigned *)0x4e000014),5.1 NandFlash控制器,. NAND Flash相关寄存器应用()NFCONF寄存器 NFCONF寄存器的地址是0x4e000000,表5-2所示是NFCONF寄存器属性值设置,相对应位的默认值、功能设置位的表示。,5.1 NandFlash控制器,NAND Flash需要初始化,在一般情况下要使NAND Flash使能,15:12设置为0b1111

12、; CLE和ALE持续时间设置为HCLK,因而11:8=0b1000; TWRPH0持续为3,即位7:4设置为0b0011,如果把TWRPH1值设为0,即把NFCONF初始化为0xf830。例如:设置第11位为0,使NAND Flash使能。NFCONF ,5.1 NandFlash控制器,()NFCMD寄存器 NAND Flash的命令寄存器NFCMD的地址是0x4e000004,表5-3所示是NFCMD寄存器属性值设置,相对应位的默认值、功能设置位的表示。NFCMD寄存器中,对于不同型号的Flash,操作命令一般不同。 例如: NFCONF & = (1 9 ) & 0xff,5.1 Na

13、ndFlash控制器,(4) NFDATA寄存器 NAND Flash数据寄存器NFDATA的地址是0x4e00000C,表5-5所示是NFDATA寄存器属性值设置,相对应位的默认值、功能设置位的表示。,5.1 NandFlash控制器,(5)NFSTAT寄存器NAND Flash状态寄存器NFSTAT地址是0x4e000010,表5-6所示是状态寄存器NFSTAT属性值设置及相对应位的初始值表示。,5.1 NandFlash控制器,(6)ECC寄存器NAND Flash ECC寄存器NFECC的地址是0x4E000014,表5-7所示为ECC寄存器位功能与设置描述。,5.1 NandFlas

14、h控制器,5.1.5 NAND Flash寄存器设置实例为了便于理解,下面用一个具体的例子对NAND Flash各寄存器进行设置。开始时NAND Flash控制器是不工作的,片选信号也没有激活(nFCE=1),然后使NAND Flash使能,并激活片选信号,然后设置TACLS、TWRPH0、TWRPH1。TACLS、TWRPH0、TWRPH1这三个参数是控制NAND Flash信号线CLE/ALE和写控制信号nWE的时序关系的,要参照具体的flash芯片手册来设置。分析:此时要把NAND Flash中NFCONF寄存器初始化为0xf830,设置第11位为0。,5.1 NandFlash控制器,

15、因而NAND Flash寄存器设置的主要过程如下:(1)NFCONF0xf830;(2)NFCONF (4)对NFADDR操作(5)循环查询NFSTAT位0,直到它为1.(6)连续读NFDATA寄存器512次,得到一页数据512B。(7)NFCONF0x800,禁止NAND Flash下面结合源码来详细的分析具体如何操作这6个寄存器来被完成以上4个步骤来完成读过程:,5.1 NandFlash控制器,(1)先要初始化Nand Flash函数reset_nand首先使Nand Flash使能,紧接着复位。void reset_nand()int i=0;NFCONF ,5.1 NandFlash

16、控制器,初始化NAND Flash中要把NFCONF设定为0xf830,作用是使能NAND Flash控制器、初始化ECC、NAND Flash片选信号nFCE=1(inactive,真正使用时再让它等于0)、设置TACLS、TWRPH0、TWRPH1。void init_nand()NFCONF = 0xf830;reset_nand();初始化NAND Flash之后,就可以把stage2的main函数代码拷贝到SDRAM中去执行,当然之前已经配置好了SDRAM。以上工作都是在stage1阶段(片内SRAM中)完成的,之后就可以读写NAND Flash了。,5.1 NandFlash控制器

17、,下面分析读操作的实现nand_read.c源码#include #define _REGb(x)(*(volatile unsigned char *)(x)#define _REGi(x)(*(volatile unsigned int *)(x)#define NF_BASE0x4e000000#define NFCONF_REGi(NF_BASE + 0x0)#define NFCMD _REGb(NF_BASE + 0x4)#define NFADDR_REGb(NF_BASE + 0x8)#define NFDATA_REGb(NF_BASE + 0xc)#define NFSTA

18、T_REGb(NF_BASE + 0x10)#define BUSY 1,5.1 NandFlash控制器,inline void wait_idle(void) int i;/* NFSTAT:只用到位0,0-busy,1-ready */while(!(NFSTAT #define NAND_SECTOR_SIZE512/* NAND Flash是以512Byte为单位来读写的 */#define NAND_BLOCK_MASK(NAND_SECTOR_SIZE - 1)/* low level nand read function */* 下面的读过程严格按照2410手册上的顺序 */,

19、5.1 NandFlash控制器,int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)int i, j;if (start_addr ,5.1 NandFlash控制器,for(i=0; i 9) ,5.1 NandFlash控制器,/* 对应第四条:4. Read/Write data while checking NAND Flash status by NFSTAT register. 一个地址对应512个字节数据。所以,由于8bit位宽的限制,每次读取8位(1个字节),共读512次得到1页512

20、Byte数据*/wait_idle();for(j=0; j NAND_SECTOR_SIZE; j+, i+) *buf = (NFDATA ,5.1 NandFlash控制器,以上是对NAND Flash读操作的分析。总体来看,关键在于根据CPU和Flash的datasheet配置各寄存器和按照规定顺序进行操作。具体的配置过程是比较繁杂的,可参照u-boot或vivi中对各种硬件支持的源码来配置,可省不少事。,52 中断控制器,5.2.1 中断的概念在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段,这种处理方式称为中断。在嵌入式系统中外部设备的功能实现主要是靠中

21、断机制来实现的。中断功能可以解决CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。 522 中断的作用(1)并行操作(2)硬件故障报警与处理(3)支持多道程序并发运行,提高计算机系统的运行效率(4)支持实时处理功能,52 中断控制器,5.2.3 中断类型与中断的优先级ARM系统包括两类中断:一类是IRQ中断,另一类是FIQ中断。IRQ是普通中断,FIQ是快速中断,在进行大批量的复制、数据传输等工作时,常使用FIQ中断。FIQ的优先级高于IRQ。在ARM系统中,支持7类异常,包括:复位、未定义指令、软中断、预取中止、数据中止、IRQ和FIQ,每种异常对应于不同的处理器模式。一旦发生异

22、常,首先要进行模式切换,然后程序将转到该异常对应的固定存储地址执行。这个固定的地址称为异常向量。异常向量中保存的通常为异常处理程序的地址。S3C2410中ARM中断模式及中断向量入口地址如表5-8所示。,52 中断控制器,5.2.4 中断响应过程中断响应过程描述如下:(1)当发生中断IRQ时,CPU进入“中断模式”,这时使用“中断模式”下的堆栈;当发生快中断FIQ时,CPU进入“快中断模式”,这时使用“快中断模式”下的堆栈。所以在使用中断前,先设置好相应模式下的堆栈。(2)对于Request sources中的中断,将INTSUBMSK寄存器中相应位设为0。(3)将INTMSK寄存器中相应位设

23、为0(4)确定中断是FIQ还是IRQ。a如果是FIQ,则在INTMOD寄存器设置相应位为1b如果是IRQ,则在RIORITY寄存器中设置优先级,52 中断控制器,(5)准备好中断处理函数,a中断向量: 在中断向量设置好当FIQ或IRQ被触发时的跳转函数, IRQ、FIQ的中断向量地址分别为0x00000018、0x0000001cb对于IRQ,在跳转函数中读取INTPND寄存器或INTOFFSET寄存器的值来确定中断源,然后调用具体的处理函数c对于FIQ,因为只有一个中断可以设为FIQ,无须判断中断源d中断处理函数进入和返回(6)设置CPSR寄存器中的F-bit(对于FIQ)或I-bit(对于

24、IRQ)为0,开中断。中断返回之前需要清中断:设置寄存器SUBSRCPND、SRCPND、INTPND中相应位写1即可。对于INTPND,最简单的方法就是“INTPND=INTPND”。,52 中断控制器,5.2.5 与中断相关的寄存器SRCPND源中断指示寄存器SRCPND寄存器32位中的每一位对应着一个中断源,每一位被设置为1,则相应的中断源产生中断请求并且等待中断被服务。因此,这个寄存器表明了哪个中断源在等待中断请求被处理。SRCPND 寄存器的每一位是由中断源自动设置的,而不管INTMSK寄存器中的屏蔽位是否置1。INTMOD中断模式寄存器中断模式寄存器的32位中的每一位对应一个中断源

25、,当INTMOD 的每一位都设置位1,则ARM 内核将以FIQ模式相应中断,否则将以IRQ模式相应中断。,52 中断控制器,INTPND中断请求寄存器中断请求寄存器32位中的每一位对应着相应的中断请求,经过优先级逻辑后,INTPND寄存器只能有一位被设置为1,并且向ARM 产生中断请求。在IRQ中断服务子程序,能够读取这个寄存器的值来决定32个中断源的那一个中断被服务。INTMSK中断屏蔽寄存器在INTMSK寄存器中,32位依次对应着每个中断源,如果指定位被设为1,ARM将不响应中断源的中断请求,即使在SRCPND相应的位被置位1的条件下也不响应。如果屏蔽位为0,则中断请求可以被响应。,52

26、中断控制器,INTOFFSET中断偏移寄存器中断偏移寄存器INTOFFSET 中的值显示了INTPND 寄存器中哪一个IRQ 的中断请求,这个位在清除SRCPND 和INTPND 后将自动清除。S3C2410A子中断列表SUBSRCPND次级源中断指示寄存器INTSUBMSK次级中断屏蔽寄存器EXTINTn外部中断控制寄存器nEINTPND外部中断判断寄存器EINTMASK外部中断屏蔽寄存器,52 中断控制器,S3C23410.h中与中断相关的地址映射为:#define rSRCPND (*(volatile unsigned *)0x4a000000) /Interrupt request

27、status#define rINTMOD (*(volatile unsigned *)0x4a000004) /Interrupt mode control#define rINTMSK (*(volatile unsigned *)0x4a000008) /Interrupt mask control#define rPRIORITY (*(volatile unsigned *)0x4a00000c) /IRQ priority control#define rINTPND (*(volatile unsigned *)0x4a000010) /Interrupt request st

28、atus#define rINTOFFSET (*(volatile unsigned *)0x4a000014) /Interruot request source offset#define rSUBSRCPND (*(volatile unsigned *)0x4a000018) /Sub source pending#define rINTSUBMSK (*(volatile unsigned *)0x4a00001c) /Interrupt sub mask,52 中断控制器,5.2.6 中断寄存器的设置实例下列函数init_irq是中断初始化函数,函数中应用GPG3、GPG6、GP

29、G7、GPG11产生的外部中断输入功能,采用系统默认的优先级、默认的低电平触发,所有的中断都为IRQ中断模式,通过设置中断寄存器INTMSK第5位,外部中断EINT8_23使能,通过设置中断寄存器EINTMSK第11、14、15、19位,中断EINT11、EINT14、EINT15、EINT19使能。分析:由于通过GPG3、GPG6、GPG7、GPG11产生的外部中断输入,GPGCON第67引脚、1213引脚、1415引脚、2223引脚设置为10。外部中断EINT8_23使能需要将中断寄存器INTMSK第5位设置为0。,52 中断控制器,void init_irq( ) rGPGCON /EI

30、NT11、EINT14、EINT15、EINT19中断使能 ,52 中断控制器,5.2.7 常用中断处理函数在linux操作系统中应用于S3C2410中常用的中断处理函数有:,52 中断控制器,思考题:分析下列函数,写出函数代码的含义。void Enable_Eint(void)rEINTPEND = 0xffffff; /to clear the previous pending statesrSRCPND |= BIT_EINT0|BIT_EINT2|BIT_EINT8_23;rINTPND |= BIT_EINT0|BIT_EINT2|BIT_EINT8_23;rEINTMASK=( (

31、111)|(119) );rINTMSK=(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);,53 系统定时器,S3C2410有5个16bit定时器。定时器0-3有脉宽调制功能(Pulse Width Modulation,PWM),定时器4是内部定时器,没有输出引脚。定时器0有Dead-zone发生器,可以保证一对反向信号不会同时改变状态,常用于大电流设备中。定时器0-1共用一个8bit prescaler,定时器2-4共用另外一个。每个定时器有一个时钟分频器,可以选择5种分频方法。每个定时器从各自的时钟分频器获取时钟信号。prescaler是可编程的,并依据TCFG0-

32、1寄存器数值对PCLK进行分频。,53 系统定时器,当定时器被使能之后,定时器计数缓冲寄存器(TCNTBn)中初始的数值就被加载到递减计数器中。定时器比较缓冲寄存器(TCMPBn)中的初始数值被加载到比较寄存器中,以备与递减计数器数值进行比较。这种双缓冲特点可以让定时器在频率和占空比变化时输出的信号更加稳定。每个定时器都有一个各自时钟驱动的16bit递减计数器,当计数器数值为0时,产生一个定时中断,同时TCNTBn中的数值被再次载入递减计数器中再次开始计数。只有关闭定时器才不会重载。TCMPBn的数值用于PWM,当递减计数器的数值和比较寄存器数值一样时,定时器改变输出电平,因此,比较寄存器决定

33、了PWM输出的开启和关闭。,53 系统定时器,5.3.1 定时器的工作过程S3C2410的PWM定时器采用双buffer机制,可以不停止当前定时器的情况下设置下一轮定时操作。定时器值可以写到TCNTBn,而当前定时的计数值可以从TCNTOn获得,即,从TCNTBn获得的不是当前数值而是下一次计数的初始值。自动加载功能被打开后,当TCNTn数值递减到0时,芯片自动将TCNTBn的数值拷贝到TCNTn,从而开始下一次循环,若TCNTBn数值为0,则不会有递减操作,定时器停止。,53 系统定时器,第一次启动定时器的过程如下:(1)初始化TCNTBn和TCMPBn的数值; (2)设置定时器的人工加载位

34、,不管是否使用极性转换功能,都将极性转换位打开; (3)设置定时器的启动位来启动定时器,同时清除人工加载位。 若定时器在计数过程中被停止,则TCNTn保持计数值,若需要设置新的数值需要人工加载。定时器的工作过程可以用下图表示。,53 系统定时器,定时器的工作过程解释如下:(1)使能自动加载功能,设置TCNTBn=160,TCMPBn=110,设置人工加载位并配置极性转换位,人工加载位将时TCNTBn、TCMPBn的数值加载到TCNTn、TCMPn。然后,设置TCNTBn、TCMPBn为80和40,作为下一次定时的参数。(2)设置启动位,若人工加载位为0,极性转换关闭,自动加载开启,则定时器开始

35、递减计数(计数前有一个设定时间,可以理解为与setup time类似)。 (3)当TCNTn的数值和TCMPn一致时,TOUTn从低变为高。(4)当TCNTn计数至0,定时器产生中断请求,同时TCNTBn、TCMPBn的数值被自动加载到TCNTn、TCMPn,前者为80,后者为40。 (5)中断服务向量(ISR)将TCNTBn、TCMPBn设置为80和60。,53 系统定时器,(6)与3相似。 (7)与4相似,TCNTn、TCMPn,前者为80,后者为60。 (8)ISR服务程序中,将自动加载和中断请求关闭。 (9)与6、3相似。 (10)TCNTn为0,TCNTn不会自动加载新的数值,定时器

36、被关闭。 (11)没有新的中断发生。 同时,由上面的工作过程可以看出,通过ISR或别的方法写入不同的TCMPBn的数值,就可以调节输出信号的占空比,实现脉宽调制(PWM)。,53 系统定时器,5.3.2 定时器配置寄存器 定时器输入时钟频率计算公式如下:定时器输入时钟频率MCLK/预分频值/分割值预分频值1255分割值=2,4,8,16,32其中,MCLK为系统时钟,预分频值和分割值分别通过定时器配置寄存器TCFG0和TCFG1设置。1. 定时器配置寄存器在S3C2410中定时器配置寄存器有TCFG0和TCFG1,表5-9、5-10分别表示定时器配置寄存器0(TCFG0)、1(TCFG1)各个

37、位的含义及初始值的情况。,53 系统定时器,2定时器控制寄存器TCON定时器控制寄存器TCON如表5-11所示。,表5-11 定时器控制器寄存器TCON,53 系统定时器,注意: TIMER0对应bit3:0:bit3用于确定在TCNT0计数到0时,是否自动将TCMPB0和TCNTB0寄存器的值装入TCMP0和TCNT0寄存器中,bit2用于确定TOUT0是否反转输出,bit1用于手动更新TCMP0和TCNT0寄存器:在第一次使用定时器前,此位需要设为1,此时TCMPB0和TCNTB0寄存器的值装入TCMP0和TCNT0寄存器中,bit0用于启动TIMER0。3.定时器计数缓冲寄存器与比较缓冲

38、寄存器(TCNTBnTCMPBn)定时器计数缓冲寄存器包括TCNTB0TCNTB5;而定时器比较缓冲寄存器包括TCMPB0TCMPB4。定时器计数缓冲寄存器TCNTBn如表5-12所示,定时器比较缓冲寄存器TCMPBn如表5-13所示。,53 系统定时器,4.定时器观察寄存器TCNTOn定时器观察寄存器包括TCNTO0TCNTO5,定时器观察寄存器TCNTOn如表5-14所示。表5-14 定时器观察缓冲寄存器TCMPBn,53 系统定时器,5.3.3 定时器设置实例例、在S3C2410中定时器配置寄存器TCFG0和TCFG1的值分别设为119和0x03,这个寄存器用于设置“Control Lo

39、gic”的时钟,设外部外部时钟源的频率为12MHz,时钟输出频率。分析:时钟输出频率计算公式如下:Timer input clock Frequency = PCLK / prescaler value+1 / divider value对于TIMER0,预分频值prescaler value = TCFG07:0为119(0b1110111),分割值divider value由TCFG13:0确定,本例中取值为0b011(0x03),因为取值0b000时,分割值为1/2; 取值0b001时,,53 系统定时器,分割值为1/4; 取值0b010时,分割值为1/8; 取值0b011时,分割值为1

40、/16,所以:时钟输出频率= 12MHz/(119+1)/(16) = 6250Hz思考题、请分析下列函数,它是定时器初始化函数,设外部输入时钟频率为100MHz,采用预分频器0,取值为99,定时器初始化函数代码为:void timer0_init(void) TCFG0=99; TCFG1=0x03; TCNTB0=31250; /定时器初始计数值 TCON |=(11); TCON =0x09;,53 系统定时器,问题:1)此设计中的分频数为多少?通过分频后的时钟频率为多少?2) 过多少时间触发一次中断?3)当定时计数器到0时,自动加载到TCNTB0寄存器的值是多少?答案:1)此设计中的分

41、频数为16,通过分频后的时钟频率为62500Hz。2) 过500ms触发一次中断。3)当定时计数器到0时,自动加载到TCNTB0寄存器的值是31250。,53 系统定时器,5.3.4 S3C2410实时时钟RTC在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时分秒和年月日;即使在系统处于关机状态下,它也能正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的晶振。 S3C2410的实时时钟RTC具有下列特点:(1)时钟数据采用 BCD 编码; (2)能够对闰年的年月日进行自动处理; (3)具有告警功能,当系统处于关机状态时,能产生告警中断;(4

42、)无 2000 年问题; (5)具有独立的电源输入; (6)提供毫秒级时钟中断,该中断可用作嵌入式操作系统的内核时钟。,53 系统定时器,RTC器件是一种能够提供日历/时钟、数据存储等功能的专用集成电路。RTC发送8位BCD码数据到CPU,传送的数据包括秒、分、小时、星期、日期、月份与年份。1S3C2410 的实时时钟控制寄存器RTCCON 在表-中表示S3C2410 的实时时钟控制寄存器RTCCON各位的设置值与相应的功能。,53 系统定时器,2.RTC报警寄存器RTCALM表-16是RTC报警寄存器RTCALM中的各个位,取值可以是或,0表示禁止报警,表示报警使能。3.RTC报警时间设RT

43、C模块的寄存器组BCDSEC、BCDMIN、BCDDAY、BCDDATE、BCDMON、BCDYEAR分别用于存放秒、分、小时、日、月、年。置寄存器,53 系统定时器,例:下列程序是S3C2410处理器的实时时钟(RTC)模块,根据语句RTCCON =0x01;请分析RTC的功能、初始年份为、在函数display外RTCCON的值为多少?void display()int y,m,d,s,mi;RTCCON =0x01;while(1)if(BCDYEAR=0x99) y=0x1999;else y=0x2000+BCDYEAR;m=BCDMON;,53 系统定时器,d=BCDDAY;mi=

44、BCDMIN;s=BCDSEC;if(s!=0) break;printf(time:%4x / %02x /%02xn,y,m,d);RTCCON =0x0;void main()RTCCON =0x01;BCDYEAR =0x08;BCDMON =0x08;,53 系统定时器,BCDDAY = 0x08;BCDMIN =0x08;BCDSEC =0x59;RTCCON =0x00;while(1) display(); delay(200);分析:语句RTCCON =0x01;表示RTC使能、无复位、分频1/32768,初始年份为2008,在函数display外RTCCON的值为0x00。

45、,5.4 异步串行口,S3C2410自带3个异步串行口控制器,每个控制器有16个字节的FIFO,最大波特率115.2Kbit/s,UART行控制寄存器ULCONn、控制数寄存器UCONn、读写状态寄存器UTRSTAT、FIFO控制寄存器UFCONn、UARTMODEM控制寄存器UMCONn、读写状态寄存器UTRSTATn、FIFO状态寄存器UFSTATn、波特率分频寄存器UBRDIVn。(1)端口H控制寄存器功能说明(引脚21个,020脚,每2个位控制1个引脚):,5.4 异步串行口,(2)端口上拉寄存器(GPBUPGPHUP) 0接上拉电阻,1不接上拉电阻(3)S3C2410中UART行控制

46、寄存器ULCONn(4)S3C2410中FIFO控制寄存器UFCONn(5)S3C2410中UART MODED控制寄存器UMCONn,5.4 异步串行口,S3C2410中每个UART的寄存器有11个之多(共有3个UART),考虑比较简单的情况,用到的寄存器也有8个。不过初始化就用去了5个寄存器,剩下的3个用于接收、发送数据。下面应用实例说明串行通信的应用。例1:假设在数据传送中设置传送8个数据位,1个停止位,无校验,正常操作模式,发送、接收都使用中断或查询方式,请根据实际需求设置异步通信寄存器,实际操作过程如下:1、初始化(1).把使用到的引脚GPH2、GPH3定义为TXD0、RXD0。 G

47、PHCON |= 0xa0 /1010 0000GPHUP |= 0x0c /上拉,5.4 异步串行口,(2)设置ULCON0 如把ULCON0(UART channel 0 line control register)设定为:8个数据位,1个停止位,无校验,正常操作模式(与之相对的是Infra-Red Mode,此模式表示0、1的方式比较特殊)。则ULCON0值为0x03。(3)设置UCON0如把UCON0(UART channel 0 control register )设定为除了位3:0,其他位都使用默认值。位3:0=0b0101表示:发送、接收都使用“中断或查询方式”,则把UCON0值赋为0x05。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经济财会 > 贸易

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报