原文地址:http://blog.chinaunix.net/uid-28458801-id-3804521.html
arm体系结构:arm920t 一,概述:时钟(clock)和电源管理(power management)的关系: 电源管理模块使用软件来控制系统时钟,以降低 arm920t 中的功耗。这些方案与
PLL ,时钟控制逻辑(FCLK,HCLK 和PCLK)和唤醒信号有关。时钟和电源管理模块由三部分组成:时钟控制,USB控制和电源控制。1,时钟控制逻辑arm920t中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU的FCLK,AHB总线外设的
HCLK 以及APB 总线外设的
PCLK。arm920t包含两个锁相环(PLL
):一个(MPLL)提供给
FCLK、HCLK 和PCLK,另一个(UPLL)专用于USB模块(48MHz)。 时钟控制逻辑可以不使用 PLL 来减慢时钟,并且可以由软件连接或断开各外设模块的时钟,以降低功耗。
2,USB时钟控制
USB 主机接口和 USB设备接口都需要 48MHz的时钟。arm920t中,USB专用PLL
(UPLL)生成48MHz给USB。 在配置 PLL(UPLL)之前不提供 UCLK。
3,电源控制逻辑arm920t包含了各种电源管理方案来保证对给定任务的最佳功耗。arm920t中的电源管理模块可以激活成四种模式:正常(NORMAL)模式、慢速(SLOW
)模式、空闲(IDLE)模式和睡眠(SLEEP)模式。
关系如下:
1,note: 主时钟源来自一个外部晶振(XTIpll)或外部时钟(EXTCLK
)。时钟发生包含了一个连接到外部晶振的振荡器oscillator(震荡放大器Oscillation Amplifier,OSC),还含有 arm920t所必须的两个用于产生高频率时钟的 PLL(锁相环)。 2,note: 时钟与电源管理用到的arm920t 核的引脚信号
注意:
nRSTOUT,
PWREN,
OM[3:2],
CLKOUT[1:0]
3,note: (1)在NORMAL模式下,FCLK=Mpll;
(2)在SLOW模式(刚上电或是复位)下,FCLK=(晶振或EXTCLK)/分频因子。
CPU默认的工作主频为12MHz或16.9344MHz,这里使用最多的是12M。
相关的寄存器:
二,时钟控制逻辑
1,PLL,FCLK,HCLK,PCLK 的含义
arm920t中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU的FCLK,AHB总线外设的
HCLK 以及APB 总线外设的 PCLK。 FCLK 是提供给
ARM920T 的时钟。 HCLK 是提供给用于ARM920T,存储器控制器,中断控制器,LCD
控制器,D MA和USB主机模块的 AHB总线的时钟。 PCLK 是提供给用于外设如
WDT,IIS,I2C ,PWM 定时器,MMC/SD接口,ADC,UART,GPIO,RTC和SPI 的APB 总线的时钟。 arm920t包含两个锁相环(PLL ):一个(MPLL)提供给
FCLK、HCLK 和PCLK,一个(UPLL)专用于USB模块(48MHz)。 时钟控制逻辑可以不使用 PLL 来减慢时钟,并且可以由软件连接或断开各外设模块的时钟,以降低功耗。
含有两个锁相环MPLL、UPLL产生系统所需要的不同频率的时钟
MPLL:
为CPU产生FCLK时钟
为AHB产生HCLK时钟
为APB产生PCLK时钟
UPLL:
为USB (Host and Device)产生UCLK (48MHz)
2,PLL 与 FCLK 的关系
(1)在NORMAL(启用PLL)模式下,FCLK=Mpll;
(2)在SLOW模式(刚上电或是复位,没有启用PLL)下,FCLK=(晶振或EXTCLK)/分频因子。
CPU默认的工作主频为12MHz或16.9344MHz,这里使用最多的是12M。
锁相环输出频率( Mpll
和Upll计算方法不相同 )
Mpll =(2*m*Fin) / (p*2^S)
Upll =(m * Fin) / (p * 2^S)
Fin指CPU外围接的晶振本身的频率,通常为12MHz。
m = MDIV+8,
p = PDIV+2,
s = SDIV。
注意
: 当你设置 MPLL 和UPLL 的值时,你必须首先设置 UPLL 值再设置 MPLL 值。(大约需要 7 个NOP的间隔)
主振荡电路:
通过 OM[3:2] arm920t核的管脚选择 时钟源:
注意: 1. 虽然MPLL在复位后就开始,MPLL输出(Mpll)并没有作为系统时钟,直到软件写入有效值来设置
MPLLCON寄存器。 在设置此值之前,是将外部晶振或外部时钟源提供的时钟直接作为系统时钟。即使用户不想改变
MPLLCON寄存器的 默认值,用户也应当写入与之相同的值到 MPLLCON 寄存器寄存器中。 常用模式为:OM[3:2]
= 00 2. OM[3:2]是用于当 OM[1:0]为11时决定一个测试模式 3,FCLK,HCLK,PCLK 相互之间的关系
HDIVN,PDIVN:
HCLK3_HALF
,HCLK4_HALF :
三,USB时钟控制
USB 主机接口和 USB设备接口都需要 48MHz的时钟。arm920t中,USB专用PLL
(UPLL)生成48MHz给USB。 在配置 PLL(UPLL)之前不提供 UCLK。电源控制逻辑arm920t包含了各种电源管理方案来保证对给定任务的最佳功耗。arm920t中的电源管理模块可以激活成四种模式:正常(NORMAL)模式、慢速(SLOW
)模式、空闲(IDLE)模式和睡眠(SLEEP)模式。
普通(NORMAL)模式: 1,锁相环(PLL)工作
2,为CPU和所有片内外设提供时钟
3,此模式系统功耗最大
4,它允许用户用软件控制外设的运行。例如如果一个定时器不是必须的, 用户可以断开连接到定时器的时钟(CLKCON寄存器),以降低功耗。 慢速(SLOW
)模式: 1,锁相环不工作 2,CPU等直接使用原始时钟、或原始时钟的分频工作,此模式工作时钟频率低而使功耗低,并且锁相环不工作也使功耗降低 3,在此模式中,功耗只取决于外部时钟的频率。排除了因 PLL 而产生的功耗。 注意:PLL只可以在
慢速(SLOW)模式 下被关闭,如果在其他模式下关闭PLL,MCD并不确保 关闭PLL 操作正常。
4,模式转换 (1),MPLL启动后需要等待一段时间(LockTime),MPLL输出才会稳定。
(2) 普通(NORMAL)模式 转换为 慢速(SLOW
)模式 把 时钟慢速控制(CLKSLOW)寄存器 中的 bit[4]SLOW_BIT=1 即可。
(3)慢速(SLOW
)模式 转换为 普通(NORMAL)模式 @1@ MPLL 输出稳定 前(在
锁定时间(Lock Time)之前) 如果用户在 PLL 锁定时间后通过同时禁止 CLKSLOW 寄存器中的 SLOW_BIT和MPLL_OFF位来实现 从慢速模式切换到普通模式,只在 PLL 锁定时间后才会改变频率。
@2@ MPLL 输出稳定 后 (在 锁定时间(Lock Time)之后) 如果用户在PLL 锁定时间后通过禁止 CLKSLOW 寄存器中的 SLOW_BIT来实现从慢速模式切换到普通模式, 只在禁止慢速模式后才会改变频率。
空闲(IDLE)模式: 1,停止为CPU提供时钟,CPU不工作(其外设均工作) 2,退出方法:任何中断请求可唤醒CPU工作,退出空闲模式 3,这个模块只断开了CPU内核的时钟(FCLK),但它提供时钟给所有其它外设。 空闲模式产生了因 CPU内核而产生的功耗减少的结果。任何中断请求给
CPU都可以使其从空闲模式中唤醒。 4,如何进入 空闲(IDLE)模式 把 时钟生成控制寄存器(CLKCON)
的 bit[2]IDLE BIT 设置为 1,进入空闲模式。此位不会自动清零
。 睡眠(SLEEP)模式: 1,时钟模块断电,除了唤醒电路之外所有部分均不供电. 2,系统需分成两部分供电。此模式功耗最低 3,退出方法:用中断唤醒必须设置外中断 (1)外部中断EINT0---15 (2)实时钟报警中断 4,这个模块与内部供电是分离的。因此在此模式中发生了没有因 CPU和除唤醒逻辑以外的