低功耗嵌入式系統(tǒng)的設(shè)計(jì)考量:設(shè)計(jì)實(shí)例及功耗性能權(quán)衡
在本系列文章的(第1部分)中,我們討論了創(chuàng)建低功耗系統(tǒng)的一般設(shè)計(jì)考量。這一部分,我們不僅將探討低功耗應(yīng)用的實(shí)例、低功耗與系統(tǒng)性能之間的權(quán)衡取舍,而且還將提供使用第1部分所述技巧的低功耗系統(tǒng)設(shè)計(jì)實(shí)例。
低功耗應(yīng)用
1. 超低功耗遠(yuǎn)程應(yīng)用 — 這類系統(tǒng)的要求包括能夠在一天的大部分時(shí)間里保持睡眠狀態(tài)。該系統(tǒng)需要在用戶輸入時(shí)喚醒,執(zhí)行某些任務(wù)(比如發(fā)送一些命令)后,再進(jìn)入睡眠狀態(tài)。最大限度縮短所用時(shí)間可最大限度延長電池使用壽命。
2. 心率監(jiān)視器 — 這類系統(tǒng)的要求包括能夠定期自動喚醒CPU。時(shí)間間隔取決于該設(shè)備的工作狀態(tài),比如是否連接至人體。如果綁縛在人體上,它將以較短時(shí)間間隔讀取心率。如果沒有,它將在較長時(shí)間間隔內(nèi)喚醒,檢查是否綁縛到人體上,是否需要改變其工作狀態(tài)。
3. 無線傳感系統(tǒng) — 這類系統(tǒng)的要求包括能夠持續(xù)監(jiān)控系統(tǒng)環(huán)境并發(fā)送數(shù)據(jù)到中央系統(tǒng)以進(jìn)一步處理和分析數(shù)據(jù)。該系統(tǒng)應(yīng)該能夠在傳感器與中央系統(tǒng)互動和通信期間最大限度降低電源損耗。
4. 機(jī)械按鈕替換(MBR)— MBR可用于采用電容式觸摸按鈕替換機(jī)械按鈕。該系統(tǒng)必須每隔50~100ms對觸摸按鈕進(jìn)行一次采樣,然后進(jìn)入睡眠模式以節(jié)省電源。
低功耗與性能的權(quán)衡
大多數(shù)低功耗系統(tǒng)都可節(jié)省電源。正如本系列文章第1部分所討論的那樣,我們可通過讓系統(tǒng)在較低時(shí)鐘速率下運(yùn)行來降低動態(tài)功耗。但這種變化會降低系統(tǒng)響應(yīng)輸入的能力。對于一些應(yīng)用而言,這一時(shí)間間隔有時(shí)會造成危險(xiǎn)。
為彌補(bǔ)這一時(shí)間間隔,應(yīng)先確定它可以接受多長的響應(yīng)延時(shí),然后再設(shè)置系統(tǒng)時(shí)鐘,以確保實(shí)際時(shí)延不高于所需值。這樣可以以功耗為代價(jià),改善系統(tǒng)響應(yīng)性。
低功耗嵌入式系統(tǒng)設(shè)計(jì)的實(shí)例
在本節(jié)中,我們將討論如何使用賽普拉斯提供的PSoC流程及其低功耗模式設(shè)計(jì)低功耗雙工通信系統(tǒng)。該系統(tǒng)的基本功能是遙控其它設(shè)備。本實(shí)例將演示低功耗鈕扣電池供電(使用PSoC 4構(gòu)建)的發(fā)送器以及低功耗低成本2.4GHz收發(fā)器。
無線發(fā)送器不僅可使用鈕扣電池工作,而且還可觸發(fā)接收器的電源狀態(tài)(鎖定/打開)。在按下開關(guān)頭兩秒鐘時(shí),它會顯示電流狀態(tài),然后在2秒鐘超時(shí)之后用反狀態(tài)發(fā)送回顯信息給接收器。如果接收器發(fā)回確認(rèn)信號,隨后它就會更新閃存(用作EEPROM)中的狀態(tài)。
這里開發(fā)的系統(tǒng)功耗很低,系統(tǒng)工作時(shí)間只受電池儲存壽命限制,與系統(tǒng)功耗無關(guān)。下面我們將介紹該系統(tǒng)發(fā)送器部分的設(shè)計(jì)
發(fā)送器:
該模塊發(fā)送鎖定狀態(tài)至接收端,等待響應(yīng),以使用新狀態(tài)更新閃存。
在整個(gè)系統(tǒng)未使用時(shí),它會保持在“關(guān)斷”狀態(tài)。當(dāng)用戶按下發(fā)送器上的開關(guān)時(shí),整個(gè)系統(tǒng)的電源就會打開。系統(tǒng)初始化后,PSoC 4會讀取自己的閃存行,獲得當(dāng)前的鎖定狀態(tài),然后用該鎖定狀態(tài)更新該段LCD。接下來2秒鐘后,CPU會配置看門狗定時(shí)器,喚醒系統(tǒng),然后再進(jìn)入深度睡眠低功耗模式。
2秒鐘的深度睡眠時(shí)間可用來為最終用戶提供兩種特性:
1. 濾除用戶誤按按鈕操作。
如果用戶在系統(tǒng)喚醒前釋放開關(guān)(2秒鐘),系統(tǒng)會在不改變當(dāng)前狀態(tài)的情況下返回低功耗模式。這種延遲可用作一種特性,允許用戶在不觸發(fā)狀態(tài)的情況下檢查當(dāng)前狀態(tài)。為此,用戶可以短暫地按下開關(guān),在屏幕上出現(xiàn)之前狀態(tài)后將其釋放。
賽普拉斯提供經(jīng)預(yù)先測試、生產(chǎn)就緒的易用型應(yīng)用編程接口(API)來簡化對PSoC的編程。但在調(diào)用API時(shí),需要多個(gè)時(shí)鐘周期在協(xié)議棧中存儲當(dāng)前狀態(tài),隨后執(zhí)行API,最后再退出API。如果要降低功耗,每一個(gè)時(shí)鐘轉(zhuǎn)換都得考慮。要減少時(shí)鐘轉(zhuǎn)換數(shù)量,需要直接寫入寄存器,而不是調(diào)用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創(chuàng)建器提供的“SPI_SpiUartWriteTxData”,直接更新SCB FIFO發(fā)送數(shù)據(jù)。在加載具有所需值的FIFO后,調(diào)用“WFI”裝配函數(shù)使PSoC 4進(jìn)入睡眠模式。當(dāng)SPI發(fā)送完FIFO中存儲的全部數(shù)據(jù)后,它可生成一個(gè)中斷來喚醒PSoC 4,并重復(fù)這個(gè)過程。
與LCD顯示屏相似,PSoC創(chuàng)建器提供用于簡化編程的API。要優(yōu)化系統(tǒng)實(shí)現(xiàn)低功耗,這些API可采用所需的寄存器寫入代替。使用這些寄存器寫入可減少系統(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í)開始工作。因此系統(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)也無法完全使用電池的能量。假如我們能夠使用電池所存儲總能量的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í)間由電池的存儲壽命決定,而非系統(tǒng)本身的功耗。