使用CY8C22X45系列PSoC設(shè)計(jì)低功耗觸摸按鍵應(yīng)用系統(tǒng)
除了全局芯片參數(shù)的設(shè)置,不同型號(hào)的PSoC內(nèi)部還有數(shù)目不等的數(shù)字模塊與模擬模塊,如果這些模塊被配置成具體的功能模塊,如PWM,SPI Master等,這些功能模塊還會(huì)引入額外的工作電流。需要注意一點(diǎn),上述的測(cè)試結(jié)果沒(méi)有引入任何的數(shù)字與模擬模塊,因此針對(duì)實(shí)際的應(yīng)用,工作電流還需要在上述結(jié)果基礎(chǔ)上增加功能模塊帶來(lái)的額外電流。
3. 開(kāi)發(fā)低功耗的固件代碼
實(shí)際上,除了設(shè)置適當(dāng)?shù)男酒瑓?shù),固件代碼的編寫(xiě)對(duì)系統(tǒng)功耗也有著重要影響。PSoC具有良好的可配置性能,其數(shù)字模塊和模擬模塊可以配置成不同的功能模塊,根據(jù)應(yīng)用需求,僅在使用時(shí)才將其使能,否則一直讓其停止工作,即可減少系統(tǒng)的工作電流。
和大多數(shù)芯片一樣,PSoC也提供低功耗休眠模式,有些型號(hào)的PSoC可以提供低至0.1uA的休眠電流。休眠時(shí)系統(tǒng)時(shí)鐘以及所有由系統(tǒng)時(shí)鐘驅(qū)動(dòng)的功能模塊都會(huì)停止工作,但是由32K時(shí)鐘驅(qū)動(dòng)的模塊仍會(huì)繼續(xù)工作。PSoC內(nèi)部包含一個(gè)休眠定時(shí)器(Sleep Timer),通過(guò)設(shè)定其超時(shí)時(shí)間并使能,PSoC即進(jìn)入休眠模式,直到被休眠定時(shí)器的超時(shí)中斷喚醒,除此之外,PSoC休眠中也可以被GPIO的中斷,低電壓檢測(cè)中斷,模擬模塊產(chǎn)生的中斷和由32K驅(qū)動(dòng)模塊產(chǎn)生的中斷喚醒,因此進(jìn)入休眠前需要清除所有等待中的中斷,否則PSoC無(wú)法進(jìn)入休眠模式。
如果在全局資源里設(shè)置好了Sleep Timer的周期,那么僅需兩行代碼即可讓PSoC進(jìn)入休眠模式,第一行代碼使能Sleep Timer中斷,第二行代碼令PSoC進(jìn)入休眠模式。
INT_MSK0 |= INT_MSK0_SLEEP;
M8C_Sleep;
大多數(shù)PSoC提供了4種固定的休眠間隔(表格 7),芯片內(nèi)的Watchdog周期是當(dāng)前休眠間隔的3倍,如果同時(shí)使用休眠和Watchdog,需要在代碼中的適當(dāng)位置清除Watchdog計(jì)數(shù)器,以防系統(tǒng)超時(shí)重置。
可以通過(guò)多次使用M8C_Sleep來(lái)獲得更長(zhǎng)的休眠時(shí)間,例如,如果休眠時(shí)間為125ms,下述代碼可以獲得約375ms的休眠時(shí)間。
評(píng)論