低功耗嵌入式系统的设计考量:设计实例及功耗性能权衡
扫描二维码
随时随地手机看文章
发送器:
该模块发送锁定状态至接收端,等待响应,以使用新状态更新闪存。
在整个系统未使用时,它会保持在“关断”状态。当用户按下发送器上的开关时,整个系统的电源就会打开。系统初始化后,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年(不可能)
整个系统的实际有效电池使用时间由电池的存储寿命决定,而非系统本身的功耗。