MCU省電模式幫助降低整體功耗
充分利用省電模式和功能
大多數(shù)單片機都設(shè)有多種模式,可提供各種省電選項。盡管模式的名稱可能各不相同,但是幾乎所有MCU都會提供“運行”、“空閑”和“休眠”三種典型模式。圖1給出了許多單片機上可用模式的匯總。在一些情況下,何時使用哪種模式是顯而易見的;例如,對于主要的處理工作,只能使用運行模式。在處理工作完成后,如果需要長時間等候外部事件,顯然應(yīng)該選擇休眠模式。何時適合選擇空閑模式并不容易判定,但是在發(fā)送或接收大批量的數(shù)據(jù)時最常選擇該模式。在保留其他功能的同時等候較短時間延遲來關(guān)閉CPU,也會使用空閑模式。
對于特定架構(gòu)的多種其它模式和功能的熟悉程度非常重要。雖然僅使用上述一些熟悉的模式也可以使設(shè)計功耗達到可接受的水平,但是要使應(yīng)用的電流消耗達到絕對的最低水平,最好是利用器件的獨特功能。例如,某些MCU采用了一種新型斷電模式,該模式取消對MCU的內(nèi)核供電以最大程度地降低功耗,從而使功耗低于常規(guī)斷電模式下的功耗。這種模式通常被稱為“深度休眠”。圖2中顯示的PIC24F16KA 16位MCU便是深度休眠器件的一個實例。
MCU內(nèi)核斷電時RAM也將斷電,這樣會導(dǎo)致其它低功耗模式(如休眠)下仍然可以保留的某些信息丟失。既然代價如此高昂,那么什么情況下才適合使用深度休眠模式呢?使用深度休眠模式的好處是取消器件的大部分供電時產(chǎn)生的漏電流很小,這可以顯著降低掉電電流——某些情況下可以降到50 nA以下,如圖1所示。小漏電流還使得深度休眠模式在高溫或高壓應(yīng)用中的表現(xiàn)更好,高溫和高壓常常導(dǎo)致休眠模式電流增加。深度休眠模式的另一個主要優(yōu)點是可以實現(xiàn)設(shè)計尺寸更小且性能更佳的芯片,同時不用放棄低功耗目標。這種模式最適用于掉電時間較長的應(yīng)用,這些應(yīng)用中減小掉電電流的重要性遠遠超過使應(yīng)用重新初始化的成本。
設(shè)計人員對器件的熟悉度變得重要的另一個原因是,不僅只有低功耗模式才能降低功耗,很多用于提升性能的功能也有利于降低功耗。例如,如果某個器件有內(nèi)部振蕩器,則用戶可以在主晶振開始運行初始化代碼的同時使用該內(nèi)部振蕩器,這樣便可以縮短器件喚醒所需的總時間。
數(shù)字外設(shè)的功耗
集成外設(shè)有助于顯著提升MCU的性能并允許移除外部元件,這兩點都有利于降低功耗。但是,如果使用不當,運行外設(shè)的成本會高過所節(jié)省的功耗??梢酝ㄟ^幾種簡單的技巧使外設(shè)自身的供電成本最小化,以維持低功耗應(yīng)用。
一般來說,單片機中使用的最耗電的外設(shè)是串行通信總線。I2C和SPI通信均使用多條高速線路。驅(qū)動這些線路的供電成本非常高。SPI在高速運行時消耗的電流會達到毫安級,因為它需要驅(qū)動三條高速I/O總線。驅(qū)動這些總線時的開關(guān)損耗會導(dǎo)致極大的電流消耗。相比而言,I2C運行速度較慢,但是因為它使用了上拉電阻,而當?shù)碗娮枭侠糜趯崿F(xiàn)高速時會造成相當大的電流,因此電流消耗會更大。
降低這些串行通信外設(shè)功耗的最簡單的方法是降低速度;但是,并不是所有情況下都可以這樣做。既然運行串行通信的大部分成本來自于驅(qū)動總線,那么我們就應(yīng)該將焦點放在驅(qū)動總線上。對于SPI而言,采用走線較短的簡潔電路板布局來最小化線路阻抗很重要。而I2C則相反——在總線上采用值較高的上拉電阻可以降低電流消耗,并且在某些情況下并不會減慢最大速度。要最小化這兩種情況下的功耗,可以減少總線上的器件數(shù)量或關(guān)閉未使用的器件的電源,而不是在選擇芯片上費腦筋。在軟件中,如果某個應(yīng)用正在等候串行數(shù)據(jù),可以通過禁止CPU來降低這些外設(shè)的功耗。另外,也可以將串行傳輸數(shù)據(jù)組合成集群,而不是持續(xù)傳輸,這樣應(yīng)用就可以更長時間保持在省電模式,而在更少時間處于喚醒狀態(tài)以發(fā)送和接收數(shù)據(jù)。
模擬外設(shè)的功耗
MCU上的模擬外設(shè)會對電流消耗產(chǎn)生很大的影響。BOR、比較器和ADC等模擬功能需要消耗足夠的功率才能產(chǎn)生準確的結(jié)果。因此,當這些功能部件在低功耗模式下運行時,無法總是像對數(shù)字功能那樣對其進行功耗優(yōu)化。正因為如此,確保應(yīng)用僅在需要時使能模擬功能(而不是始終使能)就變得非常重要。若要降低ADC的采樣速率,往往使用盡可能快的時鐘和盡可能短的采樣時間而不是延長采樣時間或放慢ADC時鐘。而且,在采樣完成后,應(yīng)該禁止ADC。對于很多MCU而言,這樣做可以用更低的功耗產(chǎn)生相同的結(jié)果。類似地,在器件運行過程中使用BOR功能來檢測會導(dǎo)致錯誤執(zhí)行的小幅壓降,比在器件處于省電模式時使用該功能更重要,因為在省電模式下,僅要求檢測大到足以造成RAM崩潰的壓降。因此,將BOR配置成采用功耗更低的休眠模式比配置成運行模式更加有用,這樣的話,可以利用在休眠時較低的功耗強度要求并達到低至50nA或更低的電流消耗,同時還能在運行時維持高性能。
本文小結(jié)
所有MCU都有一系列可用于降低設(shè)計功耗的功能。但是,這些功能中只有一小部分應(yīng)用到了所有器件中。因此,熟悉所使用的單片機的所有外設(shè)和獨特功能非常重要,只有這樣才能真正實現(xiàn)功耗得到優(yōu)化的設(shè)計。
評論