ADC10学习Word文件下载.docx
- 文档编号:19132457
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:24
- 大小:1.06MB
ADC10学习Word文件下载.docx
《ADC10学习Word文件下载.docx》由会员分享,可在线阅读,更多相关《ADC10学习Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
其中,负端可以由SREF2来决定由AVSS(可认为GND)或者VREF-/VeREF-来输入得到。
而正端可以由SREF0、SREF1来决定由内部或者外部参考电平输入得到。
内部支持1.5V或者2.5V,外部由外部引脚输入得到。
ADC10同时支持将内部参考电平输出到外部,而且为了保持其低功耗的优势,还可以由REFBURST来降低平均电流。
当输入信号等于或小于VR-时,AD结果输出为0;
当输入信号等于或大于VR+时,AD结果为0x03FF(1023);
输入信号在VR-和VR+之间,AD结果为以下公式:
NADC=1023×
(Vin-VR-)÷
(VR+—VR-)
5、ADC转换值和DTC电路:
我们已经从输入、时钟、触发、参考四个部分了解了ADC10的转换电路,那么我们转换得到的值要如何输出呢?
这里我们沿着SAR下面空心粗箭头看到一个棕红色框“ADC10MEM”,这个寄存器就是用来存放得到的AD值的。
我们只要读取ADC10MEM的值就可以得到AD值了。
为了实现低功耗设计,MSP430支持DTC功能,就是数据传输控制功能,它可以支持将ADC10MEM中的数据自动存放至RAM、Flash或者其他外设中而不用CPU干预。
6、温度传感器:
MSP430内置了一个温度传感器(浅蓝色方框),可以通过设置输入通道为0x0A来选择输入温度模拟量。
这样的设计让我们不用外部温度芯片就可以实现简单的温度检测,其AD值和温度的关系式为(A10就是温度传感器通道的AD值):
VTEMP=0.00355×
TEMMPC+0.986(单位:
V)
从而推导得到:
摄氏度:
oC=((A10/1024)*1500mV)-986mV)*1/3.55mV=A10*423/1024-278
华氏度:
oF=((A10/1024)*1500mV)-923mV)*1/1.97mV=A10*761/1024-468
三、ADC10相关寄存器
首先让我们看一下有哪些寄存器和ADC10相关的:
1.ADC10AE:
ADC10输入使能寄存器
2.ADC10CTL0:
ADC10控制寄存器0
3.ADC10CTL1:
ADC10控制寄存器1
4.ADC10MEM:
ADC10存储器
5.ADC10DTC0:
ADC10数据传输控制寄存器0
6.ADC10DTC1:
ADC10数据传输控制寄存器1
7.ADC10SA:
ADC10数据传输控制启动地址寄存器
下面让我们详细学习每个寄存器:
1、ADC10AE:
ADC10AEADC10输入使能寄存器
7
6
5
4
3
2
1
ADC10AE7
ADC10AE6
ADC10AE5
ADC10AE4
ADC10AE3
ADC10AE2
ADC10AE1
ADC10AE0
7~0-ADC10AEx:
ADC10模拟输入控制使能位,用来控制外部模拟输入是否使能
0:
禁止1:
使能
2、ADC10CTL0:
ADC10CTL0ADC10控制寄存器0
15
14
13
12
11
10
9
8
SREFx
ADC10SHTx
ADC10SR
REFOUT
REFBURST
MSC
REF2_5V
REFON
ADC10ON
ADC10IE
ADC10IFG
ENC
ADC10SC
15~13-SREF:
参考电平选择,详细见下表
SREF
VR+
VR-
二进制
十进制
000
VCC
VSS
001
VREF+
010
VeREF+
011
100
VREF-/VeREF-
101
110
111
12~11-ADC10SHT:
ADC10采样保持时间
00:
4xADC10CLKs
01:
8xADC10CLKs
10:
16xADC10CLKs
11:
64xADC10CLKs
10-ADC10SR:
ADC10采样速率,该位用于选择最大采样速率下的参考电平缓冲驱动能力。
ADC10SR置1可以减少参考电平缓冲器的电流消耗
参考电平缓冲器支持最大速率到200ksps
1:
参考电平缓冲器支持最大速率到50ksps
9-REFOUT:
参考电平输出允许位,用来控制是否输出参考电平
参考输出关闭1:
参考输出打开
8-REFBURST:
参考电压输出控制位(REFOUT=1时有效)
参考电压持续对外输出
只有在采样转换期间参考电压持续对外输出
7-MSC:
多次采样/转换控制位(只在序列或多次转换模式下有效)
每次采样与转换时,由SHI的上升沿触发
由SHI的第一个上升沿触发采样定时器,后面的采样与转换由前一次转换完成后立即执行。
6-REF2_5V:
参考电压发生器的电压值选择位(REFON=1时有效)
1.5V1:
2.5V
5-REFON:
参考电压发生器控制位,控制是否打开内部参考电压
关闭内部参考电压发生器1:
打开内部参考电压发生器
4-ADC10ON:
ADC10控制位,控制是否使用ADC10模块
关闭ADC10模块1:
打开ADC10模块
3-ADC10IE:
ADC10中断允许控制位,控制是否允许ADC10中断
中断禁止1:
中断允许
2-ADC10IFG:
ADC10中断标志位,如果ADC10MEM已经装满转换结果,该位置1.当中断申请呗接受后,它自动复位,可以由软件复位。
在使用DTC时,当完成一个数据块的传递时,该位置1
无中断产生1:
有中断产生
1-ENC:
ADC10转换使能位,用来控制是否进行转换
ADC10禁止1:
ADC10使能
0-ADC10SC:
软件可控的采样/转换控制位。
ADC10SC和ENC必须用一条指令同时置1。
ADC10SC位可自动复位
无采样/转换开始1:
开始采样/转换
3、ADC10CTL1:
ADC10CTL1ADC10控制寄存器1
INCHx
SHSx
ADC10DF
ISSH
ADC10DIVx
ADC10SSELx
CONSEQx
ADC10BUSY
15~12-INCH:
输入通道选择,用来选择进行单次转换的通道或序列转换的最高通道,详细见下面的表格
INCH
通道
0000
A0
1000
0001
A1
1001
0010
A2
1010
温度传感器
0011
A3
1011
(VCC-VSS)/2
0100
A4
1100
0101
A5
1101
0110
A6
1110
0111
A7
1111
11~10-SHS:
采样/保持输入信号源选择位
ADC10SC位
TimerA.OUT1
TimerA.OUT0
TimerA.OUT2
9-ADC10DF:
ADC10数据格式选择位
二进制格式(右对齐)1:
二的补码格式(左对齐)
8-ISSH:
采样/保持输入信号反向控制位
采样输入信号不反向1:
采样输入信号反向
7~5-ADC10DIV:
ADC10时钟分频选择位,分频系数=ADC10DIV+1
4~3-ADC10SSEL:
ADC10时钟源选择位
ADC10OSC01:
ACLK10:
MCLK11:
SMCLK
2~1-CONSEQ:
转换模式选择位
单通道单次转换01:
序列通道单次转换
单通道多次转换11:
序列通道多次转换
0-ADC10BUSY:
ADC10忙标志位,该位指示采样或转换正在进行
表明没有正在进行的转换1:
表明一个序列,采样或者转换正在进行
4、ADC10MEM:
ADC10转换结果寄存器
这是一个用来存放AD转换结果的16位的寄存器,它有两种存放方式(还记得前面ADC10DF这个东东么?
),分别是:
①当ADC10DF=0时,ADC10MEM为右对齐,存放结构如下:
ADC10MEM
转换结果
②当ADC10DF=1时,ADC10MEM为左对齐,存放结构如下:
5、ADC10DTC0:
ADC10数据传递控制寄存器0
ADC10DTC0ADC10数据传递控制寄存器0
保留——未使用
ADC10TB
ADC10CT
ADC10B1
ADC10FETCH
3-ADC10TB:
ADC10一块或两块数据模式选择
一块数据传递模式1:
两块数据传递模式
2-ADC10CT:
ADC10连续传递模式选择位
在一块或两块传递模式下,一块或两块都传递后,数据传递结束
继续数据传递,只有在ADC10CT清0或由数据写入到ADC10SA时,DTC停止
1-ADC10B1:
ADC10转存块满标志。
该位表明两块数据模式下数据块是否已经装入转换结果。
ADC10B1只有当ADC10IFG位在DTC工作期间第一次被设置后才有效(ADCTB=1时有效)
0-ADC10FETCH:
该位通常处于复位(ADC10FETCH=0)状态
6、ADC10DTC1:
ADC10数据传递控制寄存器1
ADC10DTC1ADC10数据传递控制寄存器1
DTCTransfers
7~0-DTCTransfers:
这些位定义了每个数据块中传递的数量
DTC禁止0x00~0xFF:
每个数据块中传递的数量
7、ADC10SA:
ADC10数据传递起始地址寄存器
ADC10SAADC10数据传递起始地址寄存器
ADC10SAx
15~1-ADC10SA:
该寄存器的内容为DTC的起始地址,需要先对ADC10SA写入来初始化DTC传递。
第0位未使用,只读,读结果为0
四、ADC10的采样和转换过程
我们要学习ADC10,就必须要了解它是如何对一个模拟信号进行采样和转换的。
我们结合下面这个采样/转换的时序图来详细介绍这个过程:
首先是我们的四个采样触发源(ADC10SC和3个TimerAOUT)产生了触发信号,也就是SHI信号产生了一个脉冲,此时采样开始,SAMPCON信号也同时置高。
然后采样时钟进行一段时间的计数,在计数时,SAMPCON保持高电平不变,在tsync+tsample时间后,采样完成,此时停止采样并进入到转换阶段。
经过13个ADC10CLK时钟后,转换阶段也完成了。
我们再回过头来看看SAMPCON信号在高电平状态下到底保持了多少时间,又是谁控制的呢?
前面我们知道SHT可以选择采样周期,这个采样周期就是tsample,它可以是4、8、16或64个ADC10CLK个周期。
选择的采样周期和ADC10CLK需要同步,这段时间就是上面的tsync,这段时间具体多少不用关心。
为了采样的有效,我们在对模拟信号进行采样时,必须保证一定的采样时间也就是tsample。
所以我们得学习一下最小采样时间的计算。
前面我们还讲了ADC10SR可以控制采样速率,这里我们就要用到它:
①ADC10SR=0时,此时为高速采样,最小采样时间为:
tsample>
(RS+RI)×
ln(2048)×
CI+800ns
②ADC10SR=0时,此时为低速采样,可以减小电流满足低功耗需求,最小采样时间为:
CI+2500ns
上面的式子多了很多R、C啥的,对了,这个最小采样时间是和我们的采样电路是有关系的。
在SAMPCON=0时,所有的Ax输入为高阻态。
当SAMPCON=1时,在采样时间tsample期间,别选择的Ax输入相当于一个RC低通滤波器如下图:
VI=Ax引脚输入电压VS=外部驱动源电压RS=外部源内阻RI=内部多路选择导通输入电阻CI=输入电容VC=电容充电电压
由于内部电路决定RI最大为2KΩ,CI最大是20pF,所以上面的式子就可以简化为:
(RS+2K)×
7.625×
20pF+800ns(ADC10SR=0)
20pF+2500ns(ADC10SR=1)
四、ADC10的四种转换模式
前面已经说过,ADC10有四种模式,是由CONSEQ来控制的
1、单通道单次模式
该模式对由INCH选择的单通道进行一次采样和转换。
ADC结果写入到ADC10MEM。
当ADC10SC触发一次转换时,连续的转换也可以通过将ADC10SC置位来触发。
当使用其他任何触发源来启动转换时,ENC必须在每次转换间隔离,在ENC复位并再次置位前的采样信号将被忽略。
转换流程见下图:
我们可以看到,CONSEQx=00表示当前模式为单通道单次模式,在ADC10ON置位后,ADC10开启并进入到等待状态。
当ENC产生上升沿时ADC10等待触发并在SAMPCON产生上升沿后进入到采样环节。
采样经过4、8、16或64个ADC10CLK周期后进入到转换环节,同样经过12个ADC10CLK周期后完成转换。
经过1个ADC10CLK周期,AD结果存入ADC10MEM并且ADC10IFG中断标志位置位,然后ADC10等待下一次的转换使能。
如果SHS=0也就是说触发源是ADC10SC,那么当ENC信号和ADC10SC信号都为高电平时同样进入到采样环节。
另外,在AD转换的任意阶段,只要ENC清0,则立即回到等待状态。
2、序列通道单次转换模式:
该模式对一个序列的通道进行一次采样和转换。
序列通道将自动选择INCHx到A0作为当前通道。
每个ADC结果都存放到ADC10MEM。
最后一个通道也就是A0转换完毕后序列转换就结束。
当ADC10SC启动一次,连续的转换也可通过设置ADC10SC位来启动。
当任何其他触发源用来启动转换时,ENC必需在每次序列转换间隔离,在ENC复位并再次置位前的采样信号将被忽略。
大家可以看到,CONSEQ=01表示为序列通道单次转换模式。
这个流程图和第一张差别不大,我们结合第一张流程图的讲解来解释这个流程图。
首先我们看到中间主干的流程通路和第一张是一样的,这里就不再赘述了。
我们看到左边和右边分别多了一条返回线。
左边那条是从转换完成直接返回到采样输入通道的,右边那条是从转换完成返回到触发等待状态的,他们的区别是左边MSC=1也就是自动连续触发,右边MSC=0不自动连续触发所以每次需要等待SAMPCON信号为高才触发下一次采样。
然后x也就是当前要转换的通道自减1,直到x=0时转换完A0这个最后通道然后等待ADC10的使能。
3、单通道多次转换模式:
该模式对由INCHx选定的通道进行连续采样和转换。
每次ADC转换结果都存放到ADC10MEM中。
CONSEQ=10表示为单通道多次转换模式。
中间部分还是一样的,只是两边的返回线现在和MSC有关。
左边这条线MSC=1那么就会在上一次转换完成后自动进入下一次的采样环节。
右边这条线MSC=0那么当上一次转换完成后会自动进入触发等待状态,只有SAMPCON信号变高才进行下一次的采样。
最右边的一条线说明如果ENC清0,那么ADC10将重新等待使能。
4、序列通道多次转换模式:
该模式对序列通道进行重复采样和转换。
序列通道为从INCHx选择的通道到A0。
每次ADC结果都存放到ADC10MEM。
通道A0转换完成后序列转换结束,下一个启动信号重新启动序列转换。
CONSEQ=11表示序列通道多次转换模式。
这个流程图显然是“单通道多次”和“序列通道单次”的结合体,所以就不再赘述,相信大家肯定可以自行理解这个转换过程。
如果理解不了,那么说明前面三个转换模式没有深入理解,大家可以回过头复习一下前面的三个转换模式。
五、ADC10的数据传递控制器——DTC
前面概述的时候就讲到MSP430的ADC10包含一个数据传递控制器(DTC),它可以自动地将转换结果从ADC10MEM传递到其他片内存储单元。
设置ADC10DTC1寄存器为一个非0值就可以使能DTC。
另外,MSP430x20x2系列芯片中是没有DTC的。
当DTC使能时,每次ADC10完成转换和将转换结果装载到ADC10MEM后,数据传递启动。
无需软件干预来惯例ADC10,直到预先定义的转换数据量被传递。
每次DTC传递需要一个MCLK周期。
为了避免DTC传递过程中和其他总线竞争(竞争是数电用语),CPU暂停。
如果CPU活动,需要一个MCLK周期时间来传递。
当ADC10忙的时候,DTC不能启动。
也就是说当设置DTC时,程序必须保证当前没有正在进行的转换或序列转换。
1、一块数据传递模式:
ADC10TB=0时选择一块数据传递模式。
ADC10DTC1寄存器中的n值定义了一个数据块传递的总长度。
可以利用ADC10SA寄存器在MSP430任何地址范围内定义数据块的起始地址。
数据块结束地址为ADC10SA+2n-2。
其存储结构式见下图:
内部地址指针最初为ADC10SA,内部传递计数器=n。
内部指针和计数器在程序中是已知的。
DTC传递ADC10MEM中的数据到由ADC10SA这个指针所指的字地址中(注意是字地址,2个字节)。
每次传递后,内部地址指针自增2,内部传递计数器自减1。
随着ADC10MEM的每次装载,数据继续传递,知道内部传递计数器=0。
其他的DTC数据传递不再继续进行,直到对ADC10SA再写。
在一块数据传递模式下使用DTC时,一个完整的数据块传递完成后,ADC10IFG标志自动置1。
下图描述了这个过程:
2、两块数据传递模式:
ADC10TB=1时选择两块数据传递模式。
ADC10DTC1中的n值定义了一个数据块传递的长度。
此时,ADC10SA在MSP430任何地址范围内定义的是第一个数据块的地址,第一个数据块的结束地址为ADC10SA+2n-2。
另外还有第二个数据块的地址范围为ADC10SA+2n到ADC10SA+4n-2。
内部地址指针初始=ADC10SA,内部传递计数器=n。
DTC传递ADC10MEM中的数据到由ADC10SA地址指针所指的字地址中。
随着ADC10MEM的每次装载,数据继续传递,知道内部传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC10 学习