您的位置 首页 方案

MSP430 ADC12模块寄存器设置解读

一。简单介绍:ADC12模块中是由以下部分组成:输入的16路模拟开关(外部8路,内部4路),ADC内部电压参考源,ADC12内核,ADC时钟源部分,采集

一。简略介绍:

ADC12模块中是由以下部分组成:输入的16路模仿开关(外部8路,内部4路),ADC内部电压参阅源,ADC12内核,ADC时钟源部分,收集与坚持/触发源部分,ADC数据输出部分,ADC操控寄存器等组成。

四种采样形式:

(1)单通道单次转化形式

(2)序列通道单词转化形式

(3)单通道屡次转化形式

(4)序列通道屡次转化形式

个人觉得(3)形式应该是运用较多的,

对选定的通道进行屡次转化,直到封闭该功用或ENC=0。进行如下设置:
x=CSStartAdd,指向转化开端地址
ADC12MEMx寄存转化成果
ADC12MCTLx寄存器中界说了通道和参阅电压
在这种形式下,改动转化形式,不必先中止转化,在当时正在进行的转化结束后,可改动转化形式。该形式的中止可有如下几种方法:
运用CONSEQ=0的方法,改动为单通道单次形式。
运用ENC=0直接使当时转化完结后中止。
运用单通道单次形式替换当时形式,一起使ENC=0
ADC操控寄存器
ADC12CTL0转化操控寄存器0
ADC12CTL1转化操控寄存器1
ADC12IE中止使能寄存器
ADC12IFG中止标志寄存器
ADC12IV中止向量寄存器
ADC12MEM0-15存储操控寄存器0-15
ADC12MCTL0-15存储操控寄存器0-15
一般做法:在大循环里开端转化,转化结束引发中止,咱们在中止里记载并处理转化数据。

