arm 时钟(CLOCK)和电源管理(POWER MANAGEMENT )

2019-07-13 22:46发布

原文地址:http://blog.chinaunix.net/uid-28458801-id-3804521.html
arm体系结构:arm920t 

一,概述:
时钟(clock)和电源管理(power management)的关系
    电源管理模块使用软件控制系统时钟,以降低 arm920t 中的功耗。这些方案与 PLL ,时钟控制逻辑(FCLK,
HCLK 和PCLK)和唤醒信号有关。

时钟和电源管理模块由部分组成:时钟控制USB控制电源控制
1,时钟控制逻辑
arm920t中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU的FCLKAHB总线外设的 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 核的引脚信号         注意: nRSTOUTPWRENOM[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的FCLKAHB总线外设的 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_BITMPLL_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和除唤醒逻辑以外