1、STM32的3种低功耗模式
STM32有3种低功耗模式,分别是睡眠模式、停机模式和待机模式。
2、STM32在不同模式下的电流消耗
a、工作模式 消耗电流在27mA至36mA之间。
b、睡眠模式 消耗电流在5.5mA至14.4mA之间。
c、停机模式和待机模式 停机模式消耗电流在15uA 待机模式在5uA
3、各种低功耗模式下的唤醒条件
从上面的图表1可以看到,在睡眠模式下和待机模式下可以利用外部中断唤醒,而停机模式下只能通过以下4种方式唤醒:
a、WAKEUP引脚的上升沿
b、RTC闹钟事件
c、NRST引脚上的外部复位
d、IWDG独立看门狗的复位
4、项目需求与低功耗模式选择
项目的特殊需求有以下两点:
a、有烟雾报警情况下的随时从低功耗模式退出,使用wifi传输报警信号
b、报警器需要定时报告自身的状态,所以到时间了必须从低功耗模式退出。
根据需求b,必须要用STM32的RTC功能。所以功耗选择模式必须选择待机模式,即MCU在运行状态下消耗电流约为30mA,在低功耗模式下消耗电流约为5uA。
5、烟雾传感器模块
烟雾传感器模块的电路主要使用了XC5012芯片。它与Freescale的MC145012 Pin-to-Pin匹配。MC145012的结构框图如下:
注意上图中的IO引脚,它就是为了扩展。它的详细定义如下:
其功能就是当自身烟雾传感器检查到烟雾时,其输出脉冲信号,当其级联时,它可以接受别的模块的报警信号。
时序图如下:
当芯片检查到烟雾报警条件满足时,在IO引脚上输出高电平,直到芯片检查到烟雾报警条件不满足。
6、烟雾传感器与STM32的连接
因为项目需求a的约束,所以必须要用STM32低功耗的待机模式,但是此种低功耗模式不支持外部中断唤醒。因此要利用STM32的WAKEUP引脚唤醒待机模式。
STM32的复位电路如下:
从上图和实际测试可以得出,当系统从低功耗管理复位时,程序代码将重头开始重新跑。
但是硬件电路设计上必须区分,目前的复位重新运行是因为WAKEUP引脚的上升沿引起复位(实际就是因为有烟雾报警的情况而产生复位)还是因为RTC闹钟事件引起的复位(实际就是因为定时报告事件到了而产生的复位)。
根据以上情况设计的接口电路图如下: