低功耗嵌入式系統(tǒng)的設(shè)計(jì)考量:設(shè)計(jì)實(shí)例及功耗性能權(quán)衡
掃描二維碼
隨時(shí)隨地手機(jī)看文章
發(fā)送器:
該模塊發(fā)送鎖定狀態(tài)至接收端,等待響應(yīng),以使用新?tīng)顟B(tài)更新閃存。
在整個(gè)系統(tǒng)未使用時(shí),它會(huì)保持在“關(guān)斷”狀態(tài)。當(dāng)用戶按下發(fā)送器上的開(kāi)關(guān)時(shí),整個(gè)系統(tǒng)的電源就會(huì)打開(kāi)。系統(tǒng)初始化后,PSoC 4會(huì)讀取自己的閃存行,獲得當(dāng)前的鎖定狀態(tài),然后用該鎖定狀態(tài)更新該段LCD。接下來(lái)2秒鐘后,CPU會(huì)配置看門(mén)狗定時(shí)器,喚醒系統(tǒng),然后再進(jìn)入深度睡眠低功耗模式。
2秒鐘的深度睡眠時(shí)間可用來(lái)為最終用戶提供兩種特性:
1. 濾除用戶誤按按鈕操作。
如果用戶在系統(tǒng)喚醒前釋放開(kāi)關(guān)(2秒鐘),系統(tǒng)會(huì)在不改變當(dāng)前狀態(tài)的情況下返回低功耗模式。這種延遲可用作一種特性,允許用戶在不觸發(fā)狀態(tài)的情況下檢查當(dāng)前狀態(tài)。為此,用戶可以短暫地按下開(kāi)關(guān),在屏幕上出現(xiàn)之前狀態(tài)后將其釋放。
賽普拉斯提供經(jīng)預(yù)先測(cè)試、生產(chǎn)就緒的易用型應(yīng)用編程接口(API)來(lái)簡(jiǎn)化對(duì)PSoC的編程。但在調(diào)用API時(shí),需要多個(gè)時(shí)鐘周期在協(xié)議棧中存儲(chǔ)當(dāng)前狀態(tài),隨后執(zhí)行API,最后再退出API。如果要降低功耗,每一個(gè)時(shí)鐘轉(zhuǎn)換都得考慮。要減少時(shí)鐘轉(zhuǎn)換數(shù)量,需要直接寫(xiě)入寄存器,而不是調(diào)用API來(lái)完成。此外,賽普拉斯還可為您提供簡(jiǎn)單易使的宏命令,以完成寄存器寫(xiě)入。
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;
在該代碼中,沒(méi)有使用隨PSoC創(chuàng)建器提供的“SPI_SpiUartWriteTxData”,直接更新SCB FIFO發(fā)送數(shù)據(jù)。在加載具有所需值的FIFO后,調(diào)用“WFI”裝配函數(shù)使PSoC 4進(jìn)入睡眠模式。當(dāng)SPI發(fā)送完FIFO中存儲(chǔ)的全部數(shù)據(jù)后,它可生成一個(gè)中斷來(lái)喚醒PSoC 4,并重復(fù)這個(gè)過(guò)程。
與LCD顯示屏相似,PSoC創(chuàng)建器提供用于簡(jiǎn)化編程的API。要優(yōu)化系統(tǒng)實(shí)現(xiàn)低功耗,這些API可采用所需的寄存器寫(xiě)入代替。使用這些寄存器寫(xiě)入可減少系統(tǒng)周期數(shù),從而可降低功耗:
CY_SET_REG32(CYREG_LCD_DATA02, 0x10000000);
CY_SET_REG32(CYREG_LCD_DATA03, 0x10000011);
電池使用壽命:
因?yàn)槲覀冎繯 = 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
發(fā)送器可從全部充滿電的大容量電容器發(fā)送回顯信息50次。系統(tǒng)在電壓達(dá)到1.65V時(shí)開(kāi)始工作。因此系統(tǒng)使用的電荷量為:
Qused = 8800 x 10-6 x (3 – 1.65) = 11.88 mC…(ii)
Qper ping = Qused/發(fā)送回顯信息的次數(shù)= 11.88 mC / 50 = 236 μC …(iii)
標(biāo)準(zhǔn)鈕扣電池的額定容量為200mAHr。
由于我們知道Q = I x t
因此Qbatt = 200 x 10-3 x 1Hr = 200 x 10-3 x 3600s = 720 C
由于存在各種物理限制,因此我們永遠(yuǎn)也無(wú)法完全使用電池的能量。假如我們能夠使用電池所存儲(chǔ)總能量的50%。
那么Qbatt-available = 720 x 0.5 = 360 C
電池能夠支持的發(fā)送回顯信息次數(shù)為 = Qbatt-available / Qper ping = 360 / (236 x 10-6) = 1.525 x 106
假如每天發(fā)送20次回顯信息,電池使用壽命就為= 1.525 x 106 / 20
= 76.2 x 103天
= 76.2 x 103 / 365年
= 208年(不可能)
整個(gè)系統(tǒng)的實(shí)際有效電池使用時(shí)間由電池的存儲(chǔ)壽命決定,而非系統(tǒng)本身的功耗。