最近做的几个项目,都是锂电供电的,对于电池供电的应用来说,低功耗是无法避开的。不少半导体公司特意推出超低功耗系列单片机,比如TI MSP430系列,ST STMxxL系列等。
单片机一般都提供多种电源模式,常见的有运行模式、空闲模式和休眠模式。除了运行模式,其它的都可以统称为低功耗模式。以某个单片机的手册参数来对比下不同模式下的电流。
1 运行模式
系统时钟和内部的模块都在活动状态,运行模式下也可以通过降频、关闭不需要的外设时钟等方式降低工作时的功耗。
系统工作在48MHz频率下,所有外设模块都关闭时,电流高达8.5mA,当降频至12MHz时,电流约3.6mA, 下降很明显。
2 空闲模式
仅禁止系统时钟,其它的模块仍在活动状态,任意中断可唤醒。在空闲模式下,RAM和特殊功能寄存器保持,但如果定时器在运行,定时计数寄存器值会增加。空闲模式下功耗比正常模式有大幅降低。
系统工作在48MHz频率下,所有外设模块都关闭时,进入空闲模式后电流约为3.3mA,还不到正常模式的一半。
3 掉电模式
系统时钟、内部模块都停止运行,只有RAM中的数据保持。也有不少MCU提供内部低速RC震荡器或支持外部低速时钟,如果使能了低速时钟,那么由低速时钟驱动的模块依然可以在掉电模式下运行,比如定时器,RTC模块等。
进入掉电模式后,电流下降到uA级,当然这款只是普通的单片机,并不是低功耗系列的,低功耗系列的单片机在掉电模式下一般可以到1uA以下。
4 掉电模式控制
对于电池供电应用,mA级耗电肯定是不满足需求的,我们着重分析下掉电模式处理。
(1)内部模块
进入掉电模式后,会自动关闭主时钟,以及使用该时钟驱动的外设模块。如SPI、高速定时器等。
内部模拟电路有独立的供电,需手动关闭ADC、模拟比较器 等模拟电路。
关闭内部电压监测功能,如低压复位、掉电检测电路。
低速时钟如不需要也要关闭,否则使用该时钟的模块(看门狗或通用定时器等)依然在运行。如果使用了RTC模块需要在掉电模式下也能计时,不要停止RTC的驱动时钟。
(2)引脚控制
输出IO,输出高电平或低电平的原则 是切断电流输出或流入。
输入IO,根据外部驱动情况选择高阻输入(外部输入电平是固定的)或上下拉。
悬空的引脚处理,配置为高阻输入时,抗干扰较差,可能会漏电,应配置为固定电平。
下载器时钟与信号,禁止下载功能,将引脚配置为IO模式,输出低电平。唤醒后可恢复为下载功能。
(3)唤醒配置
在进入掉电模式前,要配置好唤醒源及唤醒方式,常用的有IO输入中断唤醒、外部中断唤醒、内部通信模块事件唤醒等,在唤醒后要恢复正常功能。有些特殊的应用需要定时唤醒,比如蓝牙。