<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時(shí)鐘設(shè)置及應(yīng)用總結(jié)

          MSP430時(shí)鐘設(shè)置及應(yīng)用總結(jié)

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          ********************************基于MSP430F1612***************************

          在MSP430單片機(jī)中,一個(gè)時(shí)鐘周期 = MCLK晶振的倒數(shù)。如果MCLK是8MHz,則一個(gè)時(shí)鐘周期為1/8us。

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

          一個(gè)機(jī)器周期 = 一個(gè)時(shí)鐘周期,即430每個(gè)動(dòng)作都能完成一個(gè)基本操作。

          一個(gè)指令周期 = 1~6個(gè)機(jī)器周期,具體根據(jù)具體指令而定。

          另外,指令長(zhǎng)度只是一個(gè)存儲(chǔ)單位,與時(shí)間沒(méi)有必然的關(guān)系。

          MSP430單片機(jī)的時(shí)鐘模塊主要包括:

          三個(gè)時(shí)鐘:輔助時(shí)鐘ACLK 、主時(shí)鐘MCLK 、子系統(tǒng)時(shí)鐘SMCLK

          三個(gè)振蕩器:低頻時(shí)鐘源LFXT1 、高頻時(shí)鐘源XT2 、數(shù)字控制RC振蕩器DCO

          而MSP430單片機(jī)工作所需時(shí)鐘就是由這些振蕩器振蕩后經(jīng)處理產(chǎn)生的。

          (1)ACLK:是LFXT1CLK信號(hào)經(jīng)1/2/4/8分頻后得到的,主要用作低速外圍的時(shí)鐘

          (2)MCLK:是LFXT1CLK,XT2CLK,DCOCLK的三者之一決定,由軟件選擇,然后經(jīng)1/2/4/8分頻后得到,主要用于CPU和系統(tǒng)

          (3)SMCLK:可由LFXT1CLK和DCOCLK,或者XT2CLK與DCOCLK決定,然后經(jīng)1/2/4/8分頻后得到,主要用于高速外圍模塊

          MSP430的時(shí)鐘模塊由DCOCTL,BCSCTL1,BCSCTL2,IE1,IFG1這五個(gè)寄存器來(lái)確定,具體的功能如下所示:

          DCOCTL:控制DCO振蕩器

          BCSCTL1:控制XT2,LFXT1,DCO振蕩,并控制ACLK的分頻情況

          BCSCTL2:設(shè)置三個(gè)時(shí)鐘源分別選擇什么振蕩器

          我們?cè)诔绦蚶飳?duì)寄存器的設(shè)置,也就是對(duì)三個(gè)振蕩器進(jìn)行設(shè)置,時(shí)鐘振蕩器設(shè)置好了,還要對(duì)時(shí)鐘模塊進(jìn)行設(shè)置,也就是讓三個(gè)時(shí)鐘模塊MCLK SMCLK ACLK選擇相應(yīng)的時(shí)鐘振蕩器以得到不同頻率的時(shí)鐘。

          PUC信號(hào)后,系統(tǒng)選擇內(nèi)部電阻以實(shí)現(xiàn)頻率的輸出。RSELx = 4 與 DCOx = 3,開(kāi)始時(shí)使DCO有一個(gè)適中的頻率。MCLK與SMCLK的時(shí)鐘信號(hào)全部來(lái)自DCO,約為800KHz(芯片手冊(cè))。PUC信號(hào)后將LFXT1設(shè)置到LF模式(XTS=0),并且關(guān)斷HF模式(XTS=1)與關(guān)斷XT2振蕩器。

          (1)DCOCTL:DCO控制寄存器,地址為56H,初始值為60H

          // 7 6 5 4 3 2 1 0

          // DCO2 DCO1 DCO0 MOD4 MOD3 MOD2 MOD1 MOD0

          //

          // DCO0~DCO2:DCO Select Bit,定義了8種頻率之一,而頻率由注入直流發(fā)生器的電流定義

          // MOD0~MOD4:Modulation Bit,頻率的微調(diào)

          //

          // DCO的設(shè)置:通過(guò)設(shè)置DCOCTL和BCSCTL1,設(shè)置DCO的頻率

          // (1)DCO的調(diào)節(jié):

          設(shè)置DCOR比特來(lái)選擇是外部電阻還是內(nèi)部電阻,以確定一個(gè)基準(zhǔn)頻率

          通過(guò)BCSCTL1寄存器的RSELx來(lái)進(jìn)行分頻,確定時(shí)鐘頻率;

          通過(guò)DCOCTL寄存器中DCOx在標(biāo)稱(chēng)頻率基礎(chǔ)上分段粗調(diào),選擇頻率;

          通過(guò)DCOCTL寄存器中MODx的值對(duì)頻率進(jìn)行細(xì)調(diào),選擇 DCOx 與 DCOx+1 之間的頻率

          // 注意:DCO工作在最高頻率時(shí),內(nèi)部電阻正常值大約為200k,此時(shí)DCO的工作頻率大約為5MHz。

          例子:

          //DCOCTL初始值為60H,即DCOCTL |= DCO1 + DCO2;

          DCOCTL |= DCO0 + DCO1 + DCO2; // Max DCO

          //MOD0~MOD4:Modulation Bit,頻率的微調(diào)一般保持默認(rèn)即可

          //系統(tǒng)默認(rèn)情況下,RSELx=4

          (2)BCSCTL1(ACLK):Basic Clock System Control 1,地址為58H,初始值為84H

          // 7 6 5 4 3 2 1 0

          // XT2OFF XTS DIVA1 DIVA0 XT5V RSEL2 RSEL1 RSEL0

          //

          // RSEL2~RSEL0:選擇某個(gè)內(nèi)部電阻以決定標(biāo)稱(chēng)頻率(0最低,7最高)

          // XT5V:1,該比特未用,必須選擇復(fù)位

          // DIVA0~DIVA1:選擇ACLK的分頻系數(shù)。DIVA=0,1,2,3(DIVA_0,DIVA_1...),ACLK的分頻系數(shù)分別為:1,2,4,8

          // XTS:選擇LFXT1工作在低頻晶體模式(XTS=0)還是高頻晶體模式(XTS=1)

          // XT2OFF:控制XT2振蕩器的開(kāi)啟(XT2OFF=0)與關(guān)閉(XT2OFF=1)

          //

          // BCSCTL1的設(shè)置:初始值為84H

          //使用XT2振蕩器

          //控制XT2振蕩器的開(kāi)啟(XT2OFF=0)與關(guān)閉(XT2OFF=1)

          BCSCTL1 &= ~XT2OFF;//清OSCOFF/XT2

          do

          {

          IFG1 &= ~OFIFG;//清OFIFG

          OSC_Delay = 255;

          while(OSC_Delay --);//延時(shí)等待

          }

          while(IFG1 & OFIFG);//直到OFIFG=0為止

          //RSEL2~RSEL0:選擇某個(gè)內(nèi)部電阻以決定標(biāo)稱(chēng)頻率(0最低,7最高)

          BCSCTL1 |= RSEL0 + RSEL1 + RSEL2;// XT2on,max RSEL

          //選擇ACLK的分頻系數(shù):DIVA=0,1,2,3,ACLK的分頻系數(shù)分別為:1,2,4,8

          //BCSCTL1 |= DIVA_2;//對(duì)ACLK進(jìn)行2分頻

          //(3)BCSCTL2(SMCLK,MCLK):Basic Clock System Control 2,地址為58H,初始值為00H

          // 7 6 5 4 3 2 1 0

          // SELM1 SELM0 DIVM1 DIVM0 SELS DIVS1 DIVS0 DCOR

          //

          // DCOR:Enable External Resister,0—選擇內(nèi)部電阻,1—選擇外部電阻

          // DIVS0~DIVS1:DIVS=0,1,2,3,對(duì)應(yīng)SMCLK的分頻因子為1,2,4,8

          // SELS:選擇SMCLK的時(shí)鐘源,0:DCOCLK,1:XT2CLK/LFXTCLK

          // DIVM0~DIVM1:選擇MCLK的分頻因子,DIVM=0,1,2,3,對(duì)應(yīng)MCLK的分頻因子為1,2,4,8

          // SELM0~SELM1:選擇MCLK的時(shí)鐘源,0,1:DCOCLK,2:XT2CLK,3:LFXT1CLK

          //

          // BCSCTL2的設(shè)置:初始值為00H

          //設(shè)置BCSCTL2,選定MCLK和SMCLK的時(shí)鐘源XT2,并可以設(shè)置其分頻因子

          //注意:ACLK只能來(lái)源于LFXT1,可以在BCSCTL1里設(shè)置ACLK的分頻,就是說(shuō)ACLK最大只能為32768Hz(XIN 與 XOUT間接32.768KHz晶振)

          //DCOR一般設(shè)置為默認(rèn)值

          //設(shè)置SMCLK的分頻因子,DIVS0~DIVS1:DIVS=0,1,2,3,對(duì)應(yīng)SMCLK的分頻因子為1,2,4,8

          //BCSCTL2 = DIVS_0;

          //BCSCTL2 = DIVS_1;

          //BCSCTL2 = DIVS_2;

          //BCSCTL2 = DIVS_3;

          //設(shè)置MCLK的分頻因子,DIVM0~DIVM1:DIVM=0,1,2,3,對(duì)應(yīng)MCLK的分頻因子為1,2,4,8

          //BCSCTL2 = DIVM_0;

          //BCSCTL2 = DIVM_1;

          //BCSCTL2 = DIVM_2;

          //BCSCTL2 = DIVM_3;

          //BCSCTL2:設(shè)置三個(gè)時(shí)鐘源分別選擇什么振蕩器

          //SELM0~SELM1:選擇MCLK的時(shí)鐘源,0,1:DCOCLK,2:XT2CLK,3:LFXT1CLK

          //選擇 MCLK 時(shí)鐘源為XT2,

          //BCSCTL2 = SELM_2 ;

          //SELS:選擇SMCLK的時(shí)鐘源,0:DCOCLK,1:XT2CLK/LFXTCLK

          //選擇 SMCLK 時(shí)鐘源為XT2

          //BCSCTL2 = SELS ;

          //選擇MCLK 與 SMCLK為XT2

          BCSCTL2 = SELM_2 + SELS;

          //(4)IE1,Interrupt Enable Register 1

          // 7 6 5 4 3 2 1 0

          // OFIE

          // 7~2 and 0 : These bits may be used by other modules

          // OFIE:Oscillator fault interrupt enable. 0---Interrupt not enabled

          // 1---Interrupt enabled

          //(5)IEG1,Interrupt Flag Register 1

          // 7 6 5 4 3 2 1 0

          // OFIFG

          // 7~2 and 0 : These bits may be used by other modules

          // OFIE:Oscillator fault interrupt flag. 0 No interrupt pending

          // 1 Interrupt pending

          //

          在PUC信號(hào)后,默認(rèn)情況下由DCOCLK作MCLK與SMCLK的時(shí)鐘信號(hào),由于DCOCTL初始值為60H,根據(jù)需要可將MCLK的時(shí)鐘源另外設(shè)置為L(zhǎng)FXT1或者XT2,設(shè)置順序如下:

          //(1)清OSCOFF/XT2

          //(2)清OFIFG

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

          //(4)再次檢查OFIFG,如果仍置位,則重復(fù)(1)~(4)步,直到OFIFG=0為止

          //(5)設(shè)置BCSCTL2的相應(yīng)SELM




          評(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); })();