在本系列文章的(第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年(不可能) 整個系統的實際有效電池使用時間由電池的存儲壽命決定,而非系統本身的功耗。 |