二。ADC12寄存器阐明
———————————————————————–
寄存器类型寄存器缩写寄存器意义
———————————————————————–
转化操控寄存器ADC12CTL0转化操控寄存器0
ADC12CTL1转化操控寄存器1
———————————————————————–
中止操控寄存器ADC12IFG中止标志寄存器
ADC12IE中止使能寄存器
ADC12IV中止向量寄存器
———————————————————————–
存储及其操控寄存器ADC12MCTL0~ADC12MCTL15存储操控寄存器0~15
ADC12MEM0~ADC12MEM15存储寄存器0~15
———————————————————————–
1.ADC12CTL0操控寄存器0,各位界说:
bit15~12bit11~8bit7bit6bit5bit4bit3bit2bit1bit0
SHT1SHT0MSC2.5VREFONADC12ONADC12TOVIEADC12TVIEENCADC12SC
ADC12SC——采样/转化操控位。在不同条件下,ADC12SC的意义如下所示:
——–|———————————————————————
ENC=1,|SHP=1:ADC12SC由0变为1发动A/D转化;A/D转化完结后ADC12SC主动复位
ISSH=0|SHP=0:ADC12SC坚持高电平采样;ADC12SC复位时发动一次转化
——–|———————————————————————
ENC——转化答应位。
0:ADC12为初始状况,不能发动A/D转化;
1:初次转化由SAMPCON上升沿发动
ADC12TVIE——转化时刻溢出中止答应位(当时转化还没完结时,又产生一次采样恳求,则会产生转化时刻溢出)
0:没产生转化时刻溢出
1:产生转化时刻溢出
ADC12OVIE——溢出中止答应位(当ADC12MEMx华夏有数据还没有读出,而又有新的转化成果数据要写入时,则产生溢出)
0:没产生溢出
1:产生溢出
ADC12ON——ADC12内核操控位
0:封闭ADC12内核
1:翻开ADC12内核
REFON——参阅电压操控位
0:内部参阅电压产生器封闭
1:内部参阅电压产生器翻开
2.5V——内部参阅电压的电压值挑选位
0:挑选1.5V内部参阅电压
1:挑选2.5V内部参阅电压
MSC——屡次采样转化位(CONSEQ<>0表明当时转化形式不是单通道单次转化)
———–|———————————————————————————————
有用条件|MSC值意义
SHP=1|0每次转化需求SHI信号的上升沿触发采样定时器
CONSEQ<>0|1仅初次转化由SHI信号的上升沿触发采样定时器,然后采样转化将在前一次转化完结后当即进行
———–|———————————————————————————————
SHT1、SHT0——采样坚持定时器1,采样坚持定时器0
别离界说保存在转化成果寄存器ADC12MEM8~ADC12MEM15和ADC12MEM0~ADC12MEM7中的转化采样时序与采样时钟ADC12CLK的联系。采样周期是ADC12CLK周期乘4的整数倍,即:
SHITx0123456789101112~15
n1248162432486496128192256
2.ADC12CTL1转化操控寄存器1(大多数3~15位,只要在ENC=0时才可被修正),各位界说:
bit15~12bit11~10bit9bit8biy7~5bit4~3bit2~1bit0
CSSTARTADDSHSSHPISSHADC12DIVADC12SSELCONSEQADC12BUSY
CSSTARTADD——转化存储器地址位。该4位所表明的二进制数0~15别离对应ADC12MEM0~15。能够界说单次转化地址或序列转化的首地址。
SHS——采样触发输入源挑选位。
0:ADC12SC
1:Timer_A.OUT1
2:Timer_B.OUT0
3:Timer_B.OUT1
SHP——采样信号(SAMPCON)挑选操控位。
0:SAMPCON源自采样触发输入信号
1:SAMPCON源自采样定时器,由采样输入信号的上升沿触发采样定时器
ISSH——采样输入信号方向操控位
0:采样输入信号为同向输入
1:采样输入信号为反向输入
ADC12DIV——ADC12时钟源分频因子挑选位。分频因子为该3位二进制数加1
ADC12SSEL——ADC12内核时钟源挑选
0:ADC12内部时钟源——ADC12OSC
1:ACLK
2:MCLK
3:SMCLK
CONSEQ——转化形式挑选位
0:单通道单次转化形式
1:序列通道单次转化形式
2:单通道屡次转化形式
3:序列通道屡次转化形式
ADC12BUSY——ADC12忙标志(只用于单通道单次转化形式,在其它转化形式下,该位无效)
0:表明没有活动的操作
1:表明ADC12正处于采样期间、转化期间或序列转化期间
3.ADC12MEM0~ADC12MEM15转化存储寄存器
该组寄存器均为16位寄存器,用来寄存A/D转化成果。顶用其间低12位,高4位在读出时为0
4.ADC12MCTLx转化存储操控寄存器(一切位只要在ENC为低电平时可修正,在POR时各位被复位)
关于每个转化存储器有一个对应的转化存储器操控寄存器,所以在进行CSSTARTADD转化存储器地址位设置的一起,也确认了ADC12MCTLx。该寄存器各位意义如下:
bit7bit6~4bit3~0
EOSSREFINCH
EOS——序列结束操控位
0:序列没有结束
1:该序列中最终一次转化
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:片内温度传感器的输出
11~15:(AVCC-AVSS)/2
5.ADC12IFG中止标志寄存器为16位,其间中止标志位ADC12IFG.x对应于转化存储寄存器ADC12MEMx。各位意义如下:
bit15bit14……bit1bit0
IFG15IFG14……IFG1IFG0
ADC12IFG.x置位:转化结束,而且转化成果现已装入转化存储寄存器。
ADC12IFG.x复位:ADC12MEMx被拜访。
6.ADC12IE中止使能寄存器为16位,对应于ADC12IFG寄存器。各位意义如下:
bit15bit14……bit1bit0
IE.15IE.14……IE.1IE.0
ADC12IE.x=1:答应相应的中止标志位ADC12IFG.x在置位时产生的中止恳求服务。
ADC12IE.x=0:制止相应的中止标志位ADC12IFG.x在置位时产生的中止恳求服务。
7.ADC12IV中止向量寄存器
ADC12是一个多源中止:有18个中止标志(ADC12IFG.0~ADC12IFG.15与ADC12TOV,ADC12OV),但只要一个中止向量。所以需求设置这18个标志的优先级次序,依照优先级次序组织中止标志的呼应,高优先级的恳求能够中止正在服务的低优先级。

三。规范程序参阅:

#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复位的情况下才能对ADC12CTL0、1进行设置!!!
ADC12CTL0 = MSC + REFON + REF2_5V + SHT0_15 + SHT1_15;

ADC12CTL1 |= SHP + CONSEQ_0;

ADC12MCTL0 = EOS + SREF_0 + INCH_7;

ADC12IE |= 0x0001;//开相应模仿通道中止,转化结束后引发中止
_EINT();
//ADC12CTL0 |= ADC12ON + ENC; //修正!!!// 这样写是不对的
ADC12CTL0 |= ADC12ON;
ADC12CTL0 |= ENC;

wait = 0; //此处可界说变量,指示转化是否完结
ADC12CTL0 |= ENC+ADC12SC; //转化开端 若期望在其他时刻开端转化 可将次句放在别处逼比必
while(wait==0)
;
}
#pragma vector=ADC_VECTOR
__interrupt void ADC()
{int result[7];
wait=1;
result[0] = ADC12MEM0;

}

下面再来扼要的介绍一下这个模块不易了解的当地

1、MSP430能够运用内部、外部的参阅电压,内部1.5或2.5,外部0~3.3,能够经过寄存器设置,采样电压的输入规模最大为0~3.3即AVss~AVcc,不能检测负电压,假如需求检测负电压,能够运用运放,电压偏置成为正电压然后检测

2、运用外部AVss~AVcc作为参阅电压不行安稳,可是精度高,运用内部电压较安稳。

3、程序中一定要翻开大局中止_EINT();

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部