低功耗嵌入式系统的设计考量:设计实例及功耗性能权衡
扫描二维码
随时随地手机看文章
在本系列文章的(第1部分)中,我们讨论了创建低功耗系统的一般设计考量。这一部分,我们不仅将探讨低功耗应用的实例、低功耗与系统性能之间的权衡取舍,而且还将提供使用第1部分所述技巧的低功耗系统设计实例。
低功耗应用
1. 超低功耗远程应用 — 这类系统的要求包括能够在一天的大部分时间里保持睡眠状态。该系统需要在用户输入时唤醒,执行某些任务(比如发送一些命令)后,再进入睡眠状态。最大限度缩短所用时间可最大限度延长电池使用寿命。
2. 心率监视器 — 这类系统的要求包括能够定期自动唤醒CPU。时间间隔取决于该设备的工作状态,比如是否连接至人体。如果绑缚在人体上,它将以较短时间间隔读取心率。如果没有,它将在较长时间间隔内唤醒,检查是否绑缚到人体上,是否需要改变其工作状态。
3. 无线传感系统 — 这类系统的要求包括能够持续监控系统环境并发送数据到中央系统以进一步处理和分析数据。该系统应该能够在传感器与中央系统互动和通信期间最大限度降低电源损耗。
4. 机械按钮替换(MBR)— MBR可用于采用电容式触摸按钮替换机械按钮。该系统必须每隔50~100ms对触摸按钮进行一次采样,然后进入睡眠模式以节省电源。
低功耗与性能的权衡
大多数低功耗系统都可节省电源。正如本系列文章第1部分所讨论的那样,我们可通过让系统在较低时钟速率下运行来降低动态功耗。但这种变化会降低系统响应输入的能力。对于一些应用而言,这一时间间隔有时会造成危险。
为弥补这一时间间隔,应先确定它可以接受多长的响应延时,然后再设置系统时钟,以确保实际时延不高于所需值。这样可以以功耗为代价,改善系统响应性。
低功耗嵌入式系统设计的实例
在本节中,我们将讨论如何使用赛普拉斯提供的PSoC流程及其低功耗模式设计低功耗双工通信系统。该系统的基本功能是遥控其它设备。本实例将演示低功耗钮扣电池供电(使用PSoC 4构建)的发送器以及低功耗低成本2.4GHz收发器。
无线发送器不仅可使用钮扣电池工作,而且还可触发接收器的电源状态(锁定/打开)。在按下开关头两秒钟时,它会显示电流状态,然后在2秒钟超时之后用反状态发送回显信息给接收器。如果接收器发回确认信号,随后它就会更新闪存(用作EEPROM)中的状态。
这里开发的系统功耗很低,系统工作时间只受电池储存寿命限制,与系统功耗无关。下面我们将介绍该系统发送器部分的设计
发送器:
该模块发送锁定状态至接收端,等待响应,以使用新状态更新闪存。
在整个系统未使用时,它会保持在“关断”状态。当用户按下发送器上的开关时,整个系统的电源就会打开。系统初始化后,PSoC 4会读取自己的闪存行,获得当前的锁定状态,然后用该锁定状态更新该段LCD。接下来2秒钟后,CPU会配置看门狗定时器,唤醒系统,然后再进入深度睡眠低功耗模式。
2秒钟的深度睡眠时间可用来为最终用户提供两种特性:
1. 滤除用户误按按钮操作。
如果用户在系统唤醒前释放开关(2秒钟),系统会在不改变当前状态的情况下返回低功耗模式。这种延迟可用作一种特性,允许用户在不触发状态的情况下检查当前状态。为此,用户可以短暂地按下开关,在屏幕上出现之前状态后将其释放。
赛普拉斯提供经预先测试、生产就绪的易用型应用编程接口(API)来简化对PSoC的编程。但在调用API时,需要多个时钟周期在协议栈中存储当前状态,随后执行API,最后再退出API。如果要降低功耗,每一个时钟转换都得考虑。要减少时钟转换数量,需要直接写入寄存器,而不是调用API来完成。此外,赛普拉斯还可为您提供简单易使的宏命令,以完成寄存器写入。
SPI_TX_FIFO_WR_REG = WRITE | RX_ADDR_P0;
SPI_TX_FIFO_WR_REG = 0x12;
SPI_TX_FIFO_WR_REG = 0x34;
SPI_TX_FIFO_WR_REG = 0x56;
SPI_TX_FIFO_WR_REG = 0x78;
SPI_TX_FIFO_WR_REG = 0x9A;
WFI;
SPI_TX_FIFO_WR_REG = ACTIVATE;
SPI_TX_FIFO_WR_REG = 0x73;
WFI;
在该代码中,没有使用随PSoC创建器提供的“SPI_SpiUartWriteTxData”,直接更新SCB FIFO发送数据。在加载具有所需值的FIFO后,调用“WFI”装配函数使PSoC 4进入睡眠模式。当SPI发送完FIFO中存储的全部数据后,它可生成一个中断来唤醒PSoC 4,并重复这个过程。
与LCD显示屏相似,PSoC创建器提供用于简化编程的API。要优化系统实现低功耗,这些API可采用所需的寄存器写入代替。使用这些寄存器写入可减少系统周期数,从而可降低功耗:
CY_SET_REG32(CYREG_LCD_DATA02, 0x10000000);
CY_SET_REG32(CYREG_LCD_DATA03, 0x10000011);
电池使用寿命:
因为我们知道Q = CV …(i)
这里C = 2200 x 10-6 F x 4 = 8800 x 10-6,V = 3 V
Q = 8800 x 10-6 x 3 = 26.4 mC
发送器可从全部充满电的大容量电容器发送回显信息50次。系统在电压达到1.65V时开始工作。因此系统使用的电荷量为:
Qused = 8800 x 10-6 x (3 – 1.65) = 11.88 mC …(ii)
Qper ping = Qused/发送回显信息的次数= 11.88 mC / 50 = 236 μC …(iii)
标准钮扣电池的额定容量为200mAHr。
由于我们知道Q = I x t
因此Qbatt = 200 x 10-3 x 1Hr = 200 x 10-3 x 3600s = 720 C
由于存在各种物理限制,因此我们永远也无法完全使用电池的能量。假如我们能够使用电池所存储总能量的50%。
那么Qbatt-available = 720 x 0.5 = 360 C
电池能够支持的发送回显信息次数为 = Qbatt-available / Qper ping = 360 / (236 x 10-6) = 1.525 x 106
假如每天发送20次回显信息,电池使用寿命就为= 1.525 x 106 / 20
= 76.2 x 103天
= 76.2 x 103 / 365年
= 208年(不可能)
整个系统的实际有效电池使用时间由电池的存储寿命决定,而非系统本身的功耗。