2.3 F2833x的低功耗模式
我们在使用仿真器调试时,貌似很少会关注低功耗模式。一般是在仿真器连不上的时候(特别是在DSP芯片被损坏之后),会看到“xxxxfault,the device may be in low power mode”。
CMOS器件的主要功耗是动态功耗(主要发生在晶体管的开通与关断过程,而静态功耗几乎可以忽略),所以关闭外设时钟就取消了其动态工作条件。在供电电压不变的情况下,降低功耗意味着芯片需要的电流减小,从而降低供电电路的功耗。
2.3.1 低功耗的分类及应用
1.F2833x低功耗模式的分类
低功耗模式是与普通运行模式相对的,包括空闲(Idle)、待机(Standby)、暂停(Halt)三种模式,它们的区别主要在于内核时钟、外设时钟、看门狗时钟、PLL/晶振的使能与否。
(1)IDLE(空闲)模式
IDLE模式下,指令计数器PC不再增加,CPU停止执行指令,处于休眠状态。复位信号、XNMI信号、信号及任何使能的中断均可使系统退出该模式。
IDLE模式下可以只使能部分模块的时钟,通过关闭不用的外设,达到降低功耗的目的。
(2)STANDBY(待机)模式
该模式下,进出CPU的时钟均关闭。但看门狗模块时钟未关闭,看门狗仍然工作。复位信号、XNMI信号、信号及指定的GP IOA口信号可使系统退出该模式。
STANDBY模式关闭了CPU和外设的时钟,但是保留PLL,与PC的待机模式比较接近。
(3)HALT(暂停)模式
该模式下,振荡器和P LL模块关闭,看门狗模块也停止工作。复位信号、XNMI信号及指定的GP IOA口信号可使系统退出该模式。
使用仿真器调试时,HALT模式很容易观察到:仿真器连接DSP并下载程序后,CCS的左下角就有“CPU Halted”的指示,在程序运行时单击CCS的Halt按钮之后,还可以看到CCS的左下角有“CPU Halted”的指示。
几种低功耗模式的比较见表2.7。
表2.7 三种低功耗模式的比较
需要特别注意的是:
1)必须使用一个足够宽(一般由GPIO的输入限制寄存器来设置)的低电平信号,若低电平信号的宽度不够,则系统无法退出低功耗模式。
2)空闲模式下C28x的SYSCLKOUT会继续保持工作,这与C24x不同。
3)在C28x DSP中,即使关闭了CPU时钟(CLKIN),JTAG仍然可保持工作。
4)无论哪种低功耗模式,都不会影响输出引脚的状态(包括PWM引脚),即DSP切换至低功耗模式时,输出引脚将保持切换前的状态,使用PWM时须特别注意!
2.低功耗模式控制寄存器LPMCR0
寄存器位寻址格式为SysCtrlRegs.LPMCR0。位格式如图2.20所示。
图2.20 LPMCR0的位格式
低功耗模式的进入可按如下步骤进行。
步骤1:使能希望的外部中断。
例如,使能PIE中的XINT1:PieCtrlRegs.PIEIER1.bit.INTx4=1。
步骤2:设置LPM标志位。
例如,CPU进入HALT模式:SysCtrlRegs.LPMCR0.bit.LPM=0x0002;
步骤3:按照预设的模式,硬件进入低功耗。
2.3.2 低功耗模式程序分析
1.HALT模式
CPU处于HALT模式,配置GPIO0为CPU唤醒引脚(高→低→高),GPIO1为进入中断指示引脚。需要特别注意的是,低电平的保持时间至少是在晶振启动时间的基础上加2个晶振时钟。
二维码2.6
2.IDLE 模式
CPU处于IDLE 模式,GPIO0配置为XINT1,下降沿触发XINT1中断将CPU唤醒。GPIO1为进入中断指示引脚。
二维码2.7
3.STANDBY模式
该模式下,配置GPIO0为CPU唤醒引脚(高→低→高),GPIO1为进入中断指示引脚。需要特别注意的是,低电平至少保持(2+QUALSTDBY)个晶振时钟。
二维码2.8