新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430之一 關于AD轉換

        MSP430之一 關于AD轉換

        作者: 時間:2016-11-28 來源:網絡 收藏

        在這里記下來自己所學的,而且寫一篇記憶更深刻,還方便查閱。希望能有幫助吧~加油一起進步。

        本文引用地址:http://www.104case.com/article/201611/323029.htm

        l 首先應明確Msp4301X里的各系列中的ADC模塊大凡是12位的轉換精度。下圖即為其功能模塊圖。


        其實這個圖感覺大概看哈就行了,真有時間和精力細細結合書滲透還是可以的,不過就是剛開始看有點花花綠綠吧。

        l 熟悉并能使用一個模塊,必然要熟悉其各個寄存器的作用。下面我們來看下ADC12模塊中各個模塊寄存器的作用,

        轉換控制寄存器 ADC12CTL0

        ADC12CTL0

        0

        1

        2

        3

        4

        5

        6

        7

        8-11

        12-15

        ADCSC

        ENC

        ADCIVIE

        ADC0VIE

        ADCON

        REFON

        2.5V

        MSC

        SHT0

        SHT1

        1. ENC=1時才能正常的AD轉換

        2. ADCSC是其采集/轉換控制位,啟動AD必須要用一條指令來配置ENC和ADCSC。

        3. ADCIVIE 轉換時間溢出中斷。轉換未完成時,繼續采樣則會溢出。

        4. ADC0VIE 溢出中斷允許位。即ADC12MEMx中數據未讀出,繼續寫入、

        5. ADC12ON 打開內核、

        6. REFON 內部基準電壓開啟否?

        7. MSC 多次采樣/轉換 ,有效條件為SHP=1, MSC=0時上升沿,當CONSQ!=0,MSC=1,首次上升沿,后采樣接上次。

        8. SHT1,SHT0,名為采樣保持定時器,SHT0_x,其中X代表的是采樣分頻因子,采樣周期是 ADC12CLK周期的4倍。2的級數倍。

        轉換控制寄存器 ADC12CTL1

        0

        1.,2

        3,4

        5-7

        8

        9

        10-,11

        12-15

        BUSY

        CONSEQ

        ADCSEL

        ADCDIV

        ISSH

        SHP

        SHS

        CSSTARTADD

        1. BUSY 判斷位,只用于單通道單次轉的,需要ENC=0,不然沒用。

        2. CONSEQ 0 1 2 3 單通道單次,序列單次,單多次,序列多次。

        3. ADC12SEL 時鐘源選擇,0 1 2 3 分別為ADC12OSC,ACLK ,MCLK,SMC

        4. ADC12DIV 分頻因子選擇位,挺少用,

        5. ISSH 一般推薦的是同相,即為ISSH 0

        6. SHP 采樣信號來源 0 來自輸入,1為采樣定時器

        7. SHS 采樣觸發輸入源,0 12 3 ADC12SC,Timer_A.OUT1,TM_B 0 ,TM_B1

        8. CSSTARTADD 4位分別對應 存儲的ADC12MEM-1-15,定義地址用。

        最重要的兩個部分說完了,呼呼喘口氣、呵呵 看得累了還得用心記下來。

        接下來要說的是轉換儲存寄存器 ADC12MEM0-MEM15;

        只用低12位,后面4個讀零。

        其次當然是轉換寄存器控制寄存器ADC12MCTLx

        這個也是定義轉換功能滴~~

        0 1 2 3

        4 5 6

        7

        INCH

        SREF

        EOS

        4個模擬通道

        可選6種。

        結束控制.0.完了,1沒有

        SREF 參考電壓那里,就查查書吧、就是定義以哪個為基準的。

        ********************************我是分割線***********************************************

        說到這里基本可以用上述3個來搭建出基本的AD模型了吧。感覺硬件編程,就像是堆積木哈,找到積木,然后一個一個一堆,技術含量就是記不住,每次都要翻書。不過沒關系呀,不翻書,然何以破萬卷?接著加油吧!

        ****************************************************************************************

        中斷寄存器:

        ADC12IFG 中斷標志寄存器,ADC12IFG..x = 1 結束轉換,= 0 訪問ADC12MEM

        ADC12IE 中斷使能 =1時請求中斷允許,= 0禁止中斷

        ADC12IV 僅有的一個中斷向量,實際是定義了中斷地址.

        ***********************************分割**************************************

        到這里基本介紹完了,其實也是看了這么久程序的一個總結吧,當然不明白的地方我依舊還是去查了書,怕自己出現錯誤。下面將提供個例程:我只摘了工作需要的其中部分。

        *************************************華麗的分割*************************************

        #include <msp430 14x.h>

        Void main(void)

        unsigned int adnum,ad_max,ad_min,ad_val,result[MAX_AD_NUM];

        unsigned char k;

        {

        WDTCTL=WDTPW+WDTHOLD;

        P6SEL&=~ BIT1;

        DC12CTL0 = ADC12ON + SHT0_8 + MSC;//內部振蕩器 +保持采樣系數+自動轉換

        ADC12MCTL0 = INCH_0;//存儲寄存器初始化

        ADC12CTL1 = SHP + CONSEQ_2; //單通道多次轉換模式

        ADC12MCTL0 |= SREF_7;//參考電源選擇VR+=VREF+;VR-=AVSS

        ADC12IE=0x01;//使用通道 使用結束后中斷

        ADC12CTL0 |= ENC ;//轉換允許位 ENC初始化 使能轉換

        ADC12CTL0 |= ADC12SC ;//位觸發及采樣保持

        for(k=0;k<50;k++); //延遲

        adnum=0;

        ad_max=0;

        ad_min=4095;/

        for(k=0;k<12;k++);采樣12次

        }

        {

        while((ADC12IFG&BIT0)!=BIT0) ; //處理ADC12 IN.0中斷

        result[k]=ADC12MEM0;//果返回至內部存儲器

        if(result[k]>ad_max)ad_max=result[k];

        if(result[k]

        adnum+=result[k];

        }

        adnum-=(ad_max+ad_min); // ADC12CTL1 &= ~ADC12IFG;

        ADC12CTL0 &= ~ENC ; //ENC設置為零修改ADX12寄存器值

        ADC12CTL0=0;

        ADC12MCTL0=0;

        ADC12CTL1=0;

        ad_val=(int)(adnum/10);//取采樣平均值。

        return ad_val;

        }

        ******************************************************************



        關鍵詞: MSP430AD轉

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 师宗县| 出国| 屏东县| 徐闻县| 金华市| 收藏| 健康| 建瓯市| 鄢陵县| 察隅县| 台南市| 龙井市| 寻乌县| 万安县| 寿阳县| 邢台市| 读书| 大方县| 山东省| 乌拉特前旗| 上蔡县| 法库县| 凤山县| 上犹县| 周至县| 上栗县| 六枝特区| 嵊泗县| 遂宁市| 介休市| 临沭县| 黄平县| 汽车| 顺义区| 法库县| 缙云县| 高安市| 团风县| 小金县| 广水市| 永修县|