只需 MCU、LCD、32kHz 晶振以及一个电阻即可构成一部基本的倒计时定时器,而且只需一颗普通的钮扣电池就能实现连续超过 10 年的工作时间。有两大关键性设计可最小化功耗并尽可能延长电池使用寿命,一是认真选择电池,二是充分利用 MCU 的低功耗模式。
们之所以选择 CR2032 锂离子钮扣电池,主要是因为它占地较小,可以支持便携式应用,放电曲线较平,可直接驱动LCD,无需补偿,而且漏电极低,能够实现更长的工作时间。典型的 CR2032 额定容量为 ~200mA,工作时间可维持数小时。为了实现连续工作 10 年的设计目标,平均系统电流消耗应不得超过 2.28μA,电流消耗的计算方式为电池能量值除以应用的工作寿命,如下所示:
我们选择MCU是由于其待机电流极低,仅为 0.8μA,并且还包含了晶体振荡器、集成LCD驱动器和中断驱动唤醒定时器等。3? 英寸的 LCD 显示屏会增加 1μA 的系统电流消耗。整个工作期间的倒计时定时器的总待机流耗如下:
通常情况下,MCU 工作在待机模式中,时钟晶体频率为32kHz的计时器触发一秒中断,使 MCU 返回工作主循环(Mainloop),主循环采用可显著降低软件开销的直接 BCD 减法以实现软件倒计时寄存器的递减。我们向软件倒计时定时器添加十进制的 99h,实际减去的数为 1。直接 BCD 减法不仅有效,而且还可使倒计时直接显示在 LCD 上,不用再进行耗费电流的二进制 BCD 减法运算。软件接下来在 LCD 上显示倒计时寄存器中的值。最后,倒计时寄存器中的值将与零相比较,以决定预编程的时段是否已经到期,如果到期,那么将显示超时信息。主循环要求 CPU 及片上高速振荡器在 250μA 的电流消耗下工作。不过,由于我们在编写软件时已经将循环计数减至 100 以下,也就是说,在默认的 1MHz CPU 频率下相当于 100μs,因此在这样短的工作时间内,主循环所增加的电流消耗几乎可以忽略不计,其计算如下:
倒计时数字定时器的总电流消耗为待机与主循环电流消耗之和:
由于平均电流消耗达到 1.8μA ,这款倒计时定时器轻易地实现了电流消耗为 2.28μA 以下的设计目标,从而能够连续工作 10 年以上。既然电池使用寿命可达 10 年,那么我们在设计倒计时定时器时就可采用不可替换的电池,从而简化了构造,同时也降低了单位成本。由于大量 MCU 功能及引脚都未使用,因此我们还可用其添加额外特性。实施计数器所需的固件相当小,只在 MCU 的 8k 字节闪存上占用不到 250 字节。