<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430學(xué)習(xí)筆記(3)時(shí)鐘模塊

          MSP430學(xué)習(xí)筆記(3)時(shí)鐘模塊

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          1.時(shí)鐘模塊包括高速晶體振蕩器、低俗晶體振蕩器、數(shù)字控制振蕩器DCO、鎖頻環(huán)FLL以及鎖頻環(huán)增強(qiáng)版本FLL+等部件構(gòu)成。

          2.時(shí)鐘模塊產(chǎn)生3個(gè)輸出結(jié)果:ACLK(輔助時(shí)鐘),MCLK(主系統(tǒng)時(shí)鐘)和SMCLK(子系統(tǒng)時(shí)鐘)。

          本文引用地址:http://www.ex-cimer.com/article/201611/322337.htm

          3.MSP430采用鎖頻環(huán)FLL以及鎖頻環(huán)增強(qiáng)版本FLL+等部件將晶體頻率倍頻至系統(tǒng)頻率。數(shù)字控制振蕩器DCO和鎖頻環(huán)FLL計(jì)數(shù)相結(jié)合可實(shí)現(xiàn)快速啟動(dòng)。在晶體振蕩器失效時(shí)DCO可自動(dòng)用于系統(tǒng)時(shí)鐘。

          4.3個(gè)時(shí)鐘輸入源:

          a)LFXT1CLK:低頻時(shí)鐘源

          b)XT2CLK:高頻時(shí)鐘源

          c)DCOCLK:數(shù)字控制RC振蕩器

          5.3種時(shí)鐘信號(hào)

          a)ACLK:由LFXT1CLK信號(hào)經(jīng)1、2、4、8分頻后得到。ACLK可由軟件選做各外圍模塊的時(shí)鐘信號(hào),一般用于低俗外設(shè)。

          b)MCLK:由軟件選擇來(lái)自L(fǎng)FXT1CLK、XT2CLK、DCOCLK,然后經(jīng)過(guò)1、2、4、8分頻得到。MCLK主要用于CPU和系統(tǒng)。

          c)SMCLK:可由軟件選擇來(lái)自L(fǎng)FXT1CLK和DCOCLK,然后經(jīng)過(guò)1、2、4、8分頻得到。SMCLK主要用于高速外圍模塊。

          6.低速晶體振蕩模塊LFXT1

          a)接手表晶振(32768Hz)時(shí)直接接在XIN和XOUT兩個(gè)腳上,不需要其他外部器件,所有保持工作穩(wěn)定的原件和移相電容都集成在芯片中。

          b)也可通過(guò)外接450kHz~8MHz的高速晶體振蕩器來(lái)工作在高頻模式,這時(shí)兩個(gè)引腳要外接電容。

          7.高速晶體振蕩器XT2

          a)MSP430外接高速晶體振蕩器XT2的頻率為450kHz~8MHz。

          8.DCO振蕩器

          a)當(dāng)LFXT1和XT2失效時(shí),DCO振蕩器會(huì)自動(dòng)被選作MCLK的時(shí)鐘源。振蕩器失效引起的NMI中斷請(qǐng)求可以得到響應(yīng),甚至在CPU關(guān)閉的情況下也可以。

          b)DCO振蕩器是一個(gè)可數(shù)字控制的RC振蕩器,它的頻率隨供電電壓和溫度變化而具有一定的不穩(wěn)定性。MSP430可以通過(guò)操作控制寄存器軟件調(diào)節(jié)來(lái)增強(qiáng)振蕩頻率的穩(wěn)定性。

          9.時(shí)鐘模塊寄存器

          a)DCO控制寄存器DCOCTL

          i.DCOx:定義8種頻率之一,可分段調(diào)節(jié)DCOCLK的頻率,相鄰兩頻率相差10%。而頻率由注入直流發(fā)生器的電流定義。(默認(rèn)為3)。

          ii.MODx:定義在32個(gè)DCO周期中插入的fdco+1的個(gè)數(shù),而在余下的DCO周期中為fdco周期,控制切換DCO和DCO+1兩種頻率。如果DCO常數(shù)為7,表示已經(jīng)選擇最高頻率,此時(shí)不能利用MODx進(jìn)行頻率調(diào)整。

          b)基本時(shí)鐘系統(tǒng)控制寄存器1 BCSCTL1

          i.XT2OFF: 0使XT2開(kāi)啟,1使XT2關(guān)閉。(默認(rèn)關(guān)閉)

          ii.XTS:控制LFXT1的工作模式,選擇須結(jié)合實(shí)際晶體振蕩器的連接情況。為0時(shí)工作在低頻,為1時(shí)工作在高頻。(默認(rèn)為低頻,在高頻時(shí)必須連接相應(yīng)的高頻時(shí)鐘源)。

          iii.DIVAx:控制ACLK分頻。0為不分頻,1為2分頻,2為4分頻,3為8分頻。(默認(rèn)不分頻)。

          iv.XT5V:此位設(shè)置為0。

          v.RSELx:3位控制某個(gè)內(nèi)部電阻以決定標(biāo)稱(chēng)頻率。為0為最低,依次增加,7為最高。(默認(rèn)為4。)(由DCO默認(rèn)值為3,RSELx默認(rèn)值為4可以推算出DCO的默認(rèn)頻率為1000kHz左右。注意DCO的頻率不穩(wěn)定。)

          c)基本時(shí)鐘系統(tǒng)控制寄存器2 BCSCTL2

          i.SELMx:選擇MCLK時(shí)鐘源,0為DCOCLK,1為DCOCLK,2為T(mén)X2CLK,3為L(zhǎng)FTXT1CLK。(默認(rèn)為DCO)

          ii.DIVMx:選擇MCLK分頻,0為1分頻,1為2分頻,2為4分頻,3為8分頻。(默認(rèn)1分頻)

          iii.SELS:選擇SMCLK時(shí)鐘源,0為DCO,1為T(mén)X2CLK(默認(rèn)DCO)

          iv.DIVSx:選擇SMCLK分頻,0為1分頻,1為2分頻,2為4分頻,3為8分頻。(默認(rèn)為1分頻,即SMCLK與MCLK一樣)

          v.DCOR:選擇DCO電阻,0為內(nèi)部電阻,1為外部電阻

          d)SFR中斷使能寄存器1

          i.IE1是中斷允許寄存器,IE1.1是振蕩器故障中斷允許位OFIE,置位表示允許中斷,復(fù)位表示不允許中斷。

          e)SFR中斷標(biāo)志寄存器1

          i.IFG1是中斷標(biāo)志寄存器,IFG1.1是振蕩器故障中斷標(biāo)志位OF1FG,置位表示有振蕩器故障,復(fù)位表示沒(méi)有發(fā)生故障。

          10.PUC信號(hào)后DCOCLK被自動(dòng)選作MCLK時(shí)鐘信號(hào),根據(jù)需要MCLK的時(shí)鐘源可以另外設(shè)置為L(zhǎng)FXT1或者XT2.順序如下:

          a)復(fù)位OSCOFF

          b)清除OFIFG

          c)延時(shí)等待至少50us

          d)再檢查OFIFG,如果置位,則重復(fù)3,4步,直到OFIFG=0

          e)代碼:

          do

          {

          IFG1 &=~OFIFG;

          for(I = 0xff;i> 0;i --);

          }

          while((IFG1 & OFIFG) != 0);



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();