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

                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频率为一半或更多。 

           
上一篇:韦东山嵌入式第一期学习笔记DAY_6——10_1_S3C2440时钟体系结构(S3C2440手册时钟部分分析)


下一篇:S3C2440移植linux3.4.2内核之支持YAFFS文件系统