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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 系統(tǒng)時鐘初始化需要注意的問題

          系統(tǒng)時鐘初始化需要注意的問題

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          MSP430的基本時鐘源有3個:  LFXT1CLK,  XT2CLK,   DCOCLK ; ­
          其中: LFXT1CLK:可以用低頻鐘表晶體、標準晶體、陶瓷諧振器或外接時鐘源工作。 ­
          ­    XT2CLK:可以用標準晶體、陶瓷諧振器或外接450khz~8mhz的時鐘源工作。 ­
          ­    DCOCLK:它是內(nèi)部數(shù)字控制RC振蕩器,可以調(diào)節(jié)。
          MSP430的3種時鐘信號是:  ACLK,  MCLK,  SMCLK;
          ­
          其中: ACLK(輔助系統(tǒng)時鐘):可選時鐘源LFXT1CLK(只能是外部時鐘源),且一般為32768hz手表晶體)。
          ­MCLK(主時鐘):可選LFXT1CLK,XT2CLK, DCOCLK 三種時鐘源。用于CPU和系統(tǒng)。 ­
          ­   SMCLK(子時鐘):可選LFXT1CLK,XT2CLK, DCOCLK 三種時鐘源。用于外圍器件.
          (Notice:­LFXT1CLK when XT2 oscillator not present on-chip.)
          ACLK和MCLK的區(qū)別:ACLK一般用于低速外設(shè) ­
                   SMCLK主要用于高速外圍模塊
          上電默認是內(nèi)部800K的RC振蕩器,
          下面給出了切換LFXT和XT2作為系統(tǒng)時鐘的例子:
          切換為LFXT:
          do
          {
          IFG1 &= ~OFIFG;
          for (i = 0xFF; i > 0; i--);
          }
          while ((IFG1 & OFIFG));
          BCSCTL2 |= SELM_3;//選擇鐘表時鐘
          切換為XT2:
          BCSCTL1&=~XT2OFF;//啟動XT2時鐘
          do
          {
          IFG1 &= ~OFIFG;
          for (i = 0xFF; i > 0; i--);
          }
          while ((IFG1 & OFIFG));
          BCSCTL2 |= SELM_2;
          BCSCTL2 |= SELS;//選擇XT2時鐘
          430的時鐘問題
          2009年10月04日 星期日 20:59
          系統(tǒng)時鐘問題:
          系統(tǒng)默認使用DCO,使用外部高速晶振XT2時必須自己開啟XT2,并延時50us等待XT2起振,然后手工清除IFG1中的OFIFG位
          !!!!一定要注意操作順序:打開XT2->等待XT2穩(wěn)定->切換系統(tǒng)時鐘為XT2
          若后面兩步操作反了,在通常情況下不會出現(xiàn)問題,但是在電壓不穩(wěn)MCU頻繁復(fù)位的情況下,非常容易造成MCU死掉,只能掉電后重新上電才能可靠復(fù)位。
          今天做了一下時鐘的實驗
          對于MCLK若選擇了XT2 的話,在外部晶振XT2的使用過程中,需要特別注意的是,一旦外部晶振失效的話帶來什么樣的效果?對于這個效果,經(jīng)過測試發(fā)現(xiàn),當使用XT2作為MCLK和SMCLK的時鐘源時若XT2不穩(wěn)定,丟失一些時鐘信號時這時MCLK會自動轉(zhuǎn)換DCO作為其時鐘源,經(jīng)過測試,而SMCLK確依然用的是XT2(XT2只是波動一下,并非不工作),但是用示波器怎么測不出8M的晶振呢,測其它的怎么能測呢?不過時鐘這一點搞清楚了
          振蕩器失效時,msp430也會自動將DCO選作為MCLK的時鐘源,用戶可以在DCO維持下在中斷中檢測OFIFG標志位,設(shè)置使用另外一個晶體振蕩器來臨時替代問題時鐘源倆繼續(xù)工作或完成發(fā)生警報等應(yīng)急處理工作。
          MSP430的時鐘周期(振蕩周期)、機器周期、指令周期之間的關(guān)系
          通用知識
          時鐘周期也稱為振蕩周期:定義為時鐘脈沖的倒數(shù)(時鐘周期就是直接供內(nèi)部CPU使用的晶振的倒數(shù),例如12M的晶振,它的時鐘周期就是1/12us),是計算機中的最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。時鐘脈沖是計算機的基本工作脈沖,控制著計算機的工作節(jié)奏。時鐘頻率越高,工作速度就越快。
          機器周期:在計算機中,常把一條指令的執(zhí)行過程劃分為若干個階段,每一個階段完成一項工作。每一項工作稱為一個基本操作,完成一個基本操作所需要的時間稱為機器周期。8051系列單片機的一個機器周期由6個S周期(狀態(tài)周期)組成。一個S周期=2個時鐘周期,所以8051單片機的一個機器周期=6個狀態(tài)周期=12個時鐘周期。
          指令周期:執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期也不同。
          專用知識:
          在430中,一個時鐘周期= MCLK晶振的倒數(shù)。如果MCLK是8M,則一個時鐘周期為1/8us即為125ns;
          一個機器周期 =一個時鐘周期,即430每個動作都能完成一個基本操作;
          一個指令周期 = 1~6個機器周期,具體根據(jù)具體指令而定。
          另:指令長度,只是一個存儲單位與時間沒有必然關(guān)系
          MSP430的3種時鐘信號:MCLK系統(tǒng)主時鐘;SMCLK系統(tǒng)子時鐘;ACLK輔助時鐘。
          (1)MCLK系統(tǒng)主時鐘。除了CPU運算使用此時鐘以外,外圍模塊也可以使用。MCLK可以選擇任何一個振蕩器所產(chǎn)生的時鐘信號并進行1、2、4、8分頻作為其信號源。
          (2)SMCLK系統(tǒng)子時鐘。供外圍模塊使用。并在使用前可以通過各模塊的寄存器實現(xiàn)分頻。SMCLK可以選擇DCO和XT2所產(chǎn)生的時鐘信號并進行1、2、4、8分頻作為其信號源。
          (3)ACLK輔助時鐘。供外圍模塊使用。并在使用前可以通過各模塊的寄存器實現(xiàn)分頻。但ACLK只能由LFXT1進行1、2、4、8分頻作為信號源。
          430的一個時鐘周期=MCLK晶振的倒數(shù)。如果MCLK是8M,則一個時鐘周期為1/8微秒; 一個機器周期=一個時鐘周期,即430每個動作都能完成一個基本操作; 一個指令周期=1~6個機器周期; 也就是說執(zhí)行一條指令最多花6*1/8微秒。
          _NOP()是單周期的指令,I/O口賦值是4周期的。


          關(guān)鍵詞: 系統(tǒng)時鐘初始

          評論


          技術(shù)專區(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); })();