返回 登录
0

FCLK,HCLK和 PCLK时钟三者之间的关系

阅读5218

FCLK是提供给ARM920T 的时钟。

HCLK 是提供给用于 ARM920T,存储器控制器,中断控制器,LCD 控制器,DMA 和 USB 主机模块的 AHB总线的时钟。

PCLK 是提供给用于外设如WDT,IIS,I2C,PWM 定时器,MMC/SD 接口,ADC,UART,GPIO,RTC 和SPI的 APB 总线的时钟。
S3C2440A还支持对FCLK、 HCLK和PCLK之间分频比例的选择。 该比例由CLKDIVN控制寄存器中的HDIVN

和 PDIVN所决定。

普通模式

普通模式中,包括电源管理模块、CPU核心、总线控制器、存储器控制器、中断控制器、DMA和外部主控在

内的所有外设和基本模块完全可以运行。然而除基本模块外,提供给每个外设的时钟都可以由软件有选择的停止以

降低功耗。

空闲模式

空闲模式中,停止了除总线控制器、存储器控制器、中断控制器、电源管理模块外的提供给CPU 核心的时钟。

要退出空闲模式,应当激活EINT[23:0]或RTC 闹钟中断或其它中断(开启GPIO 模块前 EINT不可用)

进入空闲模式

   如果置位CLKCON[2]为 1来进入空闲模式,S3C2440A 将在一些延时后(直到电源控制逻辑收到CPU 打包的

ACK信号)进入空闲模式。

慢速模式

慢速模式中,可以应用慢时钟和排除来自 PLL 的功耗来降低功耗。CLKSLOW 控制寄存器中的 SLOW_VAL

和 CLKDIVN控制寄存器决定了分频比例。

寄存器的说明:
LOCKTIME 0x4C000000 PLL 锁定时间计数寄存器

MPLLCON 0x4C000004 MPLL 配置寄存器

UPLLCON 0x4C000008 UPLL 配置寄存器

注意:

当你设置MPLL 和UPLL的值时,你必须首先设置UPLL值再设置MPLL 值。 (大约需要7个 NOP的间隔)

MPLL控制寄存器
Mpll = ( 2 × m × Fin ) / ( p × 2s
)
m = ( MDIV + 8 ), p = ( PDIV + 2 ), s = SDIV
UPLL控制寄存器
Upll = ( m × Fin ) / ( p × 2s
)
m = ( MDIV + 8 ), p = ( PDIV + 2 ), s = SDIV
CLKCON 0x4C00000C 时钟生成控制寄存器
CLKDIVN 0x4C000014 时钟分频控制寄存器 //1:4:8时候设置成5
CAMDIVN 0x4C000018 摄像头时钟分频寄存器

注意:
1. 应当谨慎设置CLKDIVN,不要使其超过HCLK和 PCLK的最小值。
2. 如果 HDIVN 不为 0,CPU 总线模式应该使用以下指令使其从快总线模式改变为异步总线模式(S3C2440
不支持同步总线模式)。
MMU_SetAsyncBusMode
MRC p15, 0, r0, c1, c0, 0
ORR r0, r0, #R1_nF:OR:R1_iA
MCR p15, 0, r0, c1, c0, 0
如果 HDIVN 不为0 并且CPU 总线模式为快总线模式,CPU 运行在HCLK。可以用此特性在不影响 HCLK 和
PCLK 的情况下改变CPU频率为一半或更多。

效果不是很好的请参考原文:http://blog.csdn.net/qq_21792169/article/details/50363538

评论