S3C2410系统时钟和定时器.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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设置。Lock Time之前,FCLK=Fin,Lock Time之后,MPLL输出正常,CPU工作在新的FCLK之下。启动S3C2410的MPLL,要设置3个相关寄存器:1.LOCITIME寄存器,用于设置Lock Time的长度,地址和各位含义如图2所示图2 LOCKTIME地址和各位含义LOCKTIME[0:11]用于设置MPLL的Lock Time,LOCKTIME[12:23]用于设置UPLL的Lock Time,使用默认值0x00FFFFFF即可。2.MPLLCON寄存器(Main PLL Control):用于设置FCLK与Fin的倍数,地址和各位含义如图3所示图3 MPLLCON地址和各位含义MPLLCON[0:1]称为SDIV,MPLLCON[4:9]称为PDIV,MPLLCON[12:19]称为MDIV,FCLK的计算公式如下: S3C2410:MPLL(FCLK)=(m*Fin)/(p*2^s)S3C2410:MPLL(FCLK)=(2*m*Fin)/(p*2^s)其中:m=MDIV+8,p=PDIV+2,s=SDIV对于本开发板,Fin=12MHz(晶振X102的频率)本例要产生的FCLK为200MHz,因此MDIV=0x5C=92;PDIV=0x04=4;SDIV=0x00=0,所以m=100,p=6,s=0,把Fin=12MHz代入S3C2410的MPLL(FCLK)计算公式,可以得到FCLK=200MHz,因此该寄存器的值可以设置为((0x5c 12)|(0x04 4)|(0x00))。图4是一些常用的PLL值,设置MPLLCON寄存器时可以参考该表。图4:MPLLCON常用设置值3.CLKDIVN寄存器,用于设置FCLK、HCLK、PCLK的比例,地址和各位含义如图5所示 图5 CLKDIVN地址和各位含义 HDIVN1=CLKDIVN[2]=0,表示保留,HDIVN1=CLKDIVN[2]=1,表示FCLK:HCLK:PCLK=1:4:4,此时HDIVN和PDIVN均要设置为0。HDIVN=CLKDIVN[1]=0,表示HCLK=FCLK,HDIVN=CLKDIVN[1]=1,表示HCLK=FCLK/2;PDIVV=CLKDIVN[0]=0,表示PCLK=HCLK,PDIVV=CLKDIVN[0]=1,表示PCLK=FCLK/2。对于本例程,要求FCLK:HCLK:PCLK=1:2:4,所以CLKDIVN[0:2]=0b110=0x3。如果HDIVN=1,那么CPU要从fast bus mode转换为asynchronous bus mode,可以通过如下指令完成: mrc p15,0,r1,c1,c0,0\n/*读出控制寄存器*/ orr r1,r1,0xc 0000000\n/*设置为

文档评论(0)

shujukd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档