MSP430_内部AD精讲
MSP430单片机之ADC
一张图看懂MSP430单片机之ADC原创一,基础知识ADC即Analog to Digital Converter模数转换,把模拟信号进行量化,转换为数字量。
对于软件工程师来说,ADC内部的转换原理可以忽略,只需要了解其对外呈现的接口。
AD输入与输出之间的关系为:MSP430的ADC12内核模块是12位的,其最大输出为2^12 – 1 = 4095。
以VR-为参考点,当VIN小于或者等于VR-时得到的AD码值为0,当VIN大于或者等于VR+时,得到的AD码值为4095,当VIN处于VR-和VR+之间时,按线性比例转换。
这样,从MCU中读出AD码值,即可根据公式倒推回去计算出输入的模拟量电压。
二,ADC总体框图再补一张中文版的:三,分块解释1,ADC内核先来看看ADC最核心的部分。
当然少不了电压参考源VR+和VR-,以及模拟量输入部分。
模拟量输入部分是和“采样保持”电路连在一起的,这一部分后面再细说。
除此之外,与ADC内核相关的,还有以下几个信号:1,ADC12CLK。
在MCU中,任何模块都少不了时钟,ADC模块也不例外,必须有时钟信号它才能工作。
它有4个时钟源可以选择,并且可以1~8分频。
2,ADC12ON,这个是ADC内核的总开关,只有当ADC12ON这一位为1时,ADC内核模块才工作。
如果想要关闭ADC内核以降低功耗,可以将ADC12ON置为0.3,SAMPCON,采样控制信号。
该信号接至Convert,当SAMPCON为低电平时,ADC内核进行AD转换。
4,BUSY,用于指示内核模块是否正处于AD转换过程中。
2,采样保持。
【MSP430趣谈】MSP430第十二讲之ADC(上)
【MSP430趣谈】MSP430第十二讲之ADC(上)首先我们需要明白一个问题是什么是ADC,中文翻译过来就是模数转换器,从他的英文名的话我们会更加好记,Analog-to-Digital Converter。
简而言之就是将模拟量转换为数字量。
在我们的生活中大部分是模拟量,比如说温度、压力、声音、或者图像等等。
现在大部分的传感器都将一些模拟量转化为电压量来进行测量,这里不再举例,因为太多了,大家在学会这一讲之后,可以试着去读一个土壤湿度传感器的值(前提是你有的话)。
现在大家应该可以明白是什么了吧!一句话,就是把电压值转化成数字量(会不会有点笼统,暂且可以这么理解)。
我们现在看下ADC有一些什么性能指标?1.采样率这是一个什么概念呢?因为对于模拟量来说,在时域上面是连续的(时域是指x轴为时间t的一个坐标域,比如你用示波器看到的波形就是指在时域上面的波形),而对于我们的数字量来说它就是一个离散的量,也就是说它必然是会产生一个时间间隔,没有办法做到连续,做到连续的话数据量就是无穷大(会不会说的有点玄乎,希望大家可以明白。
)所以就引出采样率这样的一个东西,简单说就是多久采集一次信号,又可以称之为采样频率。
2. 分辨率大家如果去查ADC的芯片,都会说到该芯片是几位的ADC,那么这个是用来干嘛的呢?比如说我们介绍的FR5969提供了一个12位的ADC,改怎么理解呢,12位的ADC第一个寄存器来说,那么他可以存储多少个数呢?就是212个数,假设我们现在给一个2.5V的电压值,那么我们可以得到他的分辨率就是2.5/212 = 0.0006也就是说它可以测量到0.0006V的电压。
3.转化时间这个比较复杂,因为涉及到ADC的构成以及工作原理,所以下面我们需要专门来讲一讲ADC的电路工作原理。
首先第一个我们需要知道的是采样定理,对于现在大部分的规模电路乃至超大规模电路,都基本的是以数字为主的,但是实际的大部分参量是模拟的,所以就需要解决这之间的桥梁问题。
微处理机系统MSP430的ADC模组ADC简介
ADC_04.C
Repeat-Single-Channel Mode
輸入2V,1kHz三角波至P1.4,觀察 ad_value矩陣值。 若改為方波,TACCR0 = 49,結果如何?
ADC_05.C
Low-battery monitoring
將程式download後,將USB供電 拔除,改成由電源供應器自Vcc腳 位供電。 若供電3.3V結果如何? 若供電2.2V結果如何?
ADC_06.C
Data Transfer Controller (DTC)
輸入2V,1kHz方波至P1.4,觀 察記憶體位址0x200以後32bytes 的變化
試更改ADCDTC1及ADC10SA 的值,觀察變化
ADC_06.C
Data Transfer Controller (DTC)
ቤተ መጻሕፍቲ ባይዱ
ADC_06.C
Data Transfer Controller (DTC)
ADC_07.C
Data Transfer Controller (DTC)
輸入2V,1kHz方波至P1.4,觀 察記憶體位址0x200以後32bytes 的變化(是否有一直更新)? 試觀察,當按下S2後,記憶體 位址0x200以後32bytes的變化(是 否有一直更新)?
NADC
0 (0000h)
VR-
Vin
VR+
Voltage Level
ADC_01.C
Single-Channel Single-Conversion Mode 以電源供應器供給P1.4固定電壓,並觀察 ADC10MEM暫存器內容
ADC_01.C
Single-Channel Single-Conversion Mode
MSP430-AD12的个人深入了解
MSP430-AD12 的个人深入了解一:msp430 内部AD 是否稳定?
答:从网上查看了很多资料,说msp430 的内部AD 不怎幺稳定。
第一种方式:我把AD 通道上加上1.25V 的基准源,作为被测源(430 用内部时钟,内部基准源2.5V,参考源外部引脚加了一个1000p 的滤波电容),它的波动为1。
第二种方式:AD 的输入端对地短路,转换值为0 或者1 从结果来看,它自身有1 个数的波动。
也就是msp430 内部的AD 性能比较优越。
二:采样周期的选择?
答:1:这个问题始终找不到准确的答案,经过我测时候发现,选用不同的周期值,采样出来的值有所变化,但同时采样出来的AD 波动也有所变化,建议采用AD 的值波动比较小的那个采样周期,最后用理想值做一个修正。
2:网上还有一种说法,就是根据被测信号的质量来选择,在信号源质量不好的情况下,周期选择相应的比较长一点,相当于有一定的RC 滤波的效果。
三:msp430 的AD12 的一致性?。
基于msp430g2553内部ADC10单通道详解
基于msp430g2553内部ADC10单通道详解基于msp430g2553内部ADC10单通道详解/采用数码管显示转换结果#include "delay.h"#define Num_of_Results 32static uint results[Num_of_Results];uchard[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};uchard1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchar a[5]={0xdf,0xef,0xf7,0xfb,0xff};void main(){// Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;//主系统时钟切换为外部高速晶振if (CALBC1_8MHZ == 0xFF || CALDCO_8MHZ == 0xFF){while(1); // If calibration constants erased, trap CPU!!}// Configure Basic ClockBCSCTL1 = CALBC1_8MHZ; // Set rangeDCOCTL = CALDCO_8MHZ; // Set DCO step + modulation*/P1SEL |= BIT1+BIT0; // p1.0为A0P1DIR&=~(BIT1+BIT0);// p1.0为输入P2SEL=0X00;// p2为普通io口ADC10CTL0=ADC10ON+ADC10SHT_2+MSC+ADC10IE+SREF_2;// ADC12ON打开ADC;//ADC10SHT_3设置采样时间,合适即可//MSC设置多次采样// 中断允许,IFG置位后会进入中断服务程序ADC10CTL1= CONSEQ_2+INCH_0;//CONSEQ_2单通道多次转换// INCH_0选择通道A0,可以不写,默认为A0ADC10AE0|=0X03;ADC10SA=0X200;ADC10CTL0 |= ENC+ADC10SC; // 使能转换并且开始转换ADC10CTL0&=~ADC10IFG;//清除中断标志位_EINT();//打开中断while(1);}//ADC中断服务函数,在这里用多次平均的#pragma vector=ADC10_VECTOR__interrupt void ADC10ISR (void){uchar i;uchar ptr[4];P1DIR=0XFC;//p4作为输出P2DIR=0XFF;static uint index = 0;results[index++] = ADC10MEM;if(index == Num_of_Results){unsigned long sum = 0,real;index = 0;for(i = 0; i < Num_of_Results; i++){sum += results;}sum >>= 5; //除以32求得平均值real=3300*sum/1023;//扩大1000倍ptr[3] = real / 1000;ptr[2] = (real - ptr[3]*1000)/100;ptr[1] = (real - ptr[3]*1000 - ptr[2]*100)/10;ptr[0] = (real - ptr[3]*1000 - ptr[2]*100 - ptr[1]*10); for(i=0;i<4;i++){P1OUT=a;if(i==3)P2OUT=d1[ptr];elseP2OUT=d[ptr];__delay_cycles(30000);P1OUT=a[4];P2OUT=d[10];}}}。
MSP430教程之十二ADC(下)
MSP430教程之十二ADC(下)上次我们讲了相关的ADC知识,那么这次我们将这些知识实际应用于我们的实际使用中。
同样的建立工程和添加库的步骤我们就不在说明了,两份文档,数据手册和我们的库文件使用手册也是必不可少的了,有时候我们还会需要用到我们的Launchpad的开发板原理图来查看某些引脚,这些步骤也都是我们之前一直说到的,希望可以给大家一些学习方法上面的参考。
今天这一讲我们将进入代码的书写上面,同样我们还是以库函数的形式来进行编写,后续我们会更新寄存器的编写方式,同时大家可以进行参考MSP430Ware的示例代码来自行编写寄存器的配置代码。
Ksps的意思是每秒转换次数为多少。
这里插播一个细节的东西,德州仪器(TI)的官网不管对于库函数还是寄存器都给出了示例代码,我们通过我们CCS环境下面的TI Resource Explorer下面查看到的示例代码都是基于寄存器的形式进行编写的,那么这里我们将和大家说一下要如何查看官方的库函数参考例程。
首先我们需要确认你有安装了MSP430Ware,如果你可以打开上面的界面,那毫无疑问是已经安装好了。
然后我们需要找到这个MSP430Ware的存放位置。
一个方法就是通过windows的搜索,直接搜索MSPWare(注意这里是搜索MSPWare而不是MSP430Ware)。
其他方法没找到,需要你知道安装在哪里。
不过一般情况下都会在软件的安装目录附近,自己稍微找一下应该就可以找到。
(如图下面长这样的文件夹)进去之后会有很多分支,红色方框里面的是我们的库函数的集合,而黑色方框对应的example就是我们上面TI Resource Explorer里面呈现的寄存器C参考例程了。
进入driverlib这个文件夹之后我们得到下面这么多文件,很显然例程就在我们的example里面,而这里面的driverlib对应就是我们器件的库函数源代码。
其他的大家自己琢磨去看看了。
不在说明了。
【MSP430趣谈】MSP430第十二讲之ADC(下)
【MSP430趣谈】MSP430第十二讲之ADC(下)Ksps的意思是每秒转换次数为多少。
这里插播一个细节的东西,德州仪器(TI)的官网不管对于库函数还是寄存器都给出了示例代码,我们通过我们CCS环境下面的TI Resource Explorer下面查看到的示例代码都是基于寄存器的形式进行编写的,那么这里我们将和大家说一下要如何查看官方的库函数参考例程。
首先我们需要确认你有安装了MSP430Ware,如果你可以打开上面的界面,那毫无疑问是已经安装好了。
然后我们需要找到这个MSP430Ware的存放位置。
一个方法就是通过windows的搜索,直接搜索MSPWare(注意这里是搜索MSPWare而不是MSP430Ware)。
其他方法没找到,需要你知道安装在哪里。
不过一般情况下都会在软件的安装目录附近,自己稍微找一下应该就可以找到。
(如图下面长这样的文件夹)进去之后会有很多分支,红色方框里面的是我们的库函数的集合,而黑色方框对应的example就是我们上面TI Resource Explorer里面呈现的寄存器C参考例程了。
进入driverlib这个文件夹之后我们得到下面这么多文件,很显然例程就在我们的example里面,而这里面的driverlib对应就是我们器件的库函数源代码。
其他的大家自己琢磨去看看了。
不在说明了。
进入example这个文件夹就是我们德州仪器所有的430产品的系列型号对应的不同的参考代码了。
我们进入FR5xx_6xx这个系列,对应我们的开发板芯片FR5969。
这里面就给出了我们所有的TI Resource Explorer对应的库函数参考代码。
大家可以参考学习官方提供的库函数,是官方提供的,写的也相对比较规范,但是官方的东西总一个有一个毛病亘古不变,就是难懂,一般官方给的东西要是很通熟易懂,那肯定火的不行了。
所以在静心去琢磨琢磨官方的东西,虽然难懂,但是多看,多模仿,对自己能力的提高有着很大的帮助。
MSP430教程14MSP430单片机ADC12模块
MSP430教程14MSP430单片机ADC12模块MSP430单片机的ADC12模块是一个12位的模数转换器,用于将模拟电压转换为数字值,以供单片机内部处理。
ADC12模块是MSP430单片机中最常用的外设之一,可以用于各种应用,如模拟传感器读取、电量计算等。
ADC12模块的主要特点包括:1.12位的精度,可以将电压精确转换为4096个不同的数字值。
2.可以配置为单通道或多通道模式,允许同时转换多个模拟通道的电压。
3.支持多种转换触发方式,如手动触发、定时触发、比较触发等。
4.可以配置不同的参考电压源,以适应不同的应用场景。
5.内置温度传感器和内部参考电压源,方便温度和电压的测量。
在使用ADC12模块之前,需要进行一些初始化配置。
首先,需要设置参考电压源,可以选择使用外部引脚输入的参考电压,或者使用内部参考电压。
其次,需要选择转换触发源,可以选择手动触发或定时触发等。
还可以选择转换结果的存储位置,可以存储在内存中,也可以存储在DMA传输缓冲区中。
在实际使用中,可以通过编程设置ADC12的参数并启动转换。
转换完成后,可以通过查询标志位或中断方式来获取转换结果。
获取结果后,可以进行进一步的处理,如计算实际电压值或进行比较判断等。
以下是一个简单的示例代码,演示了如何使用ADC12模块进行模拟电压转换:```c#include <msp430.h>void init_ADC12//设置参考电压为内部2.5V参考源REFCTL0=REFMSTR,REFVSEL_2,REFON;//设置为单通道模式,使用A0通道ADC12CTL0=ADC12ON,ADC12SHT0_8,ADC12MSC;ADC12CTL1=ADC12SHP;//使用采样保持模式ADC12MCTL0=ADC12INCH_0,ADC12VRSEL_1;//设置输入通道为A0,使用2.5V参考电压//选择转换触发源为软件触发ADC12CTL0,=ADC12ENC,ADC12SC;void main(void)WDTCTL=WDTPW,WDTHOLD;//停用看门狗定时器while (1)while (ADC12CTL1 & ADC12BUSY);//等待转换完成unsigned int result = ADC12MEM0; // 获取转换结果//进一步处理转换结果,如计算实际电压值float voltage = (result / 4096.0) * 2.5;//处理完成后进行下一次转换ADC12CTL0,=ADC12SC;}```以上代码中,首先调用`init_ADC12(`函数进行ADC12模块的初始化配置,然后在主循环中进行转换和结果处理。
MSP430_AD转换
ADC12 的功能模块( 6/ 11)
13
ADC12 的功能模块( 7/ 11)
4. 采样及转换所需的时序控制
采样和转换所需要的各种时钟信号: ADC12CLK转换时钟、 SAMPCON采样及转换信
号、SHT控制的采样周期 、 SHS控制的采样触发来源选 择 、ADC12SSEL选择的内核时钟源 及 ADC12DIV选择 的分频系数……
ADC12CTL1=SHP;
ADC12CTL0 |= ENC;
While(1)
{
ADC12CTL0 |=ADC12SC;
while((ADC12IFG&BIT0)==0)
_NOP( );
}
}
35
谢谢观看!!
36
控制寄存器 ADC12MEM0 ~
ADC12MEM15
寄存器的含义 转换控制寄存器0 转换控制寄存器1 中断标志寄存器 中断使能寄存器 中断向量寄存器 存储控制寄存器0~15
存储寄存器0~15
18
ADC12的相关寄存器(2 / 15)
1. 转换控制寄存器
① ADC12CTL0
转换控制寄存器0
19
ADC12的相关寄存器( 3/ 15)
VR+(有3种):A VCC (模拟电源正端) V REF+ (A/D转换器内部参考电源的输出正端) V eREF+ (外部参考电源的正输入端)
V R-(有2种):A VSS (模拟电源负端) V REF- 或 V eREF- (A/D转换器内部或者外
部参考电源负端)
8
ADC12 的功能模块( 2/ 11)
应的中断标志; • ADC12MCTLx寄
存器中定义了通道 和参考电压。
MSP430-ADC
如何使用ADC?
现假设需对一频率为50Hz的工频信号测量,要求每周期 采样点数为128点。分析如下: 首先,可将该信号接到AIN0,这样就可以配置相应的 GPIO了—P6.0, 其次,由于只有一路信号,所以只选择ADC1就可以实现 ,软件配置的目标为ADC1 再次,根据要求,算出fs=50*128 = 6400Hz,根据fs就可 确定触发ADC1的时间,触发一般采用定时器实现,因此 就可对定时器进行配置了。 最后,由于每次ADC的结果都放在同一个寄存器中,因 而要求每次转换结束后应将结果保存在存储器中。
精度:位数; 速率:转换时间;
被测量的个数:通道数。
思考?
使用ADC之前你要先明确: 根据你需要测量的模拟量个数确定对应的引脚; 根据所测量的特征(是否需同时测量)可以选择是否采 用双ADC或者三个ADC工作。单个ADC也可以对多达16 路引脚上的电压进行转换,但它是依次进行的。 采样频率(fs),fs需符合奈奎斯特采样定律; 输入信号的电压范围是否满足要求?没有的话需对输入 信号调理,最好在输入处加一电压跟随器。
ADC12CTL1,ADC12控制寄存器1
ADC12CTL2,ADC12控制寄存器2
ADC12MCTLx,ADC12_A转换存 储控制寄存器
ADC12IE,ADC12_A中断使能寄存 器
举例:单通道单次转换
ADC12CTL0 = ADC12SHT02 + ADC12ON; ADC12CTL1 = ADC12SHP; ADC12IE = 0x01; ADC12CTL0 |= ADC12ENC; P6SEL |= 0x01; P1DIR |= BIT0; __delay_cycles(10000); while (1) { ADC12CTL0 |= ADC12SC; __bis_SR_register(LPM0_bits + GIE); __no_operation(); }
msp430定时器AD模块以及其他笔记
定时器A用到CCR0定时器A的中断可由定时器溢出引起,也可由捕获/比较器模块产生。
每个捕获/比较模块可以独立编程,由捕获/比较外部信号产生中断。
定时器A使用两个中断向量,一个单独分配给捕获/比较寄存器CCR0;另一个作为共用中断向量用于定时器和其他的捕获/比较寄存器。
捕获/比较寄存器CCR0中断向量具有最高优先级,因为CCR0主要用来定义定时器的工作模式,而这是定时器A其他功能的基础,需要最快速的服务。
开启定时器应该在修改定时器工作频率之前。
CCR1,CCR2和定时器共用另一个中断向量,属于多源中断。
由向量中断寄存器TAIV决定由哪个中断标志来触发中断。
中断标志产生数据表:中断优先级中断源缩写 TAIV 的内容最高捕获/比较器1 CCIFG1 2捕获/比较器2 CCIFG2 4定时器溢出 TAIFG 10最低没有中断将挂起 0PxDIR输入/输出方向寄存器0:I/O引脚切换成输入模式 PxIN1:I/O引脚切换成输出模式 PxOUTPxIE中断使能寄存器0:禁止该中断 1:允许该中断PxIES中断触发沿选择寄存器如果允许Px口的某个引脚中断,还需要定义该引脚的中断触发沿。
0:上升沿使相应标志置位 1:下降沿使相应标志置位PxSEL功能选择寄存器0:选择引脚为I/O端口 1:选择引脚为外围模块功能上电复位信号:POR(power-on reset)上电清除复位信号:PUC(power-up clear)POR信号的产生总会产生PUC信号,但是PUC信号的发生不一定会产生POR信号。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
TACTL是最为主要的控制寄存器,它决定了TA的输入时钟信号、TA的工作模式、TA的开启与停止、中断的申请等工作。
MSP430之一 关于AD转换
之一关于AD转换
l 首先应明确Msp4301X里的各系列中的ADC模块大凡是12位的转换精度。
下图即为其功能模块图。
其实这个图感觉大概看哈就行了,真有时间和精力细细结合书渗透还是可以的,不过就是刚开始看有点花花绿绿吧。
l 熟悉并能使用一个模块,必然要熟悉其各个寄存器的作用。
下面我们来看下ADC12模块中各个模块寄存器的作用,
转换控制寄存器 ADC12CTL0
ADC12CTL0
1. ENC=1时才能正常的AD转换
2. ADCSC是其采集/转换控制位,启动AD必须要用一条指令来配置ENC 和ADCSC。
3. ADCIVIE 转换时间溢出中断。
转换未完成时,继续采样则会溢出。
4. ADC0VIE 溢出中断允许位。
即ADC12MEMx。
MSP430入门详细讲解不错的入手机会
引脚使用举例
控制连接在P5.1口线的发光二极管的亮与熄: 首先、 P51为输出 亮 输出1 熄灭 输出0 ---P5DIR =0x0 2; ---P5OUT = 2 ; ---P5OUT = 0 ;
南京航空航天大学电子中心&TI南航430联合实验室
如何让发光二级管闪烁?
1、亮 2、延时1秒钟 3 3、熄灭 4、延时1秒钟 5、跳转到 步骤1 (演示)
串行密码锁设计
按照顺序:KEY0-KEY1-KEY2 ; KEY1-KEY0-KEY2 ; K0-K0-K0-K1-K2-K0-K2 ; K2-K2-K0-K1-K2 ; 错误状态的清除 很重要!!
南京航空航天大学电子中心&TI南航430联合实验室
如何让单片机发声?
声音是什么? ——声音是震动产生的; 扬声器发声的原理:处在磁场中的有电 流的线圈产生震动,继而发声。 不同的频率产生不同的声音; MSP430的端口可以输出不同的频率; 继而可以推动扬声器产生不同的声音。 下页的程序将发出什么声音呢?
指针类型 18E-38— 39E+38 18E-38— 39E+38 浮点类型
表达式语句(结构) 表达式语句(结构)
条件语句 开关语句 循环语句 返回语句
南京航空航天大学电子中心&TI南航430联合实验室
条件语句
语句表达形式有3种(a、b、c): a if(条件表达式) 语句 b if(条件表达式) 语句1 else 语句2 c if(条件表达式) 语句1 else if(条件表达式) 语句2 else if(条件表达式) 语句3 ……
第二段程序
void s1(void) { for(ff=30;ff<500;ff++) { P6OUT ^= BIT0; // 对输出置反 for(tmp=0;tmp<ff;tmp++); // 延时 } }
MSP430 ADC10讲解
MSP430单片机拥有内置的ADC功能,在一些高级单片机系列上是ADC12,在低级单片机系列上是ADC10,两者的主要区别是分辨率的不同,我们的G2553内置的就是ADC10,所以Cloud就在这里和大家一起学习ADC10。
一、ADC10特性我们先来了解一下这个ADC10的特性,官方给出的:·高达200ksps的转换速率;·固定的10位转换;·具有采样保持功能,并可选采样周期;·可以通过软件代码或TimerA初始化转换;·可选的片内(1.5V或2.5V)或片外参考电压;·支持8个外部输入通道;·内部输入通道支持温度检测,VCC和外部参考(+、—);·可选的转换时钟源;·单通道单次/多次、序列通道单次/多次,共4种转换模式;·ADC内核和参考电压都可单独关闭;·具有一个支持自动存储转换结果的数据转换控制器(DTC);二、ADC10结构OK,我们来引入ADC10的内部结构图来初步认识这个ADC10的内部结构。
为了方便大家学习,Cloud将各部分用不同颜色区分开:1、ADC10内核-SAR和采样保持电路:首先我们看到中间两块橙色的区域,右边五边形的是一个“10-bit SAR”,翻译过来就是一个10位精度的逐次逼近比较型的ADC内核,也就是说,我们的ADC转换就是在这里完成的。
那么它的信号来源是哪里呢?就是左边橙色矩形区域的“Sample and Hold”即采样保持电路,它将外部或者内部的模拟信号进行保持以实现ADC转换过程中的信号稳定。
2、ADC10信号通道和转换模式:我们的采样保持电路可以将左边选择器(红色梯形区域)内的信号进行保持。
由于我们的SAR只有一个,要对里里外外这么多信号都进行AD转换就必须按顺序来,一个一个选择性地输入,这个选择器就是用来选择要输入的外部或者内部模拟信号。
上面绿色矩形框控制着选择器选择哪个信号以及是否自动按序列选择。
MSP430-AD采样用法
msp430 AD初始化流程msp430 AD初始化流程:单片机ADC编程的流程如下:1初始化,void Adc12int(){ADC12CTL0 &= ~ADC12ENC; //使AD模块处于初始状态ADC12CTL0 = ADC12MSC+ADC12SHT0_15+ADC12SHT1_15;//使用外部部3.3V参考电压,使用采样保持器。
}//#define ADC12ENC (0x0002u)#define ADC12MSC (0x0080u)#define ADC12SHT0_15 (15*0x100u)#define ADC12SHT1_15 (15*0x1000u)//一、寄存器ADC12CTL0:SHT1 SHT0 MSC 2.5V REFON ADC120NADC12TOVIE ADC12TVIE ENC ADC12SC15-12 11-8 7 6 5 4 3 21 0ADC120SC :ADC12内部时钟源(启动)ENC 位为转换允许,1允许AD转换,0时为不允许转换,即复位状态;由于ADC12CTL0和ADC12CTL1的一些位和ADCMCTILX的所有位必须在ENC位复位时才能修改。
因而初始过程为:ENC复位——设置转换启动方式——打开参考电压——选择采样保持器时间SHT1 SHT0 采样保持定时器1和0,定义转换结果中转换时序与采样时钟ADC12CLK的关系。
程序设置都为1,MSC 多次采样、转换位。
有效条件:CONSE!=0,MSC=1表示仅首次转换同SHI信号的上升沿触发采定时器,采样转换在前一转换完成立即进行。
程序中设置为1MSC的作用是:在顺序转换或重复转换中,若MSC置1则只需最初有一个触发信号,随后都会在前一次转换完成后,自动进入下一次转换。
否则的话,每次转换完成都还需另个的触发信号。
-----------DATASHEET.2.5V 内部参考电压选择位:0——1.5V,1——2.5VREFON参考电压控制位 0内部参考电压关闭 1则为打开ADC12ON 内核控制位 0关闭 1打开ADC12TOVIE 转换时间溢出中断允许 0没发生转换时间溢出 1则表示发生ADC12TVIE 溢出中断允许位 0没有发生溢出 1表示发生溢出以上5个位都设置0。
第9章MSP430模数转换ADC
模拟
传
量
感
1
器
1
模
传
拟
感
量
器
n
n
放
滤
大
波
器
1
器
1
多 路
采 样 保
开
持
放
滤
关
大
波
器ห้องสมุดไป่ตู้
器
n
n
计
A/D
算
机
音频、视频信号
数字通信
3
第二节 模/数转换器
一、A/D 转换器的基本原理 二、MSP430 ADC12介绍
4
一、A/D 转换器的基本原理
数字输出量
A/D转换器
模拟输入量
数字输出量 011 010 001
单通道单次转换方式
通道序列单轮转换方式 单通道重复转换方式
通道序列重复转换方式
45
常用转换方式——通道序列单轮转换方式
每一轮通道序列中第一通道的采样和转换都由定时器 (TA1/TB0/TB1)启动,然后由采样定时器自动启动后续 通道的快速采样和转换,直到EOS=1的通道转换完毕,完 成第一轮。
采样间隔
.10~11
ADC12CTL0
ADC12CTL1
29
采样方式选择
SHP=0 , SAMPCON=SHI ,非采样定时器采样方式
(Extended Sample Mode) SHP=1 , SAMPCON=采样定时器输出,采样定时器采样方式
(Pulse Sample Mode)
30
非采样定时器采样方式(Extended Sample Mode)
0
0
0
1
1
MSP430单片机,8讲
第8讲 认识MSP430 ADC10/12
什么是AD转换
• • • • • 1. 数模转换的意义 2. 数模转换的量化方式 3. 采样时间与信号的匹配 4. 采样与保持 5. 430的采样过程
MSP430ADC模块的结构与资源
1、 10/12位转换精度 2、多路时钟源,自带采样时钟 3、8路外部通道和一路内置温度传 感器,四种采样工作模式 4、约37个寄存器,包括16个12位 数据缓存 5、自动支持内核低功耗 6、多达18个中断源 7、参考电压选择多样化
4、重要寄存器大约6种:转换控制寄存器 ADC10/12CTL0,ADC10/12CTL1,转换存储 寄存器ADC10/12MEM0~15,转换存储器控 制寄存器ADC10/12MCTL~15,中断标志寄 存器: ADC10/12IFG——16位中断标志 ADC10/12IE——16位中断使能, ADC10/12IV——中断向量。 5、ADC10/12的转换内核多数情况可以用ENC 关断,即使进行了设置,在不工作时,也会 自动进入低功耗模式。
6、18个中断标志,除了ADC12IFG0~15外, 还有ADC12TOV,ADC1OV两个中断标志。其 中ADC12OV为数据溢出标志,表示原有转换 数据未读取又有新数据要写入;ADC12TOV 为时间溢出标志,表示当前转换尚未完成, 又发生了采样请求。这两个标志有独立的中 断使能位,中断响应后能够自动复位。 ADC12IFG0~15表示一次采样完成,此标志 即使在中断响应后仍然需要手动复位。 7、参考电压可在ADC10/CTL0中配置,需 要注意的是,ADC模块的REFON置位以后, 需要大约17ms时间来建立内部参考电压。
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, 增计数模式 LPM0; // 低功耗(延时) TACCTL0 &= ~CCIE; // 关比较器中断 __disable_interrupt(); //关总中断 while(1) { ADC10CTL0 |= ENC + ADC10SC; //ADC10使能,采样为手动触发 __bis_SR_register(LPM0_bits + GIE); //进低功耗0,并开总中断 // 华氏= ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 468 temp = ADC10MEM; //保存数据到ADC10MEM IntDegF = ((temp - 630) * 761) / 1024; //根据数值计算电压值 temp = ADC10MEM; IntDegC = ((temp - 673) * 423) / 1024; __no_operation(); // 设置断点 }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
ADC12的目录
2
A D C简要综述( 1/1 )
• 在MSP430单片机家族中, 很多系列 的单片机中都有12通道12位的ADC (简称A D C 1 2 模块)。如M S P 4 3 0 F 1 3 X 、M S P 4 3 0 F 1 4 X 、 M S P 4 3 0 F 1 5 X 、M S P 4 3 0 F 1 6 X 、M S P 4 3 0 F 4 3 X 、 MSP430F44X 等系列。较其它带A/D 转换的单片机,MSP 430 的ADC 精 度高,设计灵活巧妙,给数据采集系 统的设计带来了全新的思路。
Байду номын сангаас
ADC12 的结构
6
ADC12 的功能模块( 1/ 11)
1. 参考电压发生器:
AD都需要一个基准信号,通常为电压基准。 ADC12内置参考电源,而且参考电压有6种可编程选 择,分别为VR+与VR-的组合。其中 VR+(有3种):A VCC (模拟电源正端) V REF+ (A/D转换器内部参考电源的输出正端) V eREF+ (外部参考电源的正输入端)
15
ADC12 的功能模块( 10/11 )
16
ADC12 的功能模块( 11/11 ) ADC12主要特点
1. 12位转换精度,1位非线性微分误差,1位非线性积分误差 2. 有多种时钟源提供给ADC12模块,而且模块本身内置时钟发 生器 3. 内置温度传感器 4. Timer_A/Timer_B硬件触发器 5. 配置有8路外部通道与4路内部通道 6. 内置参考电源,并且参考电压有6种组合 7. 模数转换有4种模式 8. 16字转换缓存 9. ADC12可关断内核支持超低功耗应用 10.采样速度快,最高可达200ksps 11.自动扫描 12. DMA使能
具体如何控制,将在寄存器部分说明! 只有在这些时序控制电路的指挥下,ADC12各部件才 能协调工作!
13
ADC12 的功能模块( 8/ 11)
ADC12DIV 选择的分频系数
ADC12SSEL选 择的内核时钟源
SHT控制的 采样周期
SHS控制的 采样触发来源选 择 SAMPCON 采样及转换信号 ADC12CLK 转换时钟 14
34
单通道单次转换模式状态( 3/6 )
#include”msp430x44x.h” Void main (void) {
WDTCTL=WDTPW+WDTHOLD;
P6SEL |=0x01; //使能AD通道A0
ADC12CTL0=ADC12ON+SHT0_2; ADC12CTL1=SHP; ADC12CTL0 |= ENC; While(1) { ADC12CTL0 |=ADC12SC; while((ADC12IFG&BIT0)==0) _NOP( ); }
29
ADC12的相关寄存器( 13/ 15)
② ADC12IE 中断使能寄存器
③ ADC12IV
中断向量寄存器
30
ADC12的相关寄存器( 14/ 15)
31
ADC12的相关寄存器( 15/15 )
32
ADC12转换模式 (1 / 6)
ADC12提供4种转换模式:
• • • • 单通道单次转换 序列通道单次转换 单通道多次转换 序列通道多次转换
36
单通道多次转换模式的状态 ( 5/6 )
单通道多次转换
模式要进行如下设置: • X=CSStartAdd, 指示 转换开始通道; • ADC12MEMx 存放转 换结果; • ADC12MCTLx寄存器 中定义了通道和参考 电压。
该模式的停止有如下几种 方法: • 使CONSEQ=0,改变 为单通道单次模式; • 使ENC=0,直接使当 前转换完成后停止; • 使用单通道单次模式 替换当前模式,同时 使ENC=0 。
17
ADC12的相关寄存器(1 / 15)
相关寄存器总述
寄存器类型 转换控制 寄存器 中断 控制 寄存器 存 储 及其 控制寄存器 寄存器缩写 ADC12CTL0 ADC12CTL1 ADC12IFG ADC12IE ADC12IV ADC12MCTL0 ~ ADC12MCTL15 ADC12MEM0 ~ ADC12MEM15 寄存器的含义 转换控制寄存器0 转换控制寄存器1 中断标志寄存器 中断使能寄存器 中断向量寄存器 存储控制寄存器0~15 存储寄存器0~15
4
ADC模块的常用性能指标(2 / 2)
③ 转换精度: 其反映的是ADC模块在量化上与理想的 ADC模块进行AD转换的差值。 ④ 转换时间: 指ADC模块完成一次AD转换所需的时 间 ,转换时间越短越能适应输入信号的 变化。 ⑤ 此外还应考虑所使用的电压范围、工作 温度、接口特性以及输出形式等性能。 5
ADC12 的功能模块( 9/ 11)
5. 转存结果缓存 ADC12共有12个转换通道,设置了16个转 换存储器,用于暂存转换结果,合理设置 后,ADC12硬件会自动将转换结果存放到 相应的ADC12MEM寄存器中。每个转换器 ADC12MEMx都有自己对应的控制寄存器 ADC12CTLx。控制寄存器控制各个转换寄 存器必须选择基本的转换条件。
24
ADC12的相关寄存器( 8/ 15)
② ADC12CTL1 转换控制寄存器1
25
ADC12的相关寄存器( 9/ 15)
26
ADC12的相关寄存器( 10/ 15)
27
ADC12的相关寄存器( 11/ 15)
28
ADC12的相关寄存器( 12/ 15)
2.中断控制寄存器
ADC12IFG 、ADC12IE 、ADC12IV ① ADC12IFG 中断标志寄存器
40
ADC12应用举例 (重复单通道转换) ( 2/ 3)
}
41
}
35
序列通道单次转换状态 ( 4/ 6)
序列通道单次转换模 式要进行如下设置: • X=CSStartAdd, 指示转换开始通道; • EOS(ADC12MCTLx. 7)=1标志序列中最后 通道y,非最后通道的 EOS位都是0,表示序 列没有结束; • ADC12MEMx,…, ADC12MEMy存放 转换结果; • ADC12IFG.x,…, ADC12IFG.y为对 应的中断标志; • ADC12MCTLx寄存器 中定义了通道和 参考电压。
3
ADC模块的常用性能指标(1 /2 )
① 分辨率: 表示输出数字量变化一个相邻数码所需输 入模拟电压的变化量,它定义为转换器的 满刻度电压与2n的比值,其中n为ADC的 位数。如:一个12位的ADC模块的分辨率 为满电压刻度的1/4096 。 ② 量化误差: 是由于有限数字对模拟数值进行离散取值 (量化)而引起的误差。其理论值为一个 单位分辨率,即±1/2LSB 。
无论用户使用何种模式,都要处理以下问题:
1. 2. 3. 4. 设置具体模式; 输入模拟信号; 选择启动信号; 关注转换结束信号。
注: 不同模式,所需设置不同!
33
单通道单次转换模式状态( 2/6 )
单通道单次转换 模式要进行如下设 置: • X=CSStartAdd, 指向转换开始地址; • ADC12MEMx存放 转换结果; • ADC12IFG.x为对 应的中断标志; • ADC12MCTLx寄 存器中定义了通道 和参考电压。
11
ADC12 的功能模块( 6/ 11)
12
ADC12 的功能模块( 7/ 11)
4. 采样及转换所需的时序控制
采样和转换所需要的各种时钟信号: ADC12CLK转换时钟、 SAMPCON采样及转换信 号、SHT控制的采样周期 、 SHS控制的采样触发来源选 择 、ADC12SSEL选择的内核时钟源 及 ADC12DIV选择 的分频系数……
(AVCC-AVSS)/ 2
片内温度传感器的输出 4个作为待转换模拟输入信号
9
ADC12 的功能模块( 4/ 11)
外部8路
10
ADC12 的功能模块( 5/ 11)
3. 具有采样和保持功能的的12位转换器内核 : ADC12是一个12位的模数转换器,并能够将数据保存 在转换存储器中。 该内核两个可编程的参考电压(VR+和VR-)定义转换的 最大值和最小值。当输入模拟电压等于或高于VR+时,ADC 12输出满量程值 0FFF H,当输入电压等于或小于VR-时, ADC12输出0 。 输入模拟电压的最终结果满足公式:
V R-(有2种):A VSS
(模拟电源负端) 部参考电源负端)
V REF- 或 V eREF- (A/D转换器内部或者外
7
ADC12 的功能模块( 2/ 11)
参考电压发生器 VR+(有3种): A VCC、V REF+ 、V eREF+ V R-(有2种): A VSS 、 V REF- 或 V eREF-
37
序列通道多次转换状态( 6/ 6)
序列通道多次转换
模式要进行如下设置: • X=CSStartAdd, 指示 转换开始通道; • EOS(ADC12MCTLx. 7)=1标志序列中最后 通道y ; • ADC12MCTLx寄存器 中定义了通道和参考 电压。 改变转换模式不必停止当 前转换,一旦改变模 式,将在当前序列完 成后立即生效
18
ADC12的相关寄存器(2 / 15)
1. 转换控制寄存器
① ADC12CTL0 转换控制寄存器0
19
ADC12的相关寄存器( 3/ 15)
20
ADC12的相关寄存器(4 / 15)
21
ADC12的相关寄存器(5 / 15)
22
ADC12的相关寄存器(6 / 15)
23