(1)电源管理-S3C2440芯片电源管理模块解析

(1)电源模块解析 
       电源管理块通过软件控制系统时钟,以降低S3C2440的功耗。这些方案涉及锁相环、时钟控制逻辑(FCLK、HCLK和PCLK)和唤醒信号。图1显示了S3C2440A的时钟分布。

                           
                                                                图1  S3C2440A的时钟分布​​​​​​​
        其中,FCLK由ARM920T使用。
        HCLK用于AHB总线:内存控制器、中断控制器、液晶控制器,DMA和USB主机块。
        PCLK用于APB总线:WDT、IIS、I2C、PWM定时器、MMC接口等外围设备,ADC, UART, GPIO, RTC和SPI。

       S3C2440A有四种电源模式(正常、慢速、空闲、睡眠),模式之间不允许自由转换。有关模式之间可用的转换,见图2。
    
                               
                                                                    图2   s3c2440电源模式之间的相互转化

                                                                      表1 每个电源模式的电路模块状态      
            
(2)四种电源模式
         正常模式: 在正常模式下,所有外设和基本块,包括电源管理块、CPU核心、总线控制器、内存控制器、中断控制器、DMA和外部主机都可以完全运行。但是,除了基本模块外,每个外围设备的时钟都可以通过软件选择性地停止,以降低功耗。
         空闲模式:在空闲模式下,除总线控制器、内存控制器、中断控制器和电源管理块外,CPU核心时钟停止。要退出空闲模式,应激活EINT[23:0]、RTC报警中断或其他中断。(EINT在GPIO模块打开之前不可用)。
         慢速模式:在慢模式下,可以通过应用慢时钟和不使用锁相环来降低功耗。FCLK是没有锁相环的输入时钟(XTIpll或EXTCLK)的divide_by_n的频率。分频比由CLKSLOW控制寄存器和CLKDIVN控制寄存器中的SLOW_VAL决定。

                                           表2 CLKSLOW控制寄存器和CLKDIVN控制寄存器中的SLOW_VAL  

       休眠模式:这个模块断开了内部电源。因此,在这种模式下,除了唤醒逻辑之外,没有由于CPU和内部逻辑而导致的功耗。激活睡眠模式需要两个独立的电源。两个电源中的一个为唤醒逻辑提供电源。另一个提供包括CPU在内的其他内部逻辑电源。在休眠模式下,CPU和内部逻辑的电源将被关闭,保持唤醒逻辑的电源。休眠模式下的唤醒可以通过EINT[15:0]或RTC报警中断来发出。

(3)进入睡眠模式步骤
        1. 设置适合睡眠模式的GPIO配置。
        2. 屏蔽INTMSK寄存器中的所有中断。
        3. 正确配置唤醒源,包括RTC警报。
        4. 将USB设置为挂起模式。(MISCCR[13:12]= 11 b)
        5. 将一些意义值保存到GSTATUS[4:3]寄存器中(唤醒后的执行函数地址,堆栈指针等)这些寄存器在睡眠模式下得到保护。
        6. 配置数据总线上的上拉电阻MISCCR[1:0],D[31:0]。
        7. 通过清除LCDCON1来停止LCD。
        8. 读取rREFRESH和rCLKCON寄存器以填充TLB。
        9. 让SDRAM通过设置REFRESH[22]=1b进入自刷新模式。
       10. 等待SDRAM自动刷新有效。
       11. 设置MISCCR[19:17]=111b,使SDRAM信号(SCLK0、SCLK1、SCKE)在睡眠时受到保护模式,不让SDRAM内的数据被破坏。
       12. 在CLKCON寄存器中设置睡眠模式位。
       注意:当系统从NAND引导启动时,必须将硬件pin配置- EINT[23:21]设置为输入。

(4)退出睡眠模式步骤
       1. 如果发出一个唤醒源中断,将产生内部复位信号(同外部复位信号)。复位持续时间由内部16位计数器逻辑决定,复位时间计算公式为:tRST = (65535 / XTAL_frequency)。
       2. 检查GSTATUS2[2],以确定是否由睡眠模式唤醒。
       3. 通过设置MISCCR[19:17]=000b,释放SDRAM信号保护。
       4. 配置SDRAM内存控制器。
       5. 等待SDRAM自刷新被释放。大多数情况下,SDRAM需要所有SDRAM行的刷新周期。
       6. GSTATUS[3:4]中的信息可以用于用户自己的目的,因为GSTATUS[3:4]中的值在睡眠模式下被保存了下来。
       7. 对于EINT[3:0],检查SRCPND寄存器。
|          对于EINT[15:4],检查EINTPEND而不是SRCPND(虽然设置了一些EINTPEND位,但不会设置SRCPND)。
                                       表3 睡眠模式管脚配置表 (参考作用,用户应该根据实际情况配置) 

(5)满足从睡眠模式唤醒的条件
    a. 外部中断 EINT[15:0] 产生。
    b. EINTn 引脚必须在GPIO控制寄存器中配置为EINT。
    c. nBATT_FLT引脚必须是高电平。
    注意:刚睡醒后,相应的EINTn引脚将不用于唤醒,这意味着该引脚可以作为正常外部中断请求引脚。

(6)其它
   
(1)如果将CLKCON[2]设置为1,则进入空闲模式,S3C2440A将在一定的延迟之后进入空闲模式(直到电源控制逻辑从CPU接收到ACK信号)。
   (2)锁相环只能在低功耗的慢速模式下关闭。如果锁相环在任何其他模式下被关闭,MCU的操作就不能得到保证。
   (3)建议输出端口处于高电平状态,以减少休眠模式下的电流消耗。
    

 

 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值