DSP的Adc.docx
《DSP的Adc.docx》由会员分享,可在线阅读,更多相关《DSP的Adc.docx(11页珍藏版)》请在冰豆网上搜索。
![DSP的Adc.docx](https://file1.bdocx.com/fileroot1/2023-1/5/76248309-6f74-4595-ae1d-8180c75cc8a7/76248309-6f74-4595-ae1d-8180c75cc8a71.gif)
DSP的Adc
DSP-的Adc
DSP的A/D转换器
本章主要内容:
ØF281x的A/D转换器的特点(FeaturesofF281xADC)
Ø自动排序器原理(AutoconversionSequencerPrinciple)
Ø不间断的自动排序模式(UninterruptAutosequencedMode)
ØADC时钟定标(ADCClockPrescaler)
ØADC寄存器(ADCRegisters)
ØADC的C语言编程实例(ADCCProgramingExamples)
F281x的A/D转换器的特点
TMS320F281xDSP内部有一个12位模/数转换器(AnalogtoDigitalConverter,ADC),
可有16通道模拟输入信号,转换时间可以在80ns以内。
16个结果寄存器ADCRESULT0~
ADCRESULT15存储转换结果。
ADC模块可以设置为两个独立的8通道转换器,将一系列转换自动排序,每个模块
可以从8个输入通道中任意选择输入。
ADC模块也可以工作在级联模式(Cascaded
SequencerMode),自动排序器(Sequencer)就变成一个单16通道的排序器。
该A/D转换器的功能包括:
•12位ADC模块,内含采样/保持(Sample/Hold,S/H)电路。
•同时采样或顺序采样模式。
•模拟电压输入范围0~3V。
•25MHz的ADC时钟频率,转换时间短。
•16通道,多路选通输入。
•可在一次采样中同时实现16路自动转换的自动排序。
每个转换可以从1~16输入
通道中任意选择。
•排序器可以作为两个独立的8通道排序器或一个16通道排序器即级联模式。
•16个结果寄存器存储转换结果,每个寄存器可独立寻址。
输入模拟电压和采样结
果的关系为:
数字结果=4095×(输入模拟电压-ADCLO)/3。
ADCLO是A/D转换
低电压参考值。
•多个触发源可以启动A/D转换。
包括软件(Software,S/W)启动、事件管理器
EVA/EVB(多个触发源)启动、外部引脚触发启动。
图5-1ADC模块原理框图
5.2自动排序器原理
自动排序器可以对模拟通道的转换顺序进行排序。
ADC排序器由两个8状态(State)
排序器SEQ1和SEQ2组成,也可以级联成一个16状态排序器。
这里的状态指排序器中
自动转换的数量,而不是指引脚。
即排序器有两种工作模式:
单排序器(即级联模式)
和双排序器模式。
单排序器可以有16个转换通道,如图5-2所示。
双排序器模式(DualSequencerMode)
为两个独立的8状态或8通道转换,如图5-3所示。
两种排序器都有能力对一系列的转换进行自动排序。
就是说每次ADC收到开始转换
SOC(StartofConversion)的请求,就可自动启动多个转换。
每次转换可选择16个输入通
道中的任意一个。
转换完毕后,通道的A/D转换结果就保存在相应的结果寄存器
ADCRESULTn(n=0~15)中(第一个结果放在ADCRESULT0,第二个结果放在
ADCRESULT1,依此类推)。
在顺序采样的双排序器模式中,从任意一个排序器来的一个悬挂的SOC请求在现有
155
的排序器任务完成后就开始得到处理。
例如假定ADC正在忙于处理SEQ2,此时SEQ1
有了一个开始转换SOC请求,A/D转换器将在完成SEQ2的任务后立即开始处理SEQ1。
如果SEQ1、SEQ2的SOC请求同时来到,SEQ1被优先处理。
例如当ADC正在处理SEQ1
时,SEQ1和SEQ2都有SOC请求,则ADC在完成SEQ1的任务后,又立即响应下一个
SEQ1任务,SEQ2的SOC请求继续保持悬挂。
图5-2单排序器模式的ADC框图
ADC可以工作在顺序采样和同时采样模式下。
对于每个采样(或同时采样中的每对采
样),当前的通道选择排序寄存器(ADCCHSELSEQ1~4)中CONVxx位定义了被采样和转
换的引脚(或每对引脚)。
在顺序采样模式下,CONVxx中的4个位定义了输入引脚。
其中
最高位定义的是选择采样保持器A(S/H-A)还是B(S/H-B)。
例如,若CONVxx中的值为
0101b,则选择ADCINA5引脚进行转换;若值为1011b,则选择ADCINB3引脚。
在同
时采样模式下,CONVxx的最高位不用,低3位决定两个采样保持器采样的引脚。
例如,
如果CONVxx内放入值0110b,则ADCINA6被S/H-A采样,ADCINB6被S/H-B采样,
S/H-A的电压先被转换,随后是S/H-B。
S/H-A的转换结果放在ADCRESULTn寄存器中,
S/H-B的转换结果放在下一个ADCRESULTn寄存器中,结果寄存器的指针随后加2。
无论何种工作方式,注意DSP中只有一个A/D转换模块。
为了方便,以后描述排序器时规定:
SEQ1指的是CONV00~CONV07;
SEQ2指的是CONV08~CONV15;
级联SEQ指CONV00~CONV15。
图5-3双排序器模式的ADC框图
双8状态和单16状态排序器的操作基本相同,不同之处见表5-1。
表5-1ADC单操作模式和级联操作模式比较
每个被排序的转换都对应一个模拟输入通道,可以在ADC输入通道选择排序寄存
器ADCCHSELSEQ1~4中的CONVnn位中定义。
CONVnn由4个二进制位组成,可在指
定1~16通道中的任一个通道进行设置。
因为在级联排序器下最大可有16个转换,因此
一共要有16个这样的4位通道选择(CONV00~CONV15),这些位分布于
ADCCHSELSEQ1~4中。
CONVnn中的值可在0~15之间变化,允许ADC输入通道在任
何顺序下被采样,同样的通道可以多次采样。
5.3不间断的自动排序模式
不间断的自动排序模式(UninterruptedAutosequencedMode)即连续转换模式,在该
模式下SEQ1/SEQ2能在一次排序过程中,对多达8个转换通道进行自动排序。
下面的描述应用于双8状态排序器。
该模式下,SEQ1/SEQ2可一次对8个转换进行
排序。
SEQ1的转换结果保存在ADCRESULT0~ADCRESULT7中,SEQ2的转换结果保
存在ADCRESULT8~ADCRESULT15中。
在ADCMAXCONV寄存器中的MAXCONVn
位置存放了每次转换的数量。
在每次转换的开始,该值就被自动装载到自动排序状态寄
存器ADCASEQSR中(SEQCNTRn位)。
MAXCONVn共有3位(或4位,与工作模式有
关),变化范围从0~7(或0~15)。
ADCASEQSR在载入初始值后,每转换完一路就减1,
减到0意味着转换全部完成。
例5-1,采用SEQ1的双排序模式下的转换。
设在SEQ1中有7路(状态)转换,即ADCINA2和ADCINA3各两次,ADCINA6、
ADCINA7和ADCINB4各1次。
则MAXCONV1=6,ADCCHSELSEQn各寄存器中按
下表放入各数值。
在SOC触发信号到来后,ADCASEQSR中的SEQCNTRn位自动载入6,转换开始
后,每转换完一路就减1。
一旦SEQCNTRn=0,就会发生如下情况:
①如果ADCTRL1寄存器中的CONTRUN位为1,那么转换又自动开始,即SEQ
CNTRn重新载入6,且SEQ1指向CONV00。
这种情况下,必须在下一个转换序列开始
前读出结果寄存器中的数据,以免数据被下次转换结果覆盖。
②如果CONTRUN位为0,那么排序器停止在最后的状态CONV06,SEQCNTRn
保持0不变。
为了在下次SOC时可重复上述采样过程,必须使用ADCTRL2寄存器中的
RSTSEQn位来复位排序器。
如果每次SEQCNTRn减到0时,中断标志位被设置(在INTENASEQn=1,INTMOD
SEQ1=0的条件下),可以在中断服务子程序ISR中对排序器手动复位(用RSTSEQn位)。
这在排序器的启动/停止操作下很有用。
例5-1也可用于SEQ2和级联模式下的16状态排序器SEQ。
1.排序器的启动/停止模式
除了不间断的自动排序模式外,排序器可以工作在启动/停止模式,并可由时间上分
离的多个SOC触发源同步。
该模式和连续转换类似,但是在完成了第一次转换后,排序
器可被重新触发而不用在ISR中复位到初始的CONV00状态。
所以当一次排序转换结束
后,排序器停在当前状态。
该模式下ADCTRL1寄存器中的CONTRUN位必须设成0,
即禁止连续转换。
例5-2,排序器的启动/停止操作。
要求触发1(定时器下溢即计数到0)到来时,开始3个自动转换(I1,I2,I3)。
触发2(定
时器周期匹配即计数达到周期值)到来时,开始另外3个自动转换(V1,V2,V3)。
触发事件
1、2在时间上相差25μs,由事件管理器A提供。
这里仅用到SEQ1。
图5-4事件管理器触发排序转换的例子
这里MAXCONV1设置成2,ADC输入通道选择控制寄存器ADCCHSELSEQn设置
成:
在复位和初始化后,SEQ1等待触发。
当第一个触发到来时,先执行通道选择值为
CONV00(I1)、CONV01(I2)、CONV02(I3)的3个A/D转换,然后SEQ1在现有状态下等待
第二个触发。
25μs后,第二个触发信号到来,接着执行通道选择值为CONV03(V1)、
CONV04(V2)、CONV05(V3)的3个A/D转换。
两次转换中,MAXCONV1的值都自动装载进了SEQCNTRn中。
如果第二次触发
时需完成的A/D转换的数量和第一次不同,则需要在第二次触发到来前的适当时间改变
MAXCONV1的值,否则前面的值将继续使用。
可以在中断服务程序(ISR)中修改MAX
CONV1的值。
在第二次A/D转换结束时,ADC结果寄存器中将有如下结果:
2.同时采样模式
ADC有同时采样两路模拟输入的能力,前提为一路输入是ADCINA0~ADCINA7,
另一路输入是ADCINB0~ADCINB7,而且两路输入的偏移量是对应的,例如ADCINA0
和ADCINB0,而不是ADCINA2和ADCINB3。
若使ADC变成同时采样模式(Simultaneous
SamplingMode),ADCTRL3寄存器中的SMODE_SEL位必须设为1。
3.输入触发描述
每个排序器都有一套触发源,触发源可以被使能或禁止。
不同的SEQ触发源如表5-2
所示。
注意:
排序器处于空闲时,SOC可以触发一次自动转换。
空闲指在SOC到来前排序
器指向CONV00,或者指排序器完成了一次转换,即SEQCNTRn到达0值。
如果SOC到来时,ADC正进行转换,则ADCTRL2寄存器中的SOCSEQn位被设
置(该位在开始一个转换前被清0)。
如果又来了一个SOC,则这一次的SOC就丢失掉,
因为SOCSEQn已经为1了。
一旦触发,排序器就不能中途停止。
程序必须等待排序器结束信号EOS到来,或者
使排序器复位,才能令排序器立即回到空闲状态。
当SEQ1/2用于级联模式时,忽略通向SEQ2的触发,只有SEQ1触发有效。
级联模式可以看成16路转换而不是8路的SEQ1。