您好,欢迎访问三七文档
第七讲ADC10ADC10模块支持快速10位模数转换。该模块提供了一个10位SAR内核、采样选择控制、基准发生器和用于转换结果自动处理的数据传输控制器(DTC),因而无须CPU的干预即可对ADC采样进行转换和存储。一、ADC10的结构①10位ADC内核ADC10内核是一个10位的模/数转换器,并能够将结果存放在转换存储器中。该内核使用两个可编程的参考电压(VR+和VR-)定义转换的最大值和最小值。当输入模拟电压等于或者高于VR+时,ADC10输出满量程值03FFH,当输入电压等于或小于VR-时,ADC10输出0。输入通道和参考电压定义在转换控制存储器中。转换结果可以是直接的二进制或者是补码格式。当使用二进制时转换公式是:ADC10CLK既是转换时序,又是采样时钟。通过控制位ADC10SSELx来选择ADC10的时钟源,ADC10DIVx位可以将时钟进行1到8分频。ADC10CLK的时钟源有SMCLK、MCLK、ACLK和内部振荡器ADC10OSC。ADC10OSC是内部生成的频率范围5MHz的时钟,受芯片本身及供电电压、温度等因素的影响。ADC10内核可通过两个控制寄存器ADC10CTL0和ADC10CTL1来配置。控制位ADC10ON来控制内核的开关。除少数例外,ADC10的控制位只有在ENC=0的条件下才能被修改。在任何转换开始之前必须把ENC置位。在ADC10转换过程中,必须确保ADC10CLK有效直到转换结束,否则转换不能完成,其结果也是无效的。ADC10的设计上考虑了低功耗应用,当ADC10不进行模数转换时,内核自动停止工作,当模数转化需要时又重新开始工作。另外ADC10OSC也会在不用时自动关闭,使用时自动打开。当内核和振荡器不工作时,不消耗任何电流。②ADC10模拟多路器ADC10只有一个内核,当对多个模拟信号进行采样并进行A/D转换时,需要用到多路选择器分时接通每一个模拟信号,完成一次采样和转换。ADC10配置有8路外部通道和4路内部通道,通过A0~A7实现外部8路模拟信号输入,4路内部通道可以将VeREF+、VREF-/VeREF-、(AVcc-AVss)/2以及片内温度传感器的输出作为待转换模拟输入信号。将VeREF+、VREF-/VeREF-、(AVcc-AVss)/2以及片内温度传感器的输出作为ADC10的输入信号,可以用于监控有关ADC10的自检、校验和诊断功能以及芯片内的温度。ADC10外部输入Ax,VREF+和VREF-共用I/O端口,这些数字CMOS门电路在模拟信号通过时易产生寄生电流,禁止端口管脚的缓冲功能可以减少寄生电路并降低整体能耗。关闭这些I/O的输入输出寄存器可以使用控制位ADC10AEx。③参考电压发生器ADC10模块内部有两个可选择的参考电压,设置REFON=1时,内部参考电压可用。控制位REF2_5V=1,内部参考电压是2.5V;REF2_5V=0,参考电压1.5V。内部参考电压既可用在模块内部(REFOUT=0),也可以在器件具备管脚VREF+和VREF-的前提下,通过管脚VREF+输出(REFOUT=1)。外部参考电压可以分别通过管脚A4和A3给VR+和VR-使用。当使用外部参考电压或使用Vcc作为参考电压时,内部参考电压可以关闭以节省能耗。外部正参考电压VeREF+可以通过控制位SREF0=1、SREF1=1来进行缓存设置,这样在使用外部参考电压时具有大的内阻,从而降低了电流消耗。当REFBURST=1时增加的电流消耗仅限于采样和转换过程。另外用在ADC12上外部储能电容在ADC10上不再需要。ADC10内部参考电压发生器的设计上考虑了低功耗应用,在使用中可以参考用户说明的设置,将不使用的部分关闭掉以最大限度地节省能耗。④采样与转换时序采样输入信号SHI的上升沿触发一次模/数转换。控制位SHSx来设定SHI的源,这些源包括:•ADC10SC位•Timer_A输出单元1•Timer_A输出单元0•Timer_A输出单元2SHI信号源的极性可以通过ISSH位的设置而翻转。控制位SHTx的设定选择采样时间tsample分别为4、8、16、64个ADC10CLK周期。采样定时器在设定采样时间后置位SAMPCON,并与ADC10CLK同步,所以采样时间应该是tsample与tsync之和。当SAMPCON由高变低时触发模/数转换开始,模/数转换需要13个ADC10CLK周期。ADC10采样时序ADC10结构框图二、ADC10转换模式ADC10有四种转换模式,控制位CONSEQx设定不同工作模式,如下表示。CONSEQx模式操作描述00单通道单次转换一个模拟信号通道,只转换一次01序列通道单次转换多个模拟信号通道,每个通道转换一次10单通道重复转换一个模拟信号通道,重复模/数转换11序列通道重复转换多个模拟信号通道,顺次重复模/数转换①单通道单次转换INCHx选择单通道并采样和转换一次。模/数转换结果写到ADC10MEM中。如下图示是单通道单次模式的流程图。当ADC10SC触发模/数转换时,控制位ADC10SC可以成功触发一次模/数转换。当使用其它触发源时,ENC必须在每次模/数转换之间进行状态切换。ADC10单通道单次转换模式状态图②序列通道单次转换多个通道顺次被采样和转换一次。序列开始于选择位INCHx并递减到A0通道。每次模/数转换的结果被写入ADC10MEM中,当A0通道转换完成后停止工作。如下图示是序列通道单次转换流程图。当ADC10SC触发该序列模/数转换开始时,不需要ENC状态切换;当其它触发源用于触发序列转换开始时,ENC必须在每一个序列之间切换状态。ADC10序列通道单次转换模式状态图③单通道重复转换由INCHx选定输入通道后,采样和模/数转换连续重复进行。每一次ADC转换结果被写入ADC10MEM中。如下图示是单通道重复转换流程图。ADC10单通道重复转换模式状态图④序列通道重复转换多个模拟通道被顺次采样和转换后重复前面的过程。通道序列从INCHx开始递减到通道A0。每一个ADC转换结果被写入ADC10MEM中。序列在通道A0完成转换后,有触发信号重新下一轮序列转换开始。此模式的转换流程图如下所示。ADC10序列通道重复转换模式状态图⑤使用控制位MSC在多次重复采样/转换时,可以使用控制位MSC将转换过程尽可能快地自动连续起来。具体设置如下表所示。有效条件MSC值具体操作内容CONSEQx00每次转换需要SHI信号的上升沿触发采样定时器1仅首次转换由SHI信号的上升沿触发采样定时器,而后采样转换将在前一次转换完成后立即进行⑥停止ADC10的方法如何停止ADC10取决于在哪种转换模式下,以下是推荐使用的方法,用来停止单次转换和序列转换:•在单通道单次转换模式下,复位ENC能够立刻停止模/数转换,但是结果是不可信的。若要获得正确的转换结果,可以查询ADC10BUSY位,直到该位复位后再清除ENC,这样得到的转换结果是可信的。•在单通道重复转换模式下,复位ENC将在当前模/数转换完成后ADC10停止工作。•在一个序列或者重复序列工作模式下,复位ENC将使得ADC10在当前序列完成后停止工作。•任何模式下,如果设定CONSEQx=0并复位ENC,则ADC10模块停止工作。得到转换数据是不可信的。三、ADC10数据传输控制器ADC10模块有一个数据传输控制器(DTC),DTC自动传输模/数转换结果从ADC10MEM到片上其他内存单元。通过设定ADC10DTC1寄存器为非0值便使能了DTC。当DTC工作时,每次ADC10模块完成一次模/数转换并将结果写入ADC10MEM中,就将触发一次数据传输。在传输预定义数量数据完成之中,不允许有其他软件干预。每一次DTC传输需要一个CPU周期(MCLK)。在数据传送期间,为避免任何总线干扰,CPU除执行传输必须的那个机器周期外则时钟处于停止状态。在ADC10模块处于工作状态时,无法初始化DTC传输。所以在配置DTC时需要保证没有处于模/数转换中或者队列转换中。;ADC10activitytestBIC.W#ENC,&ADC10CTL0;busy_testBIT.W#BUSY,&ADC10CTL1;JNZbusy_test;MOV.W#xxx,&ADC10SA;SafeMOV.B#xx,&ADC10DTC1;;continuesetupC语言表达:ADC10CTL0&=~ENC;while(ADC10CTL1&BUSY);//WaitifADC10coreisactive1、单块传输模式如果ADC10TB被复位,那么单块传输模式将会被选用。对于一个数据块,ADC10DTC1中的n值定义了传输的总数量。可以利用16位寄存器ADC10SA在MSP430任何地址范围内定义块的起始地址。块结束地址为ADC10SA+2n-2。内部地址指针最初为ADC10SA,内部传输计数器等于‘n’。内部指针和计数器对软件是不可见的。DTC传输ADC10MEM的字值到地址指针ADC10SA。每次DTC传输后,内部地址指针增加2同时内部传递计数器减1。DTC随着ADC10MEM的每次装载连续传递,直到内部传递计数器变为0。直到一个值被写入ADC10SA,DTC才会停止其他的数据传递。当在一个数据块模式中使用DTC时,ADC10IFG标志仅会在一个完整的块被传输后才会被设置。2、双块传输模式如果ADC10TB被设置,那么双块传输模式将会被选用。对于一个块,ADC10DTC1中的n值定义了传输的数量。可以利用16位寄存器ADC10SA在MSP430任何地址范围内定义第一个块的地址范围。第一个块结束地址为ADC10SA+2n-2。第二个块的地址范围被定义为SA+2n到SA+4n-2。内部地址指针最初为ADC10SA,内部传递计数器等于‘n’。内部指针和计数器对软件是不可见的。DTC传递ADC10MEM的字值到地址指针ADC10SA。每次DTC传递后,内部地址指针增加2同时内部传递计数器减1。DTC随着ADC10MEM的每次装载连续传递,直到内部传递计数器变为0。在这时,块一已装满,ADC10IFG标志ADC10B1位都被设置用户可以通过测试ADC10B1位来判断块一是否已装满。DTC继续传递块2。内部传递计数器自动重装‘n’在下次装载ADC10MEM时,DTC开始传递转换结果到块2。完成n次传递后,块2被装满。ADC10IFG标志被设置和ADC10B1位被清除。用户软件可以通过测试ADC10B1位是否清除来判断块2是否装满。3、连续传输如果ADC10CT被设置,那么连续传输模式将会被选用。当块一(一个块传输模式)或块二(两个块模式)完成传递后,DTC不停止。内部地址指针和数据传递计数器分别被设置等于ADC10SA和n时。块一开始后,进行连续传递。如果ADC10CT位被复位,在当前的数据完整的传输进块一(一个块模式)或块二(两个块模式)后,DTC传递停止。4、DTC传输周期时间对于每个ADC10MEM传递,DTC需要一或二个MCLK周期来实现同步,一个周期用于实际的传递(CPU暂停时)和一个周期的等待时间。因为DTC使用MCLK,DTC的周期时间取决于MSP430的工作模式和时钟系统设置。如果MCLK处在活动状态,但CPU停止时,DTC使用MCLK时钟源进行每次的传递,无需重新使能CPU。如果MCLK时钟源关闭,只有在一次传递过程中,DTC才暂时重新起始来自DCOCLK的MCLK。CPU仍然关闭,在DTC传递后,MCLK又重新关闭。四、ADC10中断系统ADC10模块有一个中断向量,中断系统如上图示。当DTC不使用时(ADC10DTC1=0),每次模/数转换完成将结果写入ADC10MEM时ADC10IFG被置位;当DTC使用时,每次数据传输完毕或者内部传输计数器为0时,ADC10IFG被置位。在ADC10IE和GIE都使能的前提下,ADC10IFG将生成中断请求。在中断请求被响应后中断标志位ADC10IFG自动复位,或者可以软件清除中断标志位。五、ADC10
本文标题:第七讲-ADC10
链接地址:https://www.777doc.com/doc-4675933 .html