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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430 ADC12模塊寄存器設(shè)置解讀

          MSP430 ADC12模塊寄存器設(shè)置解讀

          作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          一。簡(jiǎn)單介紹:

          ADC12模塊中是由以下部分組成:輸入的16路模擬開關(guān)(外部8路,內(nèi)部4路),ADC內(nèi)部電壓參考源,ADC12內(nèi)核,ADC時(shí)鐘源部分,采集與保持/觸發(fā)源部分,ADC數(shù)據(jù)輸出部分,ADC控制寄存器等組成。

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

          四種采樣模式:

          (1)單通道單次轉(zhuǎn)換模式

          (2)序列通道單詞轉(zhuǎn)換模式

          (3)單通道多次轉(zhuǎn)換模式

          (4)序列通道多次轉(zhuǎn)換模式

          個(gè)人覺得(3)模式應(yīng)該是使用較多的,

          對(duì)選定的通道進(jìn)行多次轉(zhuǎn)換,直到關(guān)閉該功能或ENC=0。進(jìn)行如下設(shè)置:
          x=CSStartAdd,指向轉(zhuǎn)換開始地址
          ADC12MEMx存放轉(zhuǎn)換結(jié)果
          ADC12MCTLx寄存器中定義了通道和參考電壓
          在這種模式下,改變轉(zhuǎn)換模式,不必先停止轉(zhuǎn)換,在當(dāng)前正在進(jìn)行的轉(zhuǎn)換結(jié)束后,可改變轉(zhuǎn)換模式。該模式的停止可有如下幾種辦法:
          使用CONSEQ=0的辦法,改變?yōu)閱瓮ǖ绬未文J健?br />使用ENC=0直接使當(dāng)前轉(zhuǎn)換完成后停止。
          使用單通道單次模式替換當(dāng)前模式,同時(shí)使ENC=0
          ADC控制寄存器
          ADC12CTL0轉(zhuǎn)換控制寄存器0
          ADC12CTL1轉(zhuǎn)換控制寄存器1
          ADC12IE中斷使能寄存器
          ADC12IFG中斷標(biāo)志寄存器
          ADC12IV中斷向量寄存器
          ADC12MEM0-15存儲(chǔ)控制寄存器0-15
          ADC12MCTL0-15存儲(chǔ)控制寄存器0-15
          一般做法:在大循環(huán)里開始轉(zhuǎn)換,轉(zhuǎn)換完畢引發(fā)中斷,我們?cè)谥袛嗬镉涗洸⑻幚磙D(zhuǎn)換數(shù)據(jù)。

          二。ADC12寄存器說明
          -----------------------------------------------------------------------
          寄存器類型寄存器縮寫寄存器含義
          -----------------------------------------------------------------------
          轉(zhuǎn)換控制寄存器ADC12CTL0轉(zhuǎn)換控制寄存器0
          ADC12CTL1轉(zhuǎn)換控制寄存器1
          -----------------------------------------------------------------------
          中斷控制寄存器ADC12IFG中斷標(biāo)志寄存器
          ADC12IE中斷使能寄存器
          ADC12IV中斷向量寄存器
          -----------------------------------------------------------------------
          存儲(chǔ)及其控制寄存器ADC12MCTL0~ADC12MCTL15存儲(chǔ)控制寄存器0~15
          ADC12MEM0~ADC12MEM15存儲(chǔ)寄存器0~15
          -----------------------------------------------------------------------
          1.ADC12CTL0控制寄存器0,各位定義:
          bit15~12bit11~8bit7bit6bit5bit4bit3bit2bit1bit0
          SHT1SHT0MSC2.5VREFONADC12ONADC12TOVIEADC12TVIEENCADC12SC
          ADC12SC——采樣/轉(zhuǎn)換控制位。在不同條件下,ADC12SC的含義如下所示:
          --------|---------------------------------------------------------------------
          ENC=1,|SHP=1:ADC12SC由0變?yōu)?啟動(dòng)A/D轉(zhuǎn)換;A/D轉(zhuǎn)換完成后ADC12SC自動(dòng)復(fù)位
          ISSH=0|SHP=0:ADC12SC保持高電平采樣;ADC12SC復(fù)位時(shí)啟動(dòng)一次轉(zhuǎn)換
          --------|---------------------------------------------------------------------
          ENC——轉(zhuǎn)換允許位。
          0:ADC12為初始狀態(tài),不能啟動(dòng)A/D轉(zhuǎn)換;
          1:首次轉(zhuǎn)換由SAMPCON上升沿啟動(dòng)
          ADC12TVIE——轉(zhuǎn)換時(shí)間溢出中斷允許位(當(dāng)前轉(zhuǎn)換還沒完成時(shí),又發(fā)生一次采樣請(qǐng)求,則會(huì)發(fā)生轉(zhuǎn)換時(shí)間溢出)
          0:沒發(fā)生轉(zhuǎn)換時(shí)間溢出
          1:發(fā)生轉(zhuǎn)換時(shí)間溢出
          ADC12OVIE——溢出中斷允許位(當(dāng)ADC12MEMx中原有數(shù)據(jù)還沒有讀出,而又有新的轉(zhuǎn)換結(jié)果數(shù)據(jù)要寫入時(shí),則發(fā)生溢出)
          0:沒發(fā)生溢出
          1:發(fā)生溢出
          ADC12ON——ADC12內(nèi)核控制位
          0:關(guān)閉ADC12內(nèi)核
          1:打開ADC12內(nèi)核
          REFON——參考電壓控制位
          0:內(nèi)部參考電壓發(fā)生器關(guān)閉
          1:內(nèi)部參考電壓發(fā)生器打開
          2.5V——內(nèi)部參考電壓的電壓值選擇位
          0:選擇1.5V內(nèi)部參考電壓
          1:選擇2.5V內(nèi)部參考電壓
          MSC——多次采樣轉(zhuǎn)換位(CONSEQ<>0表示當(dāng)前轉(zhuǎn)換模式不是單通道單次轉(zhuǎn)換)
          -----------|---------------------------------------------------------------------------------------------
          有效條件|MSC值含義
          SHP=1|0每次轉(zhuǎn)換需要SHI信號(hào)的上升沿觸發(fā)采樣定時(shí)器
          CONSEQ<>0|1僅首次轉(zhuǎn)換由SHI信號(hào)的上升沿觸發(fā)采樣定時(shí)器,而后采樣轉(zhuǎn)換將在前一次轉(zhuǎn)換完成后立即進(jìn)行
          -----------|---------------------------------------------------------------------------------------------
          SHT1、SHT0——采樣保持定時(shí)器1,采樣保持定時(shí)器0
          分別定義保存在轉(zhuǎn)換結(jié)果寄存器ADC12MEM8~ADC12MEM15和ADC12MEM0~ADC12MEM7中的轉(zhuǎn)換采樣時(shí)序與采樣時(shí)鐘ADC12CLK的關(guān)系。采樣周期是ADC12CLK周期乘4的整數(shù)倍,即:
          SHITx0123456789101112~15
          n1248162432486496128192256
          2.ADC12CTL1轉(zhuǎn)換控制寄存器1(大多數(shù)3~15位,只有在ENC=0時(shí)才可被修改),各位定義:
          bit15~12bit11~10bit9bit8biy7~5bit4~3bit2~1bit0
          CSSTARTADDSHSSHPISSHADC12DIVADC12SSELCONSEQADC12BUSY
          CSSTARTADD——轉(zhuǎn)換存儲(chǔ)器地址位。該4位所表示的二進(jìn)制數(shù)0~15分別對(duì)應(yīng)ADC12MEM0~15。可以定義單次轉(zhuǎn)換地址或序列轉(zhuǎn)換的首地址。
          SHS——采樣觸發(fā)輸入源選擇位。
          0:ADC12SC
          1:Timer_A.OUT1
          2:Timer_B.OUT0
          3:Timer_B.OUT1
          SHP——采樣信號(hào)(SAMPCON)選擇控制位。
          0:SAMPCON源自采樣觸發(fā)輸入信號(hào)
          1:SAMPCON源自采樣定時(shí)器,由采樣輸入信號(hào)的上升沿觸發(fā)采樣定時(shí)器
          ISSH——采樣輸入信號(hào)方向控制位
          0:采樣輸入信號(hào)為同向輸入
          1:采樣輸入信號(hào)為反向輸入
          ADC12DIV——ADC12時(shí)鐘源分頻因子選擇位。分頻因子為該3位二進(jìn)制數(shù)加1
          ADC12SSEL——ADC12內(nèi)核時(shí)鐘源選擇
          0:ADC12內(nèi)部時(shí)鐘源——ADC12OSC
          1:ACLK
          2:MCLK
          3:SMCLK
          CONSEQ——轉(zhuǎn)換模式選擇位
          0:?jiǎn)瓮ǖ绬未无D(zhuǎn)換模式
          1:序列通道單次轉(zhuǎn)換模式
          2:?jiǎn)瓮ǖ蓝啻无D(zhuǎn)換模式
          3:序列通道多次轉(zhuǎn)換模式
          ADC12BUSY——ADC12忙標(biāo)志(只用于單通道單次轉(zhuǎn)換模式,在其它轉(zhuǎn)換模式下,該位無效)
          0:表示沒有活動(dòng)的操作
          1:表示ADC12正處于采樣期間、轉(zhuǎn)換期間或序列轉(zhuǎn)換期間
          3.ADC12MEM0~ADC12MEM15轉(zhuǎn)換存儲(chǔ)寄存器
          該組寄存器均為16位寄存器,用來存放A/D轉(zhuǎn)換結(jié)果。中用其中低12位,高4位在讀出時(shí)為0
          4.ADC12MCTLx轉(zhuǎn)換存儲(chǔ)控制寄存器(所有位只有在ENC為低電平時(shí)可修改,在POR時(shí)各位被復(fù)位)
          對(duì)于每個(gè)轉(zhuǎn)換存儲(chǔ)器有一個(gè)對(duì)應(yīng)的轉(zhuǎn)換存儲(chǔ)器控制寄存器,所以在進(jìn)行CSSTARTADD轉(zhuǎn)換存儲(chǔ)器地址位設(shè)置的同時(shí),也確定了ADC12MCTLx。該寄存器各位含義如下:
          bit7bit6~4bit3~0
          EOSSREFINCH
          EOS——序列結(jié)束控制位
          0:序列沒有結(jié)束
          1:該序列中最后一次轉(zhuǎn)換
          SREF——參考電壓源選擇位
          0:Vr+=AVcc,Vr-=AVss
          1:Vr+=VREF+,Vr-=AVss
          2,3:Vr+=VEREF+,Vr-=AVss
          4:Vr+=AVcc,Vr-=VREF-/VEREF-
          5:Vr+=VREF+,Vr-=VREF-/VEREF-
          6,7:Vr+=VEREF+,Vr-=VREF-/VEREF-
          INCH——選擇模擬輸入通道
          0~7:A0~A7
          8:VeREF+
          9:VREF-/VeREF-
          10:片內(nèi)溫度傳感器的輸出
          11~15:(AVCC-AVSS)/2
          5.ADC12IFG中斷標(biāo)志寄存器為16位,其中中斷標(biāo)志位ADC12IFG.x對(duì)應(yīng)于轉(zhuǎn)換存儲(chǔ)寄存器ADC12MEMx。各位含義如下:
          bit15bit14......bit1bit0
          IFG15IFG14......IFG1IFG0
          ADC12IFG.x置位:轉(zhuǎn)換結(jié)束,并且轉(zhuǎn)換結(jié)果已經(jīng)裝入轉(zhuǎn)換存儲(chǔ)寄存器。
          ADC12IFG.x復(fù)位:ADC12MEMx被訪問。
          6.ADC12IE中斷使能寄存器為16位,對(duì)應(yīng)于ADC12IFG寄存器。各位含義如下:
          bit15bit14......bit1bit0
          IE.15IE.14......IE.1IE.0
          ADC12IE.x=1:允許相應(yīng)的中斷標(biāo)志位ADC12IFG.x在置位時(shí)發(fā)生的中斷請(qǐng)求服務(wù)。
          ADC12IE.x=0:禁止相應(yīng)的中斷標(biāo)志位ADC12IFG.x在置位時(shí)發(fā)生的中斷請(qǐng)求服務(wù)。
          7.ADC12IV中斷向量寄存器
          ADC12是一個(gè)多源中斷:有18個(gè)中斷標(biāo)志(ADC12IFG.0~ADC12IFG.15與ADC12TOV,ADC12OV),但只有一個(gè)中斷向量。所以需要設(shè)置這18個(gè)標(biāo)志的優(yōu)先級(jí)順序,按照優(yōu)先級(jí)順序安排中斷標(biāo)志的響應(yīng),高優(yōu)先級(jí)的請(qǐng)求可以中斷正在服務(wù)的低優(yōu)先級(jí)。

          三。標(biāo)準(zhǔn)程序參考:

          #include "msp430x14x.h"
          void InitADC12();
          unsigned char wait;
          int main( void )
          {
          // Stop watchdog timer to prevent time out reset
          WDTCTL = WDTPW + WDTHOLD;
          InitADC12();
          return 0;
          }
          void InitADC12()
          {
          //_DINT();
          ADC12CTL0 &= ~ENC; //只有在ENC復(fù)位的情況下才能對(duì)ADC12CTL0、1進(jìn)行設(shè)置?。?!
          ADC12CTL0 = MSC + REFON + REF2_5V + SHT0_15 + SHT1_15;

          ADC12CTL1 |= SHP + CONSEQ_0;

          ADC12MCTL0 = EOS + SREF_0 + INCH_7;

          ADC12IE |= 0x0001;//開相應(yīng)模擬通道中斷,轉(zhuǎn)換完畢后引發(fā)中斷
          _EINT();
          //ADC12CTL0 |= ADC12ON + ENC; //修改?。。?/ 這樣寫是不對(duì)的
          ADC12CTL0 |= ADC12ON;
          ADC12CTL0 |= ENC;


          wait = 0; //此處可定義變量,指示轉(zhuǎn)換是否完成
          ADC12CTL0 |= ENC+ADC12SC; //轉(zhuǎn)換開始 若希望在其他時(shí)間開始轉(zhuǎn)換 可將次句放在別處逼比必
          while(wait==0)
          ;
          }
          #pragma vector=ADC_VECTOR
          __interrupt void ADC()
          {int result[7];
          wait=1;
          result[0] = ADC12MEM0;

          }

          下面再來簡(jiǎn)要的介紹一下這個(gè)模塊不易理解的地方

          1、MSP430可以使用內(nèi)部、外部的參考電壓,內(nèi)部1.5或2.5,外部0~3.3,可以通過寄存器設(shè)置,采樣電壓的輸入范圍最大為0~3.3即AVss~AVcc,不能檢測(cè)負(fù)電壓,如果需要檢測(cè)負(fù)電壓,可以使用運(yùn)放,電壓偏置成為正電壓然后檢測(cè)

          2、使用外部AVss~AVcc作為參考電壓不夠穩(wěn)定,但是精度高,使用內(nèi)部電壓較穩(wěn)定。

          3、程序中一定要打開全局中斷_EINT();



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