- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
优化利用PSoC芯片片上资源的低功耗应用
功耗在PSoC内各资源的分配
表1:PSoC 内资源功耗分配表。
表一给出了PSoC内所有资源的的功耗分配,它以电流消耗的方式来表示。除了CPU时钟以外,表中的电流值都是对应一个单元或一个单位资源所消耗的电流。如果相同的资源有n个,则该类资源所消耗的电流要乘以n。例如,一个应用需使用4个时钟频率为3MHz的数字模块,5个低功率等级/高运放偏置的模拟模块、20个时钟为0.25MHz的IO口、4个时钟为0.25MHz的排总线、一个输出缓冲器(高运放偏置),供电电源为3.3V,而CPU时钟为12MHz,通过查表和计算我们可以得到芯片所消耗的电流I和功耗P分别是:
I=2.76 +4×0.035+5×0.3+20×0.015+4×0.011+2.0=6.748mA
P=I×V=6.748×3.3=22.268mW
从表中我们也可以得到如下一些关系:
功耗是正比于Vdd电压;功耗是正比于CPU的时钟频率;数字模块的功耗是正比于数字模块的时钟频率;排总线功耗是正比于排总线的时钟频率;GPIO的功耗是正比于GPIO的时钟频率;模拟模块功耗是正比于模拟块的功率等级;参考电路和模拟输出缓冲器功耗是正比于模拟资源的运放偏置;总的功耗是正比于所使用资源的数目,所使用的资源越多,功耗越大。
从以上关系式我们可以知道选择合适的工作电压和CPU时钟频率对降低功耗是非常重要的。在满足应用的条件下,应尽可能选择比较低的工作电压和CPU时钟频率。模拟资源的功耗往往占用PSoC总的功耗一个相对大的比例。对于模拟资源,模拟的功率等级和运放偏置的设置对功耗的影响也比较大。同样在满足应用的条件下,应尽可能选择较低的功率等级和运放偏置。对于没有使用的模拟资源应该将它对应的功率等级设置成Off以切断它的供电减少漏电。对于间断使用的模拟资源,应该在不使用的时候将它对应的功率等级设置成Off,在需要使用的时候才把它打开,以尽量减少它的平均功耗。
技术文库
[p]
用SLEEP方式降低功耗
便携式设备通常会有很多的待机时间。对于便携式设备用SLEEP方式降低功耗是所有嵌人式芯片降低功耗的最有效的方法之一。由于PSoC包含有一个SLEEP定时器,因此它允许用户使用两种方式使用SLEEP来降低功耗:它们是空闲方式和深度SLEEP。
1.空闲方式
PSoC在5V供电时处于SLEEP状态时的电流消耗仅3μA。PSoC SLEEP定时器可在PSoC处于SLEEP状态时提供定时中断主动唤醒PSoC激活程序。SLEEP定时器可设置1秒、1/8秒、1/6 秒和1/256秒。空闲方式的工作示意图如图1。
图1:空闲方式示意图。
待机时,它使PSoC在某一个固定的周期里唤醒PSoC一次,激活程序查寻是否有外部事件,或者扫描按键。如果有外部事或者按键被按,则使PSoC继续处于激活状态,处理事件。否则PSoC重新进入睡眠状态。这时PSoC的平均电流为:
由上式可见,在空闲阶段,只要激活的时间相对睡眠的时间足够的短,平均功耗就很小。在进入SLEEP之前必须将SLEEP中断打开:
INT_MSK0"=INT_MSK0_Sleep;
空闲时间的长短,除了标准的SLEEP定时器设置,也可以使用多个标准的SLEEP间隔来改变它的周期,如:
M8C_Sleep;
M8C_Sleep;
M8C_Sleep;
它的SLEEP时间间隔是3×(1/8)秒(假定SLEEP定时器设置1/8秒)。
2.深度SLEEP
相对空闲方式,深度SLEEP方式就是空闲方式中激活的时间等于零或几乎等于零。即只要进入待机状态,就使PSoC的功耗降到最低。唤醒必须通过复位或外部I/O口事件触发I/O中断来实现。如:
While(Idle = = 1)
{
M8C_ClearWDTAndSleep;
M8C_Sleep;
}
当PSoC激活时,置Idle为0,进入待机状态时置Idle为1。在这种方式,通常将SLEEP中断禁止。
无论是在空闲方式还是在深度SLEEP方式,在进入SLEEP方式之前,都必须注意以下几点:
将所有的I/O口设置成高阻输入或者Strong输出模式,在Strong输出模式,设置相应的电平使进出I/O口的电流为零。
将所有模拟资源的功率等级设置成off,切断所有模拟资源的电源供给。
设置全局中断允许:
M8C_EnableGInt;
清除所有现场的和待定的中断请求:
INT_VC = 0;
技术文库
[p]
5.如果Watchdog看门狗被使用,也可以暂时禁止它。或者如上面的程序不断给它清零。需要说明的是,看门狗定时器共享SLEEP定时器,但时间是SLEEP定时器的3倍。
充电泵
大多数PSoC芯片都有一个充电泵电路。这对便携式设备非常有用。因为便携式设备通常使用电池供电。PSoC的充电泵可以使用户的便携式设备的电池电压下降到1.1V时,PSoC芯片和设备仍然能工作,当然它也取决于负载电流的大小。
图2:充电泵电路。
充电泵电路如图2所示。它需要3个外部元件:一个电感L1,一个二级管D1和一个旁路电容C1。如果在全局资源的参数设置中设置Switch Mode Pump为On,那么当Vdd的电压超过复位电压后,充电泵电路就开始工作了。一旦电池电压下降导致Vdd电压低于参考电压Verf,则充电泵电路就在SMP脚上输出1.3MHz的脉冲信号,使由片内和片外共同组成的升压电路工作。Vdd将上升到一个合适的电压,PSoC将继续正常工作。参考电压Verf可以在全局资源的参数设置中设置,也可以通过设置寄存器VLT_CR的值来设置。它总是比低电压检测LVD的值要略微高一些。在SLEEP方式,充电泵电路也仍然工作。但这时PSoC的电流消耗会比正常的SLEEP方式的电流要大。对于有些精确的测量,如AD转换,也可以短时间关掉充电泵电路,以减少该电路工作时在Vdd上产生的噪声。
根据具体的应用,电感L1可选1~10μH,而电容C1的典型值为10μF,二级管可选择肖特基二级管。
本文小结
由于PSoC里面的资源比较多,正常工作时它的功耗可能较其他芯片会高一些。但PSoC在SLEEP方式工作时有非常低的功耗,在5V供电时它的典型值是3μA,在3.3V供电时它的典型值是2μA。正确地使用PSoC的内部资源和采用合适的SLEEP工作方式,以及充电泵的使用,使得PSoC在便携式设备的应用中能发挥更多的优势。
作者:翁小平
资深主任应用工程师
赛普拉斯半导体
Email:wengxp@citiz.net
技术文库
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...
上一篇:汽车功率MOSFET解决更多设计挑战
下一篇:如何设计三通道LED驱动器