您的位置 首页 模拟

MSP430之一 关于AD转化

在这里记下来自己所学的,而且写一篇记忆更深刻,还方便查阅。希望能有帮助吧~加油一起进步。l首先应明确Msp4301X里的各系列中的ADC模块

在这儿记下来自己所学的,并且写一篇回忆更深入,还便利查阅。期望能有协助吧~加油一同前进。

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;

}

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/256639.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部