記得某位網(wǎng)友曾經(jīng)說過,學(xué)習(xí)任何一款單片機,首先要學(xué)的是它的時鐘。的確如此,時鐘是如此的重要,在不知道系統(tǒng)時鐘的情況,感覺做什么事都是迷迷糊糊的。
之前學(xué)過51,它的時鐘很簡單,就一個外部晶振。然后學(xué)了430的G2553,它的時鐘就有點麻煩了,時鐘源多(兩個外部晶振,一個內(nèi)部超低功耗低頻振蕩器,一個內(nèi)部調(diào)整低頻參考振蕩器),內(nèi)部還有鎖頻環(huán),而且出來的時鐘還能被分頻。原因是TI主打低功耗,必須得有各種頻率來滿足設(shè)計需要,畢竟,頻率越低,功耗越低。
現(xiàn)在的,430的F5529,跟G2553比起來也就需要配置的時鐘相關(guān)的寄存器是其3倍而已…還有個PMM(電源管理模塊)的配置…
新增的PMM是干嘛的呢?還是那句話,TI主打超低功耗。PMM不僅完成了對電源的監(jiān)管和監(jiān)測(這五個字包含了太多的內(nèi)容…能力有限,不多解釋),還為用戶提供了更改核心電壓(VCORE)的途徑。都知道,作為一個系統(tǒng),肯定要供電的,5529有寬的電源(DVCC)電壓范圍1.8V-3.6V。DVCC經(jīng)低壓降電壓調(diào)整器(LDO),產(chǎn)生的一個二次核心電壓,專門為CPU數(shù)字邏輯供電,共有1.4V(0-12MHZ),1.6V(0-16MHZ),1.8V(0-20MHZ)和1.9V(0-25MHZ)四個級別。當(dāng)系統(tǒng)需要的時鐘頻率不高時,我們可以配置低的時鐘,可以配置低的VCORE,這樣在時鐘方面就把功耗降到最低了。當(dāng)然,函數(shù)庫HAL_PMM.c/h中有SetVCore(uint8_t level) ,輕輕松松地就可以設(shè)置VCORE了。
那下面就是真正的時鐘配置了。學(xué)過數(shù)字邏輯電路的,對分頻應(yīng)該很熟悉。那倍頻呢?鎖頻環(huán)(FLL)到底是什么?還有經(jīng)常被提到的鎖相環(huán)(PLL)又是什么?往往打敗新手的都是一些陌生的名詞。鎖頻環(huán),顧名思義,就是使兩個信號的頻率能達到某種關(guān)系。而這兩個信號,一個可以是輸入時鐘的子信號(剛剛說了,分頻很容易實現(xiàn)的),另一個可以是輸出時鐘的子信號�,F(xiàn)在再看看文檔給出的公式:
當(dāng)D*(N + 1)越大的時候,fDCOCLK也就越大了,從而也就達到了倍頻的作用啦!鎖相環(huán)的原理也是類似咯,把兩個信號的相位鎖定相等了,那頻率也就相等了,而這兩個信號同樣是輸入和輸出時鐘的子信號,而且都是它們的分頻。至于怎么鎖頻,如何鎖相,有數(shù)字鑒頻器,數(shù)字鑒相器,再加上反饋(說起來簡單,是因為我懂的不多…)。
1. 當(dāng)時鐘源選擇了外部晶振時,需要將晶振管教對應(yīng)的IO口設(shè)為復(fù)用功能
2. 當(dāng)時鐘源選擇了外部晶振時,需要使能晶振
3. 若選擇了XT1,還要選擇負(fù)載電容,當(dāng)然,默認(rèn)12pf就可以了
4. 不要忘記核心電壓的選擇
5. 當(dāng)時鐘配置好了之后,系統(tǒng)可以作稍微的延時,等待時鐘穩(wěn)定
6. 穩(wěn)定之后,XT1,XT2的驅(qū)動力可以減小以降低功耗