0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MSP430 ADC12模块的组成_ADC12寄存器说明

汽车玩家 来源:电子发烧友网 2018-04-10 17:55 次阅读

一、简单介绍:

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

四种采样模式:

MSP430 ADC12模块的组成_ADC12寄存器说明

(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

一般做法:在大循环里开始转换,转换完毕引发中断,我们在中断里记录并处理转换数据。

MSP430 ADC12模块的组成_ADC12寄存器说明

二、ADC12寄存器说明

寄存器类型 寄存器缩写 寄存器含义

转换控制寄存器 ADC12CTL0 转换控制寄存器0

ADC12CTL1 转换控制寄存器1

中断控制寄存器 ADC12IFG 中断标志寄存器

ADC12IE 中断使能寄存器

ADC12IV 中断向量寄存器

存储及其控制寄存器 ADC12MCTL0~ADC12MCTL15 存储控制寄存器0~15

ADC12MEM0~ADC12MEM15 存储寄存器0~15

1.ADC12CTL0 控制寄存器0,各位定义:

bit15~12 bit11~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

SHT1 SHT0 MSC 2.5V REFON ADC12 ON ADC12 TOVIE ADC12 TVIE ENC ADC12 SC

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的整数倍,即:

SHITx 0 1 2 3 4 5 6 7 8 9 10 11 12~15

n 1 2 4 8 16 24 32 48 64 96 128 192 256

2.ADC12CTL1 转换控制寄存器1(大多数3~15位,只有在ENC=0时才可被修改),各位定义:

bit15~12 bit11~10 bit9 bit8 biy7~5 bit4~3 bit2~1 bit0

CSSTARTADD SHS SHP ISSH ADC12 DIV ADC12 SSEL CONSEQ ADC12 BUSY

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。该寄存器各位含义如下:

bit7 bit6~4 bit3~0

EOS SREF INCH

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。各位含义如下:

bit15 bit14 。。。。。。 bit1 bit0

IFG15 IFG14 。。。。。。 IFG1 IFG0

ADC12IFG.x置位:转换结束,并且转换结果已经装入转换存储寄存器。

ADC12IFG.x复位:ADC12MEMx被访问。

6.ADC12IE 中断使能寄存器 为16位,对应于ADC12IFG寄存器。各位含义如下:

bit15 bit14 。。。。。。 bit1 bit0

IE.15 IE.14 。。。。。。 IE.1 IE.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;

/*MSC:多次采样转换位,只对序列采样或者多次多次转换有效。

0:采样定时器需要SHI信号的上升沿触发

1:首次需要采样定时器SHI信号触发,之后的转换在上次转换之后随即开始。*/

ADC12CTL1 |= SHP + CONSEQ_0;

/*SHP: 1:采样信号源自采样定时器 0:采样信号源自采样输入信号

CONSEQ: 0: 单通道单次转换 1:序列通道单词转换 2:单通道多次转换 3:序列通道多次转换

CSTARTADD_x(0~15):转换起始位置 */

ADC12MCTL0 = EOS + SREF_0 + INCH_7;

/* EOS:序列结束位

SREF: 参考电压选择

INCH:模拟输入通道选择 */

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;

/*unsigned char q0;

int *pmem=ADC12MEM;

//转换结束的标志位置位

for(q0=0;q0《16;q0++)

{

AdMem[q0]= *pmem;

pmem++;

}*/

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117731
  • ADC12
    +关注

    关注

    0

    文章

    8

    浏览量

    3584
收藏 人收藏

    评论

    相关推荐

    MSP430F5438 ADC12交流采样的问题

    开发了一款产品相关的软件程序都做好了……但是ADC12采样确出现了问题,用仿真仿真时都是前2次计算结果跟给入的源信号一致,但之后就不对了,把ADC12采样的值拿出来用MATLAB 计数FFT,值
    发表于 03-14 16:32

    ADC12采集语音信号

    求助用msp430F2616中的ADC12编写一个语音采集C程序。
    发表于 07-13 15:11

    急急急!求解答关于用msp430ADC12采集语音的两个问题

    我要用msp430F2616的ADC12做声音的采集,问题如下:1、不知道用但序列通道还是用重复单序列通道,求解释。2、采集的信号要存于外部的ram(HM628128),能不能只用一个momery寄存器,再一个个的存到外部ram
    发表于 07-13 15:39

    MSP430怎么实现ADC12比较

    我想用ADC12采集电压进行比较,来控制其他电路,但就是控制不了。高手们有没有程序分享一下?
    发表于 10-28 20:43

    MSP430如何测试ADC12采样速率

    我想测试一下MAP430F149的adc12采样速率,测出来大概在168KHZ左右,后来又测了一遍,变成了285Khz。但是改变SHT的时候采样速率都没有变化。想请教各位大神原因在哪。程序如下
    发表于 04-02 12:25

    ADC12模块详细资料

    此内容为MSP430ADC12模块的ppt讲解,很详细。
    发表于 07-27 18:37

    基于L1602液晶显示和msp430f5529 ADC12的信号采集程序

    基于L1602液晶显示和msp430f5529 ADC12的信号采集程序
    发表于 08-01 13:50

    MSP430单片机的ADC12如何设置成几个通道同时进行转换?

    求解:如何设置,设置哪个可以把ADC12做成几个通道同时转换呢???
    发表于 03-09 16:50

    ADC12单通道多次采集的程序哪里有错吗

    ADC12模块+采集分频系数n=8+采样信号由SHI仅首次触发(上升沿)ADC12CTL1=CSTARTADD_0+SHP+CONSEQ_2;//SAMPCON信号选为采样定时输出+
    发表于 03-25 04:15

    有关ADC12模块基本知识汇总

    ADC12的基本原理是什么?怎样去设置ADC12寄存器呢?ADC12的转换模式有哪几种呢?
    发表于 02-11 06:30

    ADC12单通道和序列通道单次转换程序

    ADC12单通道和序列通道单次转换程序
    发表于 07-14 14:19 4次下载

    MSP430教程14:MSP430单片机ADC12模块

    MSP430教程14:MSP430单片机ADC12模块
    发表于 10-12 09:03 55次下载
    <b class='flag-5'>MSP430</b>教程14:<b class='flag-5'>MSP430</b>单片机<b class='flag-5'>ADC12</b><b class='flag-5'>模块</b>

    基于MSP430功能模块详解系列之——ADC12

    基于MSP430功能模块详解系列之——ADC12
    发表于 10-12 15:24 4次下载
    基于<b class='flag-5'>MSP430</b>功能<b class='flag-5'>模块</b>详解系列之——<b class='flag-5'>ADC12</b>

    MSP430ADC12模块

    msp430内部含有 ADC12模块,可以完成12位的模数转换,当对精度或其他指标要求不高时,可以选用430单片机内部的
    发表于 05-04 09:40 6次下载
    <b class='flag-5'>MSP430</b>之<b class='flag-5'>ADC12</b><b class='flag-5'>模块</b>

    MSP430X1XX系列ADC12和DMA详解(附带程序)(上)--ADC12详解与源码

    一,ADC12基本原理1.1,参考电压发生器所有的 ADC 和 DAC 模块都需要一个基准信号,这个信号就是我们常说的 Vref+,Vref-。 MSP430
    发表于 12-08 18:21 10次下载
    <b class='flag-5'>MSP430</b>X1XX系列<b class='flag-5'>ADC12</b>和DMA详解(附带程序)(上)--<b class='flag-5'>ADC12</b>详解与源码