要做到省电,可以从以下几个方向着手:
(1):CPU:CPU是整个系统的心脏,不能轻易停掉,但“跳慢一点”当然会省电。一般用于嵌入是系统的CPU都会提供以下两种方式来控制CPU的用电:
a:clock调整。例如输入CPU的clock是48MHz,CPU内部可以设定将其升频(如×2变成96MHz)或降频(如除以2,除以4,除以及8等)后的频率当做CPU的工作频率。
b:执行状态调整。CPU通常会提供诸如halt或sleep的指令,执行后可以让CPU停止一些CPU内部功能。并暂时停止抓指令来执行。顾名思义,halt是暂停的意思,sleep则是睡眠的意思,两者同样会让cpu暂停执行命令,但后者显然会关掉比较多的CPU功能,当然会比较省电。当产生特定的中断就可以把CPU从halt或sleep模式中唤醒,继续抓取指令(CPU醒来后执行的第一行指令一定是中断处理程序)。
(2):关闭暂时不使用之外部装置的电源:这个当然必须配件设计配合,首先该装置及相关零件的电源供给必须独立,接着硬件设计必须提供可以控制该装置电源切换的开关,这样驱动程序才可以通过I/O port控制这个开关,达到真正切断该装置电源的目的。基本上装置电源切断后就不应该再耗电。
(3):切换装置的执行模式:和CPU一样,有些装置不能任意切断电源,所以就会提供不同的执行模式,基本上不会像CPU那么复杂,通常就是full run mode 与standby mode两种模式,驱动程序必须依据date sheet内的规定,在暂时用不到该装置的时候,让其进入较省电的standby mode.
(4):将CPU的各个PIN引脚逐一切换为较省电的模式:用于嵌入式系统的CPU为了节省PIN引脚,降低成本等因素,它的某些PIN引脚可能是多用途的。当这些PIN引脚被设定成不同的用途,就可能有不同的耗电状态,所以当某根PIN引脚暂时不使用时,必须将其设定不最省电的用途,这是个很麻烦的工作,每个CPU的设计逻辑都不一样,有时候甚至要用trial-and-error,实际测量在不同设定下的耗电流。虽然如此,我们还是有几个简单的基本原则:
1:通常GPIO会比其他设定(如A/D port ,date bus等)省电;
2:通常output PIN会比input PIN省电;
3:通常将output PIN保持在低电位,会比保持在高电位省电;
4:如果GPIO有被电路拉高(pull high)或拉低(pull low),逆势而为通常会比较耗电。 |