Blackfin處理器低功耗設(shè)計(jì)
2 工作模式轉(zhuǎn)換
Blackfin533具有4種工作模式:全速、激活、睡眠、深度睡眠,功耗大小關(guān)系為:全速>激活>睡眠>深度睡眠。不同模式下處理器的內(nèi)核電壓及時(shí)鐘設(shè)置不同,如表4所示。所以靈活調(diào)整系統(tǒng)的工作模式可以有效的降低系統(tǒng)的功耗。
在轉(zhuǎn)換工作模式時(shí),應(yīng)該明確處理器當(dāng)前的工作模式,而系統(tǒng)的工作模式由PLL控制寄存器(PLL_CTL)中的PLL_OFF,BYPASS,STOPCK和PDWN狀態(tài)位共同確定。圖2說(shuō)明了各種工作模式轉(zhuǎn)換之間的聯(lián)系以及轉(zhuǎn)換條件。
通過(guò)設(shè)置PLL_CTL寄存器實(shí)現(xiàn)工作模式的轉(zhuǎn)換,新的設(shè)置不會(huì)立即生效,需要先執(zhí)行下面的一個(gè)程序段
從當(dāng)前工作模式轉(zhuǎn)換至另一個(gè)工作模式的具體過(guò)程簡(jiǎn)述如下
(1)設(shè)置喚醒請(qǐng)求,目的:將處理器喚醒,使PLL_CTL中新的設(shè)置生效以便進(jìn)入新的工作模式。
(2)按模式轉(zhuǎn)換條件,設(shè)置PLL_CTL。
(3)禁止一切中斷,將處理器置入空閑狀態(tài),等待喚醒請(qǐng)求。
(4)喚醒后恢復(fù)中斷,PLL_CTL中設(shè)置的新值開(kāi)始生效,處理器進(jìn)入新的工作模式,繼續(xù)執(zhí)行其他指令。
默認(rèn)狀態(tài)下,所有的中斷都能產(chǎn)生1個(gè)喚醒請(qǐng)求,即當(dāng)1個(gè)中斷產(chǎn)生時(shí),處理器內(nèi)核就會(huì)收到1個(gè)喚醒請(qǐng)求,如果此時(shí)處于空閑狀態(tài),則會(huì)退出此狀態(tài),處理相應(yīng)(中斷)程序。通過(guò)系統(tǒng)中斷喚醒使能寄存器(SIC_IWR)設(shè)置中斷與喚醒請(qǐng)求之間的對(duì)應(yīng)關(guān)系,其中24~31位保留,其他位分別對(duì)應(yīng)了不同的中斷源,如定時(shí)器中斷、看門狗定時(shí)器中斷、DMA中斷等,某一位如果置1,則相應(yīng)中斷發(fā)生時(shí)就會(huì)產(chǎn)生1個(gè)喚醒事件。系統(tǒng)復(fù)位后,SIC_IWR中的所有位均為1。
工作模式轉(zhuǎn)換的關(guān)鍵就是對(duì)PLL_CTL的設(shè)置,這就要求確認(rèn)系統(tǒng)當(dāng)前的工作模式,再根據(jù)圖2所示的轉(zhuǎn)換條件設(shè)置PLL_CTL寄存器。另外必須設(shè)置喚醒請(qǐng)求,因?yàn)樗兄诖_定處理器何時(shí)被喚醒,進(jìn)入預(yù)期的工作狀態(tài)。
下面是一個(gè)從全速模式到激活模式轉(zhuǎn)換的實(shí)例:
對(duì)喚醒請(qǐng)求進(jìn)行設(shè)置,本例中利用看門狗定時(shí)器中斷來(lái)產(chǎn)生這個(gè)喚醒請(qǐng)求。
(1)設(shè)置定時(shí)器的計(jì)數(shù)值:通過(guò)看門狗計(jì)數(shù)寄存器(WDOG_CNT)設(shè)置。
(2)設(shè)置相應(yīng)事件:當(dāng)定時(shí)器計(jì)數(shù)至O時(shí)產(chǎn)生中斷,即看門狗控制寄存器(WDOG_CTL)第3位置1,其余位為0。
(3)利用看門狗中斷產(chǎn)生喚醒請(qǐng)求:SIC_IWR寄存器第24位置1,其他位為0,使能看門狗中斷喚醒請(qǐng)求。
評(píng)論