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