<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MSP430之一 關(guān)于A(yíng)D轉換

MSP430之一 關(guān)于A(yíng)D轉換

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

在這里記下來(lái)自己所學(xué)的,而且寫(xiě)一篇記憶更深刻,還方便查閱。希望能有幫助吧~加油一起進(jìn)步。

本文引用地址:http://dyxdggzs.com/article/201611/323029.htm

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


其實(shí)這個(gè)圖感覺(jué)大概看哈就行了,真有時(shí)間和精力細細結合書(shū)滲透還是可以的,不過(guò)就是剛開(kāi)始看有點(diǎn)花花綠綠吧。

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

轉換控制寄存器 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時(shí)才能正常的AD轉換

2. ADCSC是其采集/轉換控制位,啟動(dòng)AD必須要用一條指令來(lái)配置ENC和ADCSC。

3. ADCIVIE 轉換時(shí)間溢出中斷。轉換未完成時(shí),繼續采樣則會(huì )溢出。

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

5. ADC12ON 打開(kāi)內核、

6. REFON 內部基準電壓開(kāi)啟否?

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

8. SHT1,SHT0,名為采樣保持定時(shí)器,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,不然沒(méi)用。

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

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

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

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

6. SHP 采樣信號來(lái)源 0 來(lái)自輸入,1為采樣定時(shí)器

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

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

最重要的兩個(gè)部分說(shuō)完了,呼呼喘口氣、呵呵 看得累了還得用心記下來(lái)。

接下來(lái)要說(shuō)的是轉換儲存寄存器 ADC12MEM0-MEM15;

只用低12位,后面4個(gè)讀零。

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

這個(gè)也是定義轉換功能滴~~

0 1 2 3

4 5 6

7

INCH

SREF

EOS

4個(gè)模擬通道

可選6種。

結束控制.0.完了,1沒(méi)有

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

********************************我是分割線(xiàn)***********************************************

說(shuō)到這里基本可以用上述3個(gè)來(lái)搭建出基本的AD模型了吧。感覺(jué)硬件編程,就像是堆積木哈,找到積木,然后一個(gè)一個(gè)一堆,技術(shù)含量就是記不住,每次都要翻書(shū)。不過(guò)沒(méi)關(guān)系呀,不翻書(shū),然何以破萬(wàn)卷?接著(zhù)加油吧!

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

中斷寄存器:

ADC12IFG 中斷標志寄存器,ADC12IFG..x = 1 結束轉換,= 0 訪(fǎng)問(wèn)ADC12MEM

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

ADC12IV 僅有的一個(gè)中斷向量,實(shí)際是定義了中斷地址.

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

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

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

#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;//內部振蕩器 +保持采樣系數+自動(dòng)轉換

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

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

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

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

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

ADC12CTL0 |= ADC12SC ;//位觸發(fā)及采樣保持

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;

}

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



關(guān)鍵詞: MSP430AD轉

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>