低功耗嵌入式系統(tǒng)的設(shè)計(jì)考量:設(shè)計(jì)實(shí)例及功耗性能權(quán)衡
賽普拉斯提供經(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)本身的功耗。
評(píng)論