ZigBee研究之旅(三)---CC2530的电源管理模块

来源:互联网 发布:hilook撕拉面膜知乎 编辑:程序博客网 时间:2024/06/05 08:05

CC2530电源管理模块

(CC2530_datasheet.pdf节选)

*****************************************************************************************

* 作        者:fulinux

* 转载声明:原文链接

*****************************************************************************************


        CC2530通过不同的操作模式(电源模式)可以实现低功耗的操作。被提及的多种操作模式有活跃模式、闲置模式,还有电源模式1、2和3(即PM1-PM3)。最低功耗操作是通过关闭给个模块的供电电源以避免静态(电流泄漏)的电源损失获得,还有通过门控时钟和和关闭振荡器的方式来减小动态电源消耗的方式获得。

  1.  电源管理介绍
        不同的操作模式,或者电源模式,被用来允许低功耗模式。最低功耗操作是通过关闭给个模块的供电电源以避免静态(电流泄漏)的电源损失获得,还有通过门控时钟和和关闭振荡器的方式来减小动态电源消耗的方式获得。

        五种多样的操作模式(电源模式)分别称为活跃模式、闲置模式、PM1、PM2和PM3。活跃模式是正常模式,然而,PM3却拥有最低电源消耗。不同系统操作的电源模式所带来的影响如下表所示,一起的还有电压调整器和振荡器的选项。



活跃模式:全功能模式。电压调节器到数字核心是工作的,16MHz的RC振荡器和32MHz晶振两者或者其中之一可以是运行的。32KHz的RC振荡器或者32kHz的晶体振荡器中的一个是运行的。

闲置模式:除了CPU核停止运行外其他的和活跃模式完全相同。

PM1模式:电压调节器到数字核心是工作的。16MHz的RC振荡器和32MHz晶振都不运行,32KHz的RC振荡器或者32kHz的晶体振荡器中的一个是运行的。如果复位、外部中断或者睡眠时钟到期时都会转向活跃模式。

PM2模式:电压调节器到数字核心是不工作的。16MHz的RC振荡器和32MHz晶振都不运行,32KHz的RC振荡器或者32kHz的晶体振荡器中的一个是运行的。如果复位、外部中断或者睡眠时钟到期时都会转向活跃模式。

PM3模式:电压调节器到数字核心是不工作的。时钟振荡器全部关闭。一旦复位或是外部中断都会进入活跃模式。

         在PM2/PM3模式下POR(power on reset,上电复位)但是掉电检测是关闭的,这样一来只能提供有限的电压检测。这时如果在PM2/PM3模式期间供电电压低到1.4V以下温度达到70度或更高,然后被带回到良好的操作电压之前会重新进入主动模式,在PM2/PM3模式中保存到寄存器和RAM中的内容可能发生了变化。因此在设计系统电源时有必要关心一下这个问题,确保不要发生。在活跃模式中会定期准确的检测电压,当电压低于约1.7V时,掉电检测会触发复位。

  • 活跃模式和闲置模式
    活跃模式下所有功能工作,CPU、外围设备和RF射频模块也是活跃的。电压调整器也是工作的。
    活跃模式使用在正常操作的情况下。在活跃模式下(SLEEPCMD.MODE = 0x00)使能PCON.IDLE位,CPU核停止工作进入闲置模式,其他外围模块功能不变,任何一个有用的中断都会唤醒CPU核,即从闲置模式进入活跃模式。

  • PM1,16MHz的RC振荡器和32MHz晶振这两个高频振荡器电源关闭,电压调整器和32KHz振荡器工作。当PM1使能,一个省电序列(power-down sequence)运行。
    PM1一般被用预期在短时间内被唤醒(少于3ms)等情况下运行,因为PM1使用了一个快速power-down sequence。

  • PM2是第二个最节约功耗的模式。在PM2模式下上电复位、外部中断、32KHz振荡器和睡眠定时器处于活跃状态。I/O端口继续保存再进入PM2模式之前的I/O模式和输出值,所有其他的内部电路关闭。电压调节器也关闭了。当PM2模式进入时,一个省电序列(power-down sequence)运行。
    PM2典型是使用在当睡眠时钟作为唤醒事件,并结合外部中断的情况下。当预期时间长于3ms是,现对于PM1而言,PM2应该被选择。如果时间太短的话,节电效果并不比PM1好。

  • PM3是功耗最低的模式。所有的内部电路从电压调节器过来的电源都被关闭了(基本上所有的数字模块;唯一的例外是中断检测和POR(上电复位)水平检测)。内部电压调整器合所有的振荡器都关闭了。

上电复位和外部中断两个功能是唯一在PM3模式下工作的功能。I/O端口继续保存再进入PM3模式之前的I/O模式和输出值。上电复位或外部中断会使设备进入活跃模式(如果是外部中断回到进入PM3模式时运行的位置,如果是上电复位重新执行程序了)。PM3和PM2一样使用了一个快速power-down sequence。
PM3被用来等待一个外部中断事件而达到一个最低功耗的情况下。一般被使用在预期睡眠时间长于3ms的情况下。


      2.  电源管理控制

      SLEEPCMD寄存器中的MODE位和PCON.IDLE位来控制电源模式。设置SFR(Specialfunction register,特殊寄存器)PCON.IDLE位是要依赖SLEEPCMD.MODE位的选择。
一个被使能为外部中断、睡眠时钟和上电复位都能唤醒设备从其他模式进入活跃模式。
       当进入PM1-PM3,一个power-down sequence将运行。当设备跳出PM1-PM3模式时,如果CLKCONCMD.OSC=0且过渡到另一个模式时(正在设置PCON.IDLE,一个模式到另一个模式会有一个过渡期),设备的时钟频率从16MHz自动改变到32MHz。如果CLKCONCMD.OSC = 1当PCON.IDLE过去被设置时设备会继续运行在16MHz时钟频率下。

       设置PCON.IDLE位的指令必须安排在一个正确的方式下操作。紧接着上面指令的下一个汇编指令的第一个字节不能是在4字节边界位置。而且,高速缓冲器一定是使能的(参考FCTL寄存器中的CM描述)。如果上面的要求不能满足很可能带来更大的功耗。如果这些条件满足,紧接着设置PCON.IDLE位指令后的第一个汇编指令在导致系统被唤醒的中断服务子程序之前执行,但是在系统被唤醒之后(这句太复杂,英文如下:Provided this requirement is fulfilled, the first assembly instruction after the instruction that sets the PCON.IDLE bitis performed before the ISR of the interrupt that caused the system to wakeup,but after the system wokeup.)如果这个指令是一个全局性的中断禁用,它有可能在唤醒后紧跟代码执行,但是要在中断服务子程序被服务之前。

       IAR中有个例子展示了如何被使用如下。在一个汇编程序中的指令设置了PCON为1。在一个C文件中被声明为形如extern void EnterSleepModeDisableInterruptsOnWakeup(void),并且被调用。这一句RSEG NEAR_CODE:CODE:NOROOT(2)声明是为了确保MOV PCON,#1 执行的位置是2字节对齐的。因为MOV PCON,#1指令是3字节的,满足其后一条的一条指令不是4字节对齐的。下面的例子中的这条指令是CLR EA使全局中断禁用,这就意味着唤醒系统的中断服务子程序不被执行直到IEN0.EA位在后面的代码中被重新设置之后。如果这个这个功能不需要,可以吧CLR EA指令换成一个NOP就行。

PUBLIC EnterSleepModeDisableInterruptsOnWakeup
                                               FUNCTION EnterSleepModeDisableInterruptsOnWakeup,0201H
          RSEG NEAR_CODE:CODE:NOROOT(2)
                                                                                                           EnterSleepModeDisableInterruptsOnWakeup:
                                                                                                                           MOV PCON,#1
                                                                                                                           CLR EA
                                  RET

      3. 电源管理寄存器
      这节描述电源管理的寄存器。所有寄存器的值再进入PM2或PM3时会一直保持。



*****************************************************************************************

* 作        者:fulinux

* 转载声明:原文链接,不对之处请指针。

*****************************************************************************************


译完



原创粉丝点击