《第10章AD转换模块课件》由会员分享,可在线阅读,更多相关《第10章AD转换模块课件(91页珍藏版)》请在金锄头文库上搜索。
1、第10章A/D转换模块,10.1 A/D转换模块概述,F2407的A/D模数转换模块(ADC) :,带内置采样和保持(S/H)的10位ADC。 16个的模拟输入通道(ADCIN0ADCIN15)。 两个独立的排序器(SEQ1和SEQ2。 可单独访问的16个结果寄存器(RESULT0RESULT15)。,注意:F240 xA器件的ADC模块和F24x器件的ADC模块不兼容,ADC的程序代码不能相互移植。,10.2 自动排序器的工作原理,ADC的排序器:包括两个独立的最多可选择8个模拟转换通道的排序器(SEQ1和SEQ2)。,这两个排序器可级连成一个可选择16个转换模拟通道的排序器(SEQ)。,在
2、这两种工作方式下,ADC模块都能够序列转换并进行自动排序。,注:在DSP中只有一个A/D变换器,这个变换器由双排序器工作模式下的两个排序器共享。,排序,通过模拟输入通道的多路选择器来选择要转换的通道。 转换结束后,转换后的数值结果保存在该通道相应的结果寄存器(RESULTn)中。 即第0通道的转换结果保存在RESULT0中,第1通道的转换结果保存在RESULT1中,依此类推。,说明 用户可以对同一个通道进行多次采样,即对某一通道实行“过采样”,这样得到的采样结果比传统的采样结果分辨率高。,级连工作方式下自动排序ADC的结构框图,双排序器工作方式下自动排序的ADC的结构框图,双排序器和单排序器工
3、作比较,注意,在双排序器模式下,来自“未被激活”的排序器的A/D启动请求将在“被激活”的排序器完成采样之后自动开始执行。 即,假设A/D转换正在忙于处理SEQ2的操作,当SEQ1启动一个SOC信号后,A/D转换器在完成SEQ2的操作之后立即开始响应SEQ1的请求。,最多可选择8个自动转换通道双排序器工作方式和最多可选择16个自动转换通道单排序器工作方式的操作大致相同。,描述排序器的规定,排序器1(SEQ1):CONV00CONV07; 排序器2(SEQ2):CONV08CONV15; 级连排序器(SEQ): CONV00CONV15。,10.2.1 连续的自动排序模式,SEQ1/SEQ2在一次
4、排序过程中对8个通道进行任意排序转换; 每次转换结果保存到8个结果寄存器, SEQ1的结果寄存器为RESULT0RESULT7,SEQ2的结果寄存器为RESULT8RESULT15。,排序中的转换个数受MAX CONVn(MAXCONV寄存器中的一个3位段域或4位段域)控制; MAX CONVn段域的值在0 7范围变化。 MAX CONVn在自动排序的转换开始时,被装载到自动排序状态寄存器(AUTO_SEQ_SR)的排序计数器段域(SEQ CNTR30)。 当排序器从通道CONV00开始有顺序的转换时,SEQ CNTRn段域的值从装载值开始向下计数直到SEQ CNTRn为0。,一次自动排序完成
5、的转换数为MAX CONVn1。,例1: 在双排序器模式下用SEQ1进行A/D转换。,设:用SEQ1完成7个通道的转换 排序自动转换:通道2、3、2、3、6、7、12。 MAX CONV1的值设为6,CHESELQn寄存器填入值,表中数值为十进制,x为不关心的值。,连续的自动排序方式A/D转换流程图,说明,用户必须保证在下一个转换序列开始之前,读取结果寄存器的值。 在ADC模块企图向结果寄存器写入数据,而用户却企图从结果寄存器中读取数时,ADC模块的仲裁逻辑保证在发生这种冲突时不会崩溃。,注意,SEQ CNTR为0后: 如果位CONT RUN为0,则排序器指针停留在最后状态; 如果位CONT
6、RUN为1,则转换自动重新开始(即SEQ CNTRn装入最初的MAX CONV1的值,SEQ1的通道指针指向CONV00)。,在SEQ CNTRn每次到达0时,中断标志位被置为1,需要时用户可以在中断服务子程序中用ADCTRL2寄存器中的RST SEQn位将排序器手动复位。 复位之后,在下一个A/D启动信号来到时SEQ CNTR装入MAX CONVn中的原始值,且SEQ1指针指向CONV00。,10.2.2 排序器的启动/停止模式,可实现在时间上单独和多个启动信号触发源同步的功能。 CONT RUN位必须设置为0。,在排序器完成第一个转换序列之后,不需要在中断服务程序中复位,即排序器初始指针不
7、需要指到CONV00就可以被重新触发。 因此,一个转换序列之后,排序器指针指到当前的通道。,例2 排序器工作在启动/停止方式,要求: 触发源1(定时器下溢)启动3个自动转换(I1、I2和I3); 触发源2(定时器周期)启动3个自动转换(V1、V2和V3)。 触发源1和触发源2在时间上是分开的,即间隔25S。,注:触发源1和2可以是来自事件管理器EVA,外部引脚或软件的SOC信号。,MAX CONV1的值置为2。,ADC模块的输入通道选择排序控制寄存器,事件管理器A(EVA)启动排序器,一旦复位和初始化之后,SEQ1就开始等待触发源的到来。 第一个触发源到来之后,执行通道选择值为CONV00(I
8、1)、CONV01(I2)和CONV02(I3)的3个转换。 转换完成之后,SEQ1等待另一个触发源的到来。 25S之后另一个触发源到来,ADC模块开始执行另外3个通道选择值为CONV03(V1)、CONV04(V2)和CONV05(V3)的转换。,在第二个转换序列完成之后,ADC模块的结果寄存器中得到的值,说明,在两种触发源的情况下,MAX CONV1的值被自动装入SEQ CNTR1中。 如果第二个触发源要求转换的个数和第一个不一样,用户必须在第二个触发源来到之前,通过软件改变MAX CONV1 的值;否则ADC模块将重新使用原来的MAX CONV1中的值。 用户可以在第一个触发源引起的转换
9、完成之后的中断复位程序中改变MAX CONV1的值,为第二个触发源引起的转换个数作准备。,10.2.3 输入触发源,注:,1排序器处于空闲状态:在接收到一个触发源之前,排序器指针指到CONV00或者排序器已经完成一个转换序列(即SEQ CNTR为0)。 无论何时,只要一个排序器处在空闲状态,一个启动信号触发就可以启动一个自动转换序列。 2如果一个新的启动触发信号来到时,当前转换序列正在进行,则将ADCTRL2寄存器中的SOC SEQn位置1(该位在前一个转换开始时被清0)。 但,如果此时SOC SEQn位已经为1,则该启动触发信号丢失。,3一旦被触发后,不能在转换中途停止或中断排序器。 除非,
10、程序等到了一个序列的停止信号或者对排序器进行了复位。 复位使排序器立即返回到空闲的起始状态(SEQ1和级连的排序器指针指到CONV00,SEQ2的排序器指针指到CONV08)。 4当SEQ1/2工作在级连方式下,到SEQ2的触发源被忽略,而到SEQ1的触发源仍然有效。 级连方式可视为SEQ1有16个转换通道而非8个转换通道。,10.2.4 在排序转换时的中断操作,排序器可以在两种工作方式下产生中断, 工作方式方式由ADCTRL2寄存器中的中断模式控制位决定。,Case 1:第一个序列和第二个序列中采样的个数不一样。,使用中断方式1:在每次EOS到来时,产生中断请求。 (1)排序器设置MAX C
11、ONVn=1以转换I1和I2。 (2)在中断服务子程序a中,软件将MAX CONVn的值改为2以转换V1、V2和V3。 (3)在中断服务子程序b中完成以下操作: MAX CONVn改为1,用来转换I1和I2; I1、I2、V1、V2和V3的值从ADC结果寄存器中读出; 复位排序器。 (4)重复第(2)步和第(3)步。,注意:在每次SEQ CNTR到0时将中断标志位置1,且产生两次中断。,Case 2:两个序列的采样个数相等。,使用中断方式2:每隔一个EOS信号,产生一次中断请求。 (1)排序器设置MAX CONVn=2以转换I1、I2和I3(或者V1、V2和V3)。 (2)在中断服务子程序b或
12、d完成以下操作: I1、I2、I3、V1、V2和V3的值从ADC结果寄存器中读出; 复位排序器。 (3)重复第(2)步和第(3)步。,注意:在每次SEQ CNTR到0时将中断标志位置1,即在ADC转换完I1、I2和I3或者V1、V2和V3之后中断标志位置1。 但是只有转换完V1、V2和V3之后才产生中断。,Case 3:两个序列的采样个数相等(带虚读)。,使用中断方式2:每隔一个EOS信号,产生一次中断请求。 (1)排序器设置MAX CONVn=2以转换I1、I2和x。 (2)在中断服务子程序b或d完成以下操作: I1、I2、x、V1、V2和V3的值从ADC结果寄存器中读出; 复位排序器。 (
13、3)重复第(2)步和第(3)步。,注意:第3个x采样为一个假采样,并没有要求采样。但为了使中断服务子程序的开销和CPU的干扰最小,可以利用中断方式2的中断请求特性。,10.3 ADC时钟预定标,通过改变ADCTR1寄存器中的ACQ PS3-ACQ PS0位段域和CPS位,调整F240 xA器件ADC的采样/保持模块来适应信号阻抗的变化。,A/D转换时间,A/D转换可被分成两个时间段 。,说明,如果ACQ PS3ACQ PS0位段域的值全为0,即预定标器的值为1; CPS为0时,PS时钟将和CPU时钟一样。 对于预定标器的任何其它值,PS都会增加采样/保持窗口的时间。 如果CPS为1,则S/H窗
14、口长度为原来的2倍。 即,原来的S/H窗口再加上被预定标器拉长的倍数才是最后的PS。,注意: 在CPS为0时,PS和ACLK将和CPU时钟相等。,10.4 校准模式,说明 在校准方式下,ADCINn引脚未接A/D 转换器,因此不能对排序器进行操作。 接收A/D 转换器输入端的信号为BRG ENA位和HI/LO位。,校准模式:计算ADC模块的零点、中点和最大值时的偏移误差。,偏移误差为二进制补码,保存在校准寄存器中(二进制补码操作只适用于误差值为负的情况)。 ADC硬件自动将偏移误差量加到转换值上。,校准寄存器(CALIBRATION)地址70B8h,CALIBRATION寄存器中存放校准模式下
15、的最后结果。 在正常模式下时,ADC转换结果保存到结果寄存器之前CALIBRATION寄存器中的值会自动加到ADC转换结果的输出。,例1:,如果选择VREFHI作校准操作,则期望的结果是3FFh。 如果从CALIBRATION寄存器读出的校准转换结果为3FDh,那么用户应当在离开校准模式之前,将值002h写到CALIBRATION寄存器中。 CALIBRATION寄存器中的值(002h)将对以后的转换值进行2个数的调整。,例2:,如果选择VREFLO作校准操作,则期望的结果是000h。 如果从CALIBRATION寄存器读出的校准转换结果为003h,那么用户应当在离开校准模式之前,将值003h
16、写到CALIBRATION寄存器中。 CALIBRATION寄存器中的值(003h)将对以后的转换值进行3个数的调整。,校准操作,在校准模式下,ADC将转换结果保存在CALIBRATION寄存器中; 在校准转换结束之后,INT_FLAG_SEQ1位置1; 如果中断被使,则产生中断; 用户必须读取CALIBRATION寄存器的值,以判断该值对理想值的偏移量有多大,然后在离开这种校准方式之前,将该偏移量写回CALIBRATION寄存器中; 转换值被送到结果寄存器之前, CALIBRATION寄存器中的值将加到转换值上(不是在校准模式)。,注意,为了得到精确的结果,校准操作必须作两次,即在保证已经完成第一个校准操作后,应当立即启动第二个校准操作(这将覆盖第一次校准操作的结果)。,10.5 自测式模式,自测试模式只能用来检测ADC引脚的短路或开路。,注意: 正常模式和自测试模式不能同时使用。 在自测试模式下,采样周期为正常模式的两倍。,10.6 ADC模块的寄存器,1ADC控制寄存器1(ADCTRL1)地址70A0h,注: R = 可读 , W = 可写 , -0 = 复位值,位15