s3c2440时钟管理


1.时钟结构

主时钟源来自一个外部晶振(XTIpll)或外部时钟(EXTCLK)。时钟发生包含了一个连接到外部晶振的振荡器(震荡放大器),还含有S3C2440A 所必须的两个用于产生高频率时钟的 PLL(锁相环)
在这里插入图片描述


2.时钟源选择

在这里插入图片描述


3.锁相环PLL

出时钟频率 Mpll 相关参考输入时钟频率 Fin 有如下等式:

Mpll = ( 2 × m × Fin ) / ( p × 2^s )
m = M(分频器 M 的值)+ 8, p = P(分频器 P 的值)+ 2

PLL 和时钟发生器通常使用以下条件:

在这里插入图片描述
连接示例:
在这里插入图片描述
实际电路:
① 12MHz 在这里插入图片描述
②.RTC实时时钟
在这里插入图片描述

在这里插入图片描述
上电复位:
图 7-4 显示了上电复位期间时钟行为顺序。晶振在若干毫秒内开始振荡。当在 OSC(XTIpll)时钟稳定后释放nRESET,PLL 开始按默认 PLL 配置运行。但是通常认为上电复位后的 PLL 是不稳定的,因此在软件重新配置PLLCON 寄存器之前 Fin 代替 Mpll(PLL 输出)直接提供给 FCLK。即使用户不希望在复位后改变 PLLCON 寄存器的默认值,用户还是应该用软件写入相同的值到 PLLCON 寄存器中。
只有置 PLL 为一个新频率后,PLL 会开始锁定连续逼近新频率。可以在锁定时间后立即配置 FCLK 为 PLL 输出(Mpll)。
在这里插入图片描述


4.FCLK、 HCLK、 PCLK

  1. FCLK 是提供给 ARM920T 的时钟。
  2. HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB总线的时钟。
  3. PCLK 是提供给用于外设如 WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和SPI
    的 APB 总线的时钟。

S3C2440A 还支持对 FCLK、HCLK 和 PCLK 之间分频比例的选择。该比例由 CLKDIVN 控制寄存器中的 HDIVN和 PDIVN 所决定。

在这里插入图片描述
设置了 PMS 值后,必须接着设置 CLKDIVN 寄存器。设置 CLKDIVN 的值将在 PLL 锁定时间后起效。对于复位和改变电源管理模式该值同样起效。
在这里插入图片描述


5. 所涉及到的寄存器:

1、锁定时间计数寄存器(LOCKTIME)
在这里插入图片描述
2、PLL控制寄存器(MPLLCON和UPLLCON)
在这里插入图片描述

PLL 值选择向导(MPLLCON)
1. Fout = 2 × m × Fin / ( p*2s ),Fvco = 2 × m × Fin / p 此处:m =MDIV+8, p=PDIV+2, s=SDIV
2. 600MHz ≤ FVCO ≤ 1.2GHz
3. 200MHz ≤ FCLKOUT ≤ 600MHz
4. 不要设置 P 或 M 的值为 0,这是因为设置 P=000000,M=00000000 将会引起 PLL 的故障。
5. P 和 M 的合理范围为:1 ≤ P ≤ 62,1 ≤ M ≤ 248

在这里插入图片描述
m = MDIV + 8 = 92 + 8 =100,
p = PDIV +2 = 3,
S = SDIV = 1,

3、时钟控制寄存器(CLKCON)
在这里插入图片描述
4、时钟分频控制(CLKDIVN)寄存器
在这里插入图片描述
5、时钟慢速控制(CLKSLOW)寄存器
在这里插入图片描述
6.摄像头时钟分频(CAMDIVN)寄存器
在这里插入图片描述


6.时钟设置代码

/*
 * 设置locktime寄存器
 */
ldr LOCKTIME_ADDR,=0x4C000000
ldr LOCKTIME_DAT,=0xFFFFFFFF
str LOCKTIME_DAT,[LOCKTIME_ADDR]

/* 
 * 设置PLLCON中的MPLLCON寄存器
 */
ldr MPLLCON_ADDR,=0x4C000004
ldr MPLLCON_DAT,=((92<<12)|(1<<4)|(1<<0))
str MPLLCON_DAT,[MPLLCON_ADDR]

/*
 * 设置CLKCON寄存器
 */
ldr CLKCON_ADDR,=0x4C00000C
ldr CLKCON_DAT,= 0xFFFFF0
str CLKCON_DAT,[CLKCON_ADDR]
/*
 * 设置CLKDIVN寄存器
 */
 ldrCLKDIVN_ADDR,=0x4C000014
 ldr CLKDIVN_DAT,=((2<<1)|(1<<0))
 str CLKDIVN_DAT,[CLKDIVN_ADDR]

/*
 * 设置CPU工作于异步模式
 */
 mrc p15,0,r0,c1,c0,0     
 orr r0,r0,#0xc0000000
 mcr p15,0,r0,c1,c0,0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值