6 DSP原理与应用教案 ADC.docx
- 文档编号:3321111
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:34
- 大小:622.03KB
6 DSP原理与应用教案 ADC.docx
《6 DSP原理与应用教案 ADC.docx》由会员分享,可在线阅读,更多相关《6 DSP原理与应用教案 ADC.docx(34页珍藏版)》请在冰豆网上搜索。
6DSP原理与应用教案ADC
《DSP原理与应用》教案(6)
教学课时:
4学时
六、A/D转换模块
6.1A/D转换模块概述
F2407的A/D转换模块(ADC)具有以下特性:
1、带内置采样和保持(S/H)的10位ADC。
2、多达16个的模拟输入通道(ADCIN0~ADCIN15)。
3、自动排序的能力。
一次可执行最多16个通道的“自动转换”,而每次要转换的通道都可以通过编程来选择。
4、两个独立的最多可选择8个模拟转换通道的排序器(SEQ1和SEQ2)可以独立工作在双排序器模式,或者级联之后工作在一个最多可选择16个模拟转换通道的排序器模式。
5、在给定的排序方式下,4个排序控制器(CHSELSEQn)决定了模拟通道转换的顺序。
6、可单独访问的16个结果寄存器(RESULT0~RESULT15)用来存储转换结果。
7、可有多个触发源启动A/D转换:
软件:
软件立即启动(用SOCSEQn);
EVA:
事件管理器A(在EVA中有多个事件源可以启动A/D转换);
EVB:
事件管理器B(在EVB中有多个事件源可以启动A/D转换);
外部:
ADCSOC引脚。
8、灵活的中断控制,允许在每一个或每隔一个序列的结束时产生中断请求。
9、排序器可工作在启动/停止模式,允许多个按时间排序的触发源同步转换。
10、
图6-1F2407xAADC模块方框图
EVA和EVB可各自独立地触发SEQ1和SEQ2(仅用于双排序器模式)。
11、采样和保持获取时间窗口有单独的预定标控制。
12、内置校验模式。
13、内置自测试模式。
6.2自动排序器的工作原理
ADC的排序器包括两个独立的最多可选择8个模拟转换通道的排序器(SEQ1和SEQ2)。
这两个排序器可被级联成一个最多可选择16个转换模拟通道的排序器(SEQ)。
图6-2是ADC模块工作在最多可选择16个自动转换模拟通道的排序器(SEQ)模式下的结构框图,图6-3是ADC模块工作在两个最多可选择8个自动转换模拟通道的排序器(SEQ1和SEQ2)模式下的结构框图。
图6-2级联工作方式下自动排序ADC的结构框图
在这两种工作方式下,ADC模块都能够进行序列转换并自动排序。
可通过模拟输入通道的多路选择器来选择要转换的通道。
转换结束后,转换后的数值结果保存在该通道相应的结果寄存器(RESULTn)中。
即第0通道的转换结果保存在RESULT0中,第1通道的转换结果保存在RESULT1中,依此类推。
而且,用户可以对同一个通道进行多次采样,即对某一通道实行“过采样”,这样得到的采样结果比传统的采样结果分辨率高。
注意,在双排序器模式下,来自“未被激活”的排序器的A/D启动请求将在“被激活”的排序器完成采样之后自动开始执行。
即,假设A/D转换正在忙于处理SEQ2的操作,当SEQ1启动一个SOC信号后,A/D转换器在完成SEQ2的操作之后立即开始响应SEQ1的请求。
最多可选择8个自动转换通道双排序器工作方式和最多可选择16个自动转换通道单
图6-3双排序工作方式下自动排序ADC的结构框图
排序器工作方式的操作大致相同。
表6-1列出了它们之间的对比情况。
图6-3双排序器工作方式下自动排序ADC的结构框图
表6-1双排序器和单排序器工作比较
为了描述方便,以后描述排序器时作如下规定:
★排序器1(SEQ1)指CONV00~CONV07;
★排序器2(SEQ2)指CONV08~CONV15;
★级联排序器(SEQ)指CONV00~CONV15。
6.2.1连续的自动排序模式
下面仅适用于最多可实行8个通道的自动转换排序器(SEQ1或SEQ2)。
该模式下,SEQ1/SEQ2在一次排序过程中,对多达8个的任意通道进行排序转换,每次转换结果被保存到8个结果寄存器。
SEQ1的结果寄存器为RESULT0~RESULT7,SEQ2的结果寄存器为RESULT8~RESULT15。
在一个排序中的转换个数受MAXCONVn(MAXCONV寄存器中的一个3位段域或4位段域)控制,该值在自动排序的转换开始时,被装载到自动排序状态寄存器(AUTO_SEQ_SR)的排序计数器段域(SEQCNTR3~0)。
MAXCONVn段域的值在0~7范围变化。
当排序器从通道CONV00开始有顺序地转换时,SEQCNTRn段域的值从装载值开始向下计数直到SEQCNTRn为0。
一次自动排序完成的转换数为MAXCONVn+1。
例6-1在双排序器模式下,用SEQ1进行A/D转换。
假设需要用SEQ1来完成7个通道的转换(通道2、3、2、3、6、7和12需要排序自动转换)。
则MAXCONV1的值应设为6且CHESELQn寄存器中应填入如下表6-2所列的值。
表6-2例6-1中CHESELQn寄存器填入值
连续的自动排序方式A/D转换流程图如图6-4所示。
在SEQCNTR为0之后,如果连续转换位CONTRUN为1,则转换自动重新开始(即SEQCNTRn装入最初的MAXCONV1的值,并且SEQ1的通道指针指向CONV00)。
在这中情况下,用户必须保证下一个转换序列开始之前,读取结果寄存器的值。
在ADC模块企图向结果寄存器写入数据而用户却企图从结果寄存器中读取数据时,ADC模块的仲裁逻辑保证在发生这种冲突时不会崩溃。
在SEQCNTR为0之后,如果连续转换位CONTRUN为0,则排序器指针停留在最后状态。
如:
在例6-1中指向CONV06,且SEQCNTRn保持为0。
由于在SEQCNTRn每次到达0时,中断标志位都被置为1,所以如果需要,用户可以在中断服务子程序中用ADCTRL2寄存器中的RSTSEQn位将排序器手动复位。
复位后,在下一个A/D启动信号来到时,SEQCNTR装入MAXCONVn中的原始值,且SEQ1指针指向CONV00,此特点在启动/停止操作发生中非常有用。
上述例子也适用于SEQ2和SEQ。
6.2.2排序器的启动/停止模式
除了连续的自动排序模式外,任何一个排序器(SEQ1、SEQ2和SEQ)都可工作在启动/停止模式。
该模式与例6-1相同,可实现在时间上单独与多个启动信号触发源同步的功能。
所不同的是,排序器完成第一个转换序列后,在中断服务程序中不需要被复位,即排序器初始指针不需要指到CONV00就可以被重新触发。
因此一个转换序列之后,排序器指针指到当前的通道。
在这种方式下,CONTRUN位必须被设置为0。
图6-4连续的自动排序方式A/D转换流程图
例6-2排序器工作在启动/停止方式。
要求:
触发源1(定时器下溢)启动3个自动转换(I1、I2和I3),触发源2(定时器周期)启动3个自动转换(V1、V2和V3)。
触发源1和触发源2在时间上是分开的,即间隔25us,如图6-5所示。
只有SEQ1被用到。
图6-5事件管理器A(EVA)启动排序器
注:
触发源1和2可以是来自事件管理器EVA,外部引脚或软件的SOC信号。
例6-2中需要的两个触发源可以用同一个触发源发生两次来满足。
在这种情况下,MAXCONV1的值被设置为2,且ADC模块的输入通道选择排序控制寄存器应填入如表6-3所列的值。
表6-3例6-2中ADC模块的输入通道选择排序控制寄存器填入值
一旦复位和初始化之后,SEQ1就开始等待触发源的到来。
第一个触发源来到之后,通道选择值为CONV00(I1)、CONV01(I2)和CONV02(I3)的3个转换被执行。
转换完成之后,SEQ1等待另一个触发源的到来。
25us之后另一个触发源来到,ADC模块开始另外3个通道选择值为CONV03(V1)、CONV04(V2)和CONV05(V3)的转换。
在两种触发源的情况下,MAXCONV1的值都被自动装入SEQCNTR1中。
如果第二个触发源要求转换的个数与第一个不一样,那么用户必须在第二个触发源来到之前,通过软件改变MAXCONV1的值;否则ADC模块将重新使用原来的MAXCONV1中的值。
用户可以在第一个触发源引起的转换完成之后的中断服务程序中改变MAXCONV1的值,为第二个触发源引起的转换个数作准备。
在第二个转换序列完成之后,ADC模块的结果寄存器中得到如表6-4所列的值。
在第二个触发源转换序列完成之后,SEQ1在当前状态保持等待状态,直到另一个触发源来到为止。
用户可通过软件复位SEQ1将排序器指针指到CONV00,并重复同样的触发源1和2转换操作。
表6-4例6-2中ADC模块的结果寄存器所得值
6.2.3输入触发源
每一个排序器都有一套能被使能或禁止的触发源。
SEQ1、SEQ2和SEQ的有效输入触发源见表6-5。
表6-5排序器有效输入触发源
注:
1、排序器处于空闲状态是指:
在接收到一个触发源之前,排序器指针指到CONV00或者排序器已经完成一个转换序列(即SEQCNTR为0)。
无论何时,只要一个排序器处在空闲状态,一个启动信号触发就可启动一个自动转换序列。
2、如果一个新的启动触发信号来到时,当前转换序列正在进行,则将ADCTRL2寄存器中的SOCSEQn位置1(该位在前一个转换开始时被清0)。
然而如果此时SOCSEQn位已经为1,则该启动触发信号将丢失。
3、一旦被触发,排序器就不能在转换中途被停止或中断。
程序必须等到一个序列的停止信号再继续操作,或者对排序器进行复位。
复位使排序器立即返回到空闲的起始状态(SEQ1和级联的排序器指针指到CONV00,SEQ2的排序器指针指到CONV08)。
4、当SEQ1/2工作在级联方式下,到SEQ2的触发源被忽略,而到SEQ1的触发源仍然有效。
因此级联方式可以看作是SEQ1有最多16个转换通道而非8个转换通道。
6.2.4在排序转换时的中断操作
排序器可以在两种工作方式下产生中断,这两种方式由ADCTRL2寄存器中的中断模式控制位决定。
对例6-2稍作变动,就可以说明在不同的工作条件下中断方式1和中断方式2的用途。
在排序转换时的中断操作如图6-6所示。
情况1:
第一个序列和第二个序列中采样的个数不一样
在这种情况下使用中断方式1(即在每次EOS到来时,产生中断请求)。
(1)排序器设置MAXCONVn=1以转换I1和I2。
(2)在中断服务子程序a中,将MAXCONVn的值改为2,以转换V1、V2和V3。
(3)在中断服务子程序b中完成以下操作:
将MAXCONVn的值改为1,以转换I1和I2;
I1、I2、V1、V2和V3的值从ADC结果寄存器中读出;
排序器被复位。
(4)重复第
(2)步和第(3)步。
注意:
中断标志位在每次SEQCNTR到0时都被置1,且产生两次中断。
情况2:
两个序列的采样个数相等
在这种情况下使用中断方式2(即在每次EOS到来时,产生中断请求)。
(1)排序器设置MAXCONVn=2以转换I1、I2和I3(或者V1、V2和V3)。
(2)在中断服务子程序b或d完成以下操作:
I1、I2、I3、V1、V2和V3的值从ADC结果寄存器中读出;
排序器被复位。
(3)重复第
(2)步。
注意:
中断标志位在每次SEQCNTR到0时都被置1,即在ADC转换完I1、I2和I3或者V1、V2和V3之后中断标志位都被置1。
但是只有转换完V1、V2和V3之后才产生中断。
情况3:
两个序列的采样个数不相等(带虚读)
(1)排序器设置MAXCONVn=2以转换I1、I2和x。
(2)在中断服务子程序b或d完成以下操作:
I1、I2、x、V1、V2和V3的值从ADC结果寄存器中读出;
排序器被复位。
(3)重复第
(2)步。
注意:
第3个x采样为一个假采样,并未要求采样。
然而,为了使中断服务程序的开销和CPU的干扰最小,可利用中断方式2的中断请求特性。
图6-6在排序转换时的中断操作图
6.3ADC时钟预定标
可调整F2407xA器件ADC的采样/保持模块,来适应输入信号阻抗的变化。
可选用改变ADCTR1寄存器中的ACQPS3~ACQPS0位段域和CPS位来实现。
A/D转换可被分成两个时间段,见图6-7。
如果ACQPS3~ACQPS0位段域的值全为0,即预定标器的值为1,并且CPS为0时,PS时钟将同CPU时钟一样。
对于预定标器的任何其它值,PS都会被放大(即增加采样/保持窗口的时间)。
PS具体的放大倍数见表6-8对ACQPS3~ACQPS0位段域的描述。
如果CPS为1,则S/H窗口长度为原来的2倍。
被扩大为原来的S/H窗口再加上被预定标器拉长的倍数才是最后的PS。
图6-8表明了各个预定标位的作用。
注意:
在CPS为0时,PS和ACLK将和CPU时钟相等。
图6-7A/D转换时间
图6-7F240xAADC模块的时钟预定标
6.4校准模式
在校准方式下,ADCINx引脚未接A/D转换器,且不能对排序器进行操作。
接收A/D转换器输入端的信号为BRGENA位(桥使能)和HI/LO位(VREFHI/VREFLO)。
这两位将VREFHI、VREFLO或者其中间值送到A/D转换器的输入端,ADC模块完成一个转换。
校准模式可计算ADC模块的零点、中点和最大值时的偏移误差。
该偏移误差值的二进制补码被保存在校准寄存器(CALIBRATION)中(二进制补码操作只适用于误差值为负的情况)。
在此基础上,ADC硬件自动地将偏移误差量加到转换值上。
校准寄存器(CALIBRATION)---地址70B8h
总之,CALIBRATION寄存器中存放校准模式下的最后结果。
在正常模式下时,ADC转换结果被保存到结果寄存器之前,CALIBRATION寄存器中的值被自动加到ADC转换结果的输出。
以下举一个校准实例。
在校准模式下,ADC将转换结果保存在CALIBRATION寄存器中。
在校准转换结束之后,INT_FLAG_SEQl位被置1。
如果中断被使能,则产生中断。
此时用户软件必须读取CALIBRATION寄存器的值,以判断该值对理想值的偏移量有多大,然后在离开这种校准方式之前将这个偏移量写回CALIBRATION寄存器中。
在后来的转换值被送到结果寄存器之前,此值将被加到转换值上(不是在校服模式)。
为了得到精确的结果,校准操作必须作两次、即在保证已经完成第一个校准操作后,应当立即启动第二个校准操作(这将覆盖第一次枝准操作的结果)。
例1:
如果选择VREFHI作校准操作.则期望的结果是3FFh。
如果从CALIBRATION寄存器读出的校淮转换结果为3PDh,那么用户应当在离开校准模式之前,将值0002h写到CALIBRATION寄存器中。
这个值将对以后的转换值进行2个数的调整。
例2:
如果选择VREFLO作校准操作,则期望的结果是0000h。
如果从CALIBRATION寄存器读出的校准转换结果为0003h,那么用户应当在离开校谁模式之前将值0003h写到CALIBRATION寄存器中。
这个值将对以后的转换值进行3个数的调整。
校准模式不能自动完成的原因是,某些用户可能只希望对不同的点进行测量并将测量结果进行平均,而另一些用户则只关心某一点,如中点。
这根据用户需要而定。
6.5自测试模式
自测试模式用来检测ADC引脚的短路/开路。
在这种情况下,采样周期为正常模式的两倍。
在采样周期的前半部分,除了用户提供的模拟输入信号外,VREFHI或者VRKFLO被接到ADC转换器的输入;在采样周期的后半部分,只有用户提供的信号被接到ADC转换器的输入。
假设使用VREFHI作自测试,且ADC引脚为开路,则结果寄存器中只包含表示VREFHI的数字值。
自测试模式只能用来检测短路或开路,在正常工作模式下不能使用。
而且正常模式和自测试模式不能同时使用。
6.6ADC模块的寄存器
ADC模块寄存器如表6-6所示。
表6-6ADC模块寄存器地址列表
地址
寄存器
名称
地址
寄存器
名称
70A0h
ADCTRL1
ADC控制寄存器1
70ADh
RESULT5
转换结果缓冲寄存器5
70A1h
ADCTRL2
ADC控制寄存器2
70AEh
RESULT6
转换结果缓冲寄存器6
70A2h
MAXCONV
最大转换通道寄存器
70AFh
RESULT7
转换结果缓冲寄存器7
70A3h
CHSELSEQ1
通道选择排序控制寄存器1
70B0h
RESULT8
转换结果缓冲寄存器8
70A4h
CHSELSEQ2
通道选择排序控制寄存器2
70B1h
RESULT9
转换结果缓冲寄存器9
70A5h
CHSELSEQ3
通道选择排序控制寄存器3
70B2h
RESULT10
转换结果缓冲寄存器10
70A6h
CHSELSEQ4
通道选择排序控制寄存器4
70B3h
RESULT11
转换结果缓冲寄存器11
70A7h
AUTO_SEQ_SR
自动排序状态寄存器
70B4h
RESULT12
转换结果缓冲寄存器12
70A8h
RESULT0
转换结果缓冲寄存器0
70B5h
RESULT13
转换结果缓冲寄存器13
70A9h
RESULT1
转换结果缓冲寄存器1
70B6h
RESULT14
转换结果缓冲寄存器14
70AAh
RESULT2
转换结果缓冲寄存器2
70B7h
RESULT15
转换结果缓冲寄存器15
70ABh
RESULT3
转换结果缓冲寄存器3
70B8h
CALIBRATION
校准结果寄存器,用来校正转换结果
70ACh
RESULT4
转换结果缓冲寄存器4
1、ADC控制寄存器1(ADCTRL1)--地址70A0h
位15:
保留位。
位14:
复位位。
ADC模块软件复位位。
此位引起一个对整个ADC模块的主动复位。
所有的寄存器和排序器指针都复位到器件复位引脚被拉低或者上电复位时的初始状态。
0无影响;1复位整个ADC模块。
注:
ADC模块可在系统复位时被复位,但用户可通过向此位写1来实现,在任何时候对ADC模块的复位。
一个NOP指令后,就可向ADCTRL1寄存器中写入相应的值。
SPLK#01xxxxxxxxxxxxxxb,ADCTRL1;复位整个ADC模块(RESET=1)
NOP;保证写入ADCTRL1寄存器所需的延时
SPLK#00xxxxxxxxxxxxxxb,ADCTRL1;清除ADC的复位位(RESET=0)
在缺省设置足够时,复位ADC模块之后,也可不向ADCTRL1中写数。
位13~12:
SOFT位和FREE位。
这两位决定仿真悬挂时,ADC模块的工作情况。
在自由运行模式下,ADC模块的运行不受仿真影响,在停止模式下,仿真悬挂时,ADC模块可立即停止或者完成当前操作之后停止。
SOFTFREE
00仿真悬挂时,ADC模块立即停止;
10仿真悬挂时,ADC模块完成当前转换后停止;
x1自由运行,继续运行而不管仿真悬挂。
位11~8:
采样时间选择位ACQPS3~ACQPS0。
这几位决定了ADC时钟的预定标系数,见表6-7。
位7:
CPS位。
转换时钟预定标位。
该位决定了ADC转换逻辑时钟的预定标。
0FCLK=CLK/1;
1FCLK=CLK/2。
其中CLK为CPU时钟频率。
位6:
连续转换CONTRUN。
该位决定排序器工作在连续转换模式或者启动/停止模式。
用户可在当前转换序列正被执行时向该位写数,但是只有在当前转换序列完成之后才生效。
在连续模式下,用户不用对排序器复位,但在启动/停止模式下,排序器必须被复位,以使排序器指针指到CONV00。
0启动/停止模式;
1连续转换模式。
位5:
ADC中断请求优先级位INTPRI位。
0高优先级;
1低优先级。
位4:
级联排序器工作方式位SEQCASC。
0双排序器工作模式,SEQ1和SEQ2作为两个最多可选择8个转换通道的排序器;
1级联模式,SEQ1和SEQ2级联起来作为一个最多可选择16个转换通道的排序器SEQ。
表6-7A/D模块的预定标系数
位3:
偏差校准使能位CALENA。
0禁止校准模式;
1使能校准模式。
位2:
桥使能位BRGENA,见表6-8。
0满的参考电压被接到ADC输入;
1参考的中点电压被接到ADC输入。
位1:
VREFHI和VREFLO选择位HI/LO,见6-8。
0VREFLO作为ADC输入的值;
1VREFHI作为ADC输入的值。
位0:
自测试使能位STESTENA。
0禁止自测试模式;
1使能自测试模式。
表6-8参考电压位选择定义
2、ADC控制寄存器2(ADCTRL2)--地址70A1h
位15:
EVBSOCSEQ位。
EVB的SOC信号使能级联排序器位。
0不起作用;
1允许级联的排序器SEQ被事件管理器B的信号启动。
位14:
RSTSEQ1/STRTCAL位。
复位排序器1/启动校准转换方式位。
在校准转换方式禁止的情况下:
0不起作用;
1立即复位排序器,使排序器指针指到CONV00。
在校准转换方式使能的情况下:
0不起作用;
1启动校准转换方式。
位13:
SOCSEQ1位。
启动SERQ1转换位。
以下触发源可引起此位置1:
S/W软件向该位写1;
EVA事件管理器A;
EVB事件管理器B(仅在级联模式下);
EXT外部引脚(即ADCSOC引脚)。
当一个触发源到来时,有3种情况可能发生:
★SEQ1处于空闲状态且SOC位清0时,SEQ1立即启动(在判优仲裁控制下);该位置1后立即清0,允许后来的触发源被悬挂。
★SEQ处于忙状态但SOC位为0时,该位置1以表示一个触发源请求正被悬挂;当SEQ1完成当前的转换又重新开始时,该位清0。
★SEQ1处于忙状态且SOC位已经置1时,此时来到的触发源被忽略。
0清除一个悬挂的SOC请求;
1软件触发启动SEQ1。
注:
当RSTSEQ1位和SOCSEQ1位在同一个指令中被设置时,将复位排序器而不会启动排序器。
正确的操作顺序应该是先设置RSTSEQ1位,再在下一条指令中设置SOCSEQ1位,这就可以保证复位一个排序器之后,再将其重新启动。
对RSTSEQ2位和SOCSEQ2位的操作也是如此。
位12:
SEQ1BSY位。
SEQ1忙状态位。
0SEQ1处于空闲状态;
1SEQ1处于忙状态,一个转换序列正在进行。
位11:
对SEQ1的中断方式使能控制位见表6-9。
表6-9位11~10中断方式
位9:
INTFLAGSEQ1位。
ADC模块SEQ1的中断标志位。
0无中断事件发生;
1有中断事件发生。
位8:
EVASOCSEQ1位。
事件管理器A对SEQ1产生SOC信号的屏蔽位。
0SEQ1不能被EVA的触发源启动;
1允许SEQ1/SEQ被EVA的触发源启动。
位7:
EXTSOCSEQ1位。
外部信号对SEQ1的启动转换位。
0不起作用;
1允许一个来自ADCSOC引脚上信号,启动ADC自动转换序列。
位6:
RSTSEQ2位。
复位排序器2。
0不起作用;
1立即复位排序器,使排序器指针指到CONV00。
位5:
SOCSEQ2位。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP原理与应用教案 ADC DSP 原理 应用 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)