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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F5529 (三)統(tǒng)一時鐘系統(tǒng)UCS-2

          MSP430F5529 (三)統(tǒng)一時鐘系統(tǒng)UCS-2

          作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
          實驗二:將MCLK和SMCLK配置為XT1(F5529的XT1為32.768KHZ)
          /*1.配置IO口5.4和5.5為XT1功能。*/
          /*2.配置XCAP為XCAP_3,即12PF的電容。*/
          /*3.清除XT1OFF標志位。*/
          /*4.等待XT1起振。*/
          #include <msp430.h>
          void main(void){
          P1SEL |= BIT0;P1DIR |= BIT0;//測量ACLK用
          P2SEL |= BIT2;P2DIR |= BIT2;//測量SMCLK用
          P7SEL |= BIT7;P7DIR |= BIT7;//測量MCLK用
          P5SEL |= BIT4|BIT5; //配置為XT1功能,電路板上晶振接于這兩腳
          UCSCTL6 |= XCAP_3; //配置電容為12pF
          UCSCTL6 &= ~XT1OFF; //使能XT1
          /*下面是很重要的一步:*/
          /* XT1剛剛起振的時候可能有錯誤,導致時鐘錯誤標志位置位,必須先清零*/
          /*OFIFG即Osc Fault Flag,位于SFRIFG1中*/
          while(SFRIFG1 & OFIFG) //如果有時鐘錯誤{
          UCSCTL7 &=~(XT2OFFG+DCOFFG+XT1LFOFFG);//清除3種時鐘錯誤標志
          SFRIFG1&=~(OFIFG);//清除時鐘錯誤標志位}
          UCSCTL4&=(UCSCTL4&(~(SELS_7|SELM_7)))|SELS_0|SELM_0;
          //將SMCLK和MCLK時鐘源配置為XT1}


          實驗三:DCO-FLL數(shù)控振蕩器結合鎖相環(huán)
          DCO模塊在MSP430F5529系列芯片中非常重要,因為從MSP430F4XX開始,MSP430引用了FLL模塊,F(xiàn)LL即鎖相環(huán),可以通過倍頻的方式提高系統(tǒng)時鐘頻率,進而提高系統(tǒng)的運行速度。
          DCO模塊運行需要參考時鐘REFCLK,REFCLK可以來自REFOCLK、XT1CLK和XT2CLK,通過UCSCTL3的SELREF選擇,默認使用的XT1CLK,但如果XT1CLK不可用則使用REFOCLK。
          DCO模塊有兩個輸出時鐘信號,即DCOCLK和DCOCLKDIV,其中,倍頻計算公式如下:
          DCOCLK = D*(N+1)*(REFCLK/n)
          DCOCLKDIV = (N+1)*(REFCLK/n)
          其中:n即REFCLK輸入時鐘分頻,可以通過UCSCTL3中的FLLCLKDIV設定,默認為1,也就是不分頻;
          D可以通過UCSCTL2中的FLLD來設定,默認為1,也就是2分頻;
          N可以通過UCSCTL2中的FLLN來設定,默認值為32。
          所以,系統(tǒng)上電后如果不做任何設置,DCOCLK的實際值為2097152,DCOCLKDIV的實際值為1048576。

          另外,配置芯片工作頻率還需要配置DCORSEL和DCOx,DCORSEL和DCOx的具體作用如下:
          DCORSEL位于UCSCTL1,共3位,將DCO分為8個頻率段。
          DCOx位于UCSCTL0共5位,將DCORSEL選擇的頻率段分為32個頻率階,每階比前一階高出約8%,該寄存器系統(tǒng)可以自動調整,通常配置為0。
          下表給出了相應設置情況下的頻率調節(jié)范圍:


          /*通過DCO-FLL將32.768KHZ倍頻到25MHZ*/
          #include
          #include “HAL_PMM.h”
          void delay()
          {
          volatile unsigned int I;
          for(I = 0; I != 5000; ++i){_NOP(); }}//延時函數(shù)
          void main(void) {
          WDTCTL = WDTPW+WDTHOLD;
          P1SEL &= ~BIT1;
          P1DIR |= BIT1;

          P1SEL |= BIT0; //ACLK
          P1DIR |= BIT0;
          P2SEL |= BIT2; //SMCLK
          P2DIR |= BIT2;
          P7SEL |= BIT7; //MCLK
          P7DIR |= BIT7;
          P5SEL |= BIT4|BIT5;
          UCSCTL6 |= XCAP_3;
          UCSCTL6 &= ~XT1OFF;//打開XT1,否則XT1LFOFFG可能報錯
          SetVCore(3); //提高Vcore電壓到最高級,以滿足倍頻需求該函數(shù)位于HAL_PMM.H中
          __bis_SR_register(SCG0);//該語法為固定格式,意為將括號內的變量置位,SCG0與系統(tǒng)工作模式有關,此時MCLK暫停工作
          UCSCTL0 = 0; //先清零,F(xiàn)LL運行時,該寄存器系統(tǒng)會自動配置,不用管
          UCSCTL1 = DCORSEL_6;
          UCSCTL2 = FLLD_1 | 380;//FLLD=1,FLLN=380,則頻率為
          2*(380+1)*32.768=24.969MHZ
          __bic_SR_register(SCG0);
          __delay_cycles(782000);//系統(tǒng)自帶的精確延時,單位us
          while (SFRIFG1 & OFIFG) {
          UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
          SFRIFG1 &= ~OFIFG;
          }
          UCSCTL4 = UCSCTL4&(~(SELS_7|SELM_7))|SELS_3|SELM_3;
          //選擇DCO作為時鐘源
          while(1){
          P1OUT ^= BIT1;
          delay();
          }
          }


          評論


          技術專區(qū)

          關閉
          看屁屁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); })();