欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    Dsp 的adc转换模块.docx

    • 资源ID:3155989       资源大小:47.82KB        全文页数:19页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Dsp 的adc转换模块.docx

    Dsp 的adc转换模块 在现实世界中,许多量都是模拟量,例如电压、电流、温度、湿度、压力等信号;而在DAP等微控制器世界中,所有的量却都是数字量,那如何实现将现实世界的模拟量提供给DSP等微控制器呢?模/数转换器ADC模块就是连接现实世界和微控制器的桥梁,它可以将现实世界的模拟量转换成数字量,提供给控制器使用。本章将详细介绍X281x内部自带ADC模块的性能、特点及其工作方式,并从硬件和软件两方面的角度来探讨如何提高内部ADE二的采样精度。 13. 1 X281x内部的ADC模块 X281x内部的ADC模块是一个12位分辨率、具有流水线结构的模/数转换器,其结构框图如图13一I所示。从图13一1可以很清楚地看到,X281x的ADC模块一共具有16个采样通道,分成两组:一组为ADCINA0ADCINA7;另一组为ADCINB0ADCINB70. A组的采样通道使用采样保持器A,也就是图中的S/ H-A;B组的采样通道使用采样保持器B,也就是 图中的S/ H-B。 虽然ADC模块具有多个输人通道,但是它内部只有1个转换器,也就是说同一时刻只能对1路输人信号进行转换。当有多路信号需要转换时,ADC模块通过前端模拟多路复用器Analog MUX的控制,在同一时刻,只允许1路信号输入到ADC的转换器中。 如图13-2所示,假设现在对ADCINA0 , ADCINA2 , ADCINA3、ADCINA5这4路输人信号进行A/D转换,转换的顺序为ADCINA0 , ADCTNA3 , ADCINA2 , ADCINA5,则第1次Analog MUX中ADCINAO通道的开关闭合,ADCINAO信号输人至转换器中,转换的结果存放于结果寄存器ADCRESULTO中;第2次Analog MUX中ADCINA3通道的开关闭合,ADCINA3信号输人至转换器中,转换的结果存放于结果寄存器ADCRESUI."I'I中;第3次Analog MUX中ADCINA2通道的开关闭合,ADCINA2信号输人至转换器件,转换的结果存放于结果寄存器ADCRESULT2中;第4次Analog MUX中ATOCINA5通道的开关闭合,ADCINA5信号输人至转换器中,转换的结果存放于结果寄存器ADCRESUlT3中。至此,完成一个序列的转换。可见,同一时刻,ADC模块只能对1个通道的信号进行转换。 上面的例子中是对4个通道进行采样并转换,转换的顺序为ADCINAO , ADCINA3 , ADCINA2,ADCINAS,那ADC模块是如何来实现预定的转换顺序呢?换句话说,如何才能让ADC按照用户指定的顺序对各个通道进行采样并转换呢?如图13-2所示,ADC模块内部具有自动序列发生器,用户可以通过编程为序列发生器指定需要转换的通道顺序。这里,序列发生器中第1个通道为ADCINA0,然后是ADCINA3,ADCINA2和A DCINA 5,一启动转换,ADC便按照序列发生器中通道的顺序对指定的输人信号进行转换。 从图13-1可以看到,X281x的ADC模块具有2个8状态的序列发生器:SEQ1和SEQ2。这2个序列发生器分别对应于2组采样通道:A组通道ADCINA0ADCINA7对应于序列发生器SEQI,而B组通道ADCINB0ADCINB7对应于序列发生器SEQ2。此时,ADC工作于2个独立的8通道模块。当ADC级联成一个16通道的模块时,SEQ1和SEQ2也级联成一个16状态的序列发生器SEQ。对于每个序列发生器,一旦指定的序列转换结束,已选择采样的通道值就会被保存到各个通道的结果寄存器中。对应于16个信号输人通道,X281x的ADC模块总共有16个结果寄存器ADCRESULT0-ADCRESULT15. 13.1.1 ADC模块的特点 X281X内部自带ADC模块的特点如下 共有16个模拟量输人引脚,将这16个输人引脚分成了2组:A组的引脚为ADCINAOADCINA7,B组的引脚为ADGINB0-ADCINB7. 具有12位的ADC内核,内置有2个采样保持器S/H-A和S/ H-B。从前面的学习可以知道,引脚ADCINA0- ADCINA7对应于采样保持器S/H-A,引脚ADCINB0 -ADCINB7对应于采样保持器S/H-B. ADC模块的时钟频率最高可配置为25 MHz,采样频率最高为12. 5 MSPS,也就是说每秒最高能完成12. 5个一百万次的采样。 Arc模块的自动序列发生器可以按2个独立的8状态序列发生器( SEQ1和SEQ2 )来运行,也可以按一个16状态的序列发生器(SEQ)来运行。不管是SEQ1 , SEQ2或者是级联后的SEQ,每个序列发生器都允许系统对同一个通道进行多次采样,也就是说允许用户执行过采样的算法。如图13一3所示,8状态的序列发生器SEQ1中先对通道ADCINA0连续采样3次,然后再对ADCINA1通道连续采样3次,最后对ADCINA2通道连续采样2次。以ADCINA0为例,3次采样结果的平均值肯定要比单次采样结果的精度来得高。 A DC模拟输人的范围为03 V。值得注意的是,ADC采样端口的最高输人电压为3V,实际设计中,通常需要考虑到余量,因此一般输人最大值设计在3V的80%左右,也就是 5 V。如果输人的电压过高,如超过3 V,或者输人的电压为负电压,都会烧毁DSP,因此,通常需要将采样输人的信号先经过调理电路进行调整,使其输人电压范围在A DC正常工作范围之内。例如输人的电压值范围为O-X.X大于3v,则可以通过分压电路,使输人电压的最大值小于3V;或者输人的电压范围为一X -Y,则可以将电压整体抬高X,使其电压范围变为0 - (X十Y),然后再通过其他的方式,使得电压最大值小于3V。如果将调整前的信号称为原始信号,而将调整后的信号称为调整信号,DSP采样得到的是调整信号的值,但是最后可以在DSP程序中通过原始信号和调整信号的关系来还原原始输人信号的值。 为了保险起见,在输人信号(如果经过调理电路,则为调整信号)进DSP的ADC端口时,最好加一个如图13一q所示的钳位电路。图中采用了一个双二极管,如英飞凌公司的BAT68 -04。当输人电压超过3. 3 V时,二极管D1导通,ADC输人引脚上的电平变为3. 3 V ;当输人电压为负电压时,二极管D2导通,ADC输人引脚上的电平变为0,因此这个电路能够将ADC输出引脚上的电平稳定在0 3. 3 V,从而保护了A D;输人端口。这里大家可能会有疑问,不是说A/D端口的输人电压是03 V吗,怎么图13-4中设计的高电压是3. 3 V呢?这是从工程设计的实际情况出发,选择最容易获得并且接近的电压,因为nsP的工作电压就是3. 3 v和工.8v,所以选择3. 3 v . ADC模块对一个序列的通道开始转换必须需要有一个启动信号,或者说是一个触发信号。当启动信号到来时,相应的序列发生器就开始对其内部预先指定的通道进行转换。当ADC工作于独立的8状态序列发生器SEQ1,SEQ2和工作一个级联的16状态序列发生器时,启动ADC转换的方式稍有不同,具体如表所列。软件立即启动,是指通过程序对ADC控制寄存器ADCTRL2的第I3位,即St)C SEQ1位置1,来立即启动ADC转换。EVA或者EVB的多种事件启动方式是指用通用定时器的周期匹配、比较匹配和下溢匹配这3个事件来启动ADC转换,而究竞采用哪个事件来启动ADC转换,取决于事件管理器寄存器UPT-C<)NA的位丁1 TtIADC , T2TOADC或者t.TPTC;t)N I3的位T3TUADC . "r4TAIC。外部引脚启动方式是指当引脚XINT2_ AICSt)C从低电平转为高电平时,启动A DC转换,当然首先需要将该引脚设置为功能引脚,而不是通用的数字I/t)口。从表13一1可以看出,序列发生器SEQ的启动方式其实就是综合了序列发生器SEQI和SEQ2的启动方式。 ADC模块共有16个结果寄存器A D-CRESUI.TO - ADCRESULTI5用来保存转换的数值。每个结果寄存器都是16位,而X281x的ADC是12位,也就是说转换后的数字值最高只有12位,那这个12位的值是如何放在16位的结果寄存器中的呢?如图13一6所示,ADC;转换的数值在结果寄存器中是左对齐,结果寄存器的高12位用于存放转换结果,而低4位被忽略。接下来,一起来推导输人的模拟量和转换后的数字量之间的关系。 从图13一5可知,当模拟输人电压为3 V时,ADC结果寄存器的高12位均为1,而低4位均为0,则此时结果寄存器中的数字量是OxFFFO,也就是“520。当模拟输人电压为O V时,ADC结果寄存器中的数字量为0。由于ADC转换的特性是线性关系的,如图13一6所示,所以不难得到:ADResult=(VoltInput一ADCL>/3. 0 X 65 520 (13一1)式中,ADResult是结果寄存器中的数字量,Voltlnput是模拟电压输人值,ADCLC)是ADC转换的参考电平,实际使用时,通常将其与AGND连在一起,因此此时ADCL的值为O. 还有一种关系表达式,其结果是一样的,只是表达的方法不一样。由于ADC结果寄存器中的数字量位于高12位,低y位是无效的,那是不是可以将ADResult中的值先右移4位,然后再进行计算。同样的,当输人的电压为v时,ADResult右移4位后,值为OxOFFF,也就是4 095。当输人的电压为。V时,结果寄存器的值依然为0。根据图13一6所示的线性转换关系,则: ( ADResult>>4) _ (Voltlnput一ADCLO)/3. 0 X 4 095 (13-2) 在实际应用中,通常都是通过读取ADC结果寄存器中的值,然后求得实际输人的模拟电压值。 下面来详细分析ADC模块的时钟ADCLK。图13一7中的CLKIN是指外部输人的时钟,这里也就是外部晶振所产生的时钟。假设外部晶振的频率为SCCLK Hz,通过前面的介绍可以知道,通常选用的是30 MHz的晶振。外部晶振经过PLI_模块产生GPU时钟SY-SCLKUT,如果PL.T.模块的值为m,则有: SYSCLKUT=OSCGLK*m./ 2(。,!=0)SYSCLKUUT = USCCLK(m = 0) (13-3) 然后,CPU时钟信号经过高速时钟预定标器HISPCP之后,生成高速外设时钟H SP-CLK.假设HISPCP寄存器的值为n,则有: I-I SPCL.K-HSPCIK=SYSCLKOUT/2n(n!SYSCLKC)UT(n = 0)= 0) (13一4) 如果外设时钟控制寄存器PCLKCR的第3位,也就是位ADCENCLK置位,则HSPCLK输人到ADC模块:否则,HSPCLK不向ADC模块提供时钟,ADC也就不能正常工作。ADC控制寄存器ADCTRL3的第0-3位,也就是功能位ADCL.KPS,可以对H SPCLK进行分频。此外,ADC控制寄存器ADCTRLI的CPS位还可以提供一个2分频,因此,可以得到ADC模块的时钟ADCL.K为: ADCLK = HSPCLK/(CP5+1)(ADCLKPS=0)ADCI_K =i-iSPCLK2 X ADCLKPS X COPS+1)(ADCLKPS!= 0) (13一5) X2$lx的A DC时钟频率最高为25 MHz,因此在设置ADC的时钟ADCLK时,不能超过25 MHz。在设置完ADCLK之后,需要选定采样窗口的大小。首先,什么是采样窗口?对于S/ I-I电路来说,采样窗口其实就是采样时间,或者说是采样脉冲的宽度。为了能够更好地理解采样窗口的概念,这里再来补充介绍一下ADC的模拟输人阻抗模型,如图13 -8所示。 图1-8中,CI,是采样电容,Ra,、是多路复)_日器MUX的导通电阻,C是和ADCIN引脚连接的寄生电容。对于每一次采样,采样脉冲为高电平,采样/保持开关S在t,时间是闭合的,在这段时间内,采样电容Ln、在不断充电,直至电容上的电压等于ADC;IN引脚上的电压。这里,t、就是采样窗日的时间,很显然,采样窗日必须保证采样电容能有足够的时问来使其电压等于外部输人的模拟电压,否则采样就会不正确。从图I3-7可以看出,采样窗口的大小f-#-1八I)C控制寄存器AI)CI'RLI的位ACQ_I'S和ADC:CLK有关,假设ADC的每个时钟脉冲的时间为TRam则采样时间t, _(八C'.Q_I'S+ I ) X T,.k o 下面以两个实例来说明ADC时钟的产生过程,如表13一2所列。 如果不是实际的需要,请不要把ADCC.LK设置为最高的频率,把AC'.Q_ I'S设置为。,除非在ADC模块的输人引脚具有合适的信号环境电路,换句话说除非A DC:的输人信号比较理想。为了获取准确和稳定的ADC转换值,通常需要设置较低的时钟频率和较大的采样窗f-i o ADC的时钟频率、转换时间和采样频率是3个比较容易混淆的概念。ADC的时钟频率就是每秒有多少个时钟脉冲的意思,它是ADC模块运行的基础,正如上面所介绍的,已由系统时钟经过很多环节分频后得到,它取决于外部的时钟输人和各个环节的倍频或者分频的系数。而转换时间是指ADC模块完成一个通道或者一个序列的转换所需要的时间,很显然,转换时间是由ADC勺时钟频率来决定的。采样频率是指ADC:模块每秒能够完成多少次的采样,采样频率取决于启动ADC的频率。启动A I)C的方式有很多,如利用软件直接启动,利用事件管理器的某些事件,或者是利用外部引脚来启动。启动A DC的频率才是A I)C的采样频率,如果每隔I ms启动一次ADC,那么ADC的采样频率就为I kHzo ADC的采样频率和ADC时钟或者ADC转换时间都没有什么关系,采样频率应该根据采样定理和T程的实际需要来确定。在x2$IX中,ADc的采样频率最高为12. 5 MSPS . 13. 2 ADC模块的工作方式 下面一起来探讨X28I x内部的nsla是如何工作,或者说可以如何工作。先来回顾一下前面所学的知识,X281x的Anc:共有Is个引脚,分成了两组;一组为AnCIAO AnCrNA7,使用采样保持器S/ H一A,对应于序列发生器SEQ ;另一组为AncmsoAncms7,使用采样保持器S/ H一B,对应于序列发生器SEQ2。序列发生器的作用是为需要转换的通道安排转换的顺序,就是来确定先采哪个通道,后采哪个通道,它的状态指示了能够完成模/数转换通道的个数。AI)f.:模块既支持2个8状态序列发生器SEQl和SEQ2分开独立工作,此时称为双序列发生器方式;也支持序列发生器SEQ1和SEQ2级联成一个is状态序列发生器SEQ来I几作,此时称为单序列发生器方式,或者称为级联方式。 无论ADC作于双序列发生器方式,还是级联的单序列发生器方式,ADC都可以对一个序列多个通道的转换进行排序。每当ADC收到一个开始转换的请求,便能自动完成这个序列所有通道的转换。转换过程中,可以通过模拟复用器Analog MUX选择序列发生器中指定的通道进行转换,转换后的结果保存到相应的结果寄存器中。 X281的is个通道可以通过编程为序列发生器中需要转换的通道安排顺序,这个功能就需要通过AI)C,输人通道选择序列控制寄存器ADCCHSELSEQx( x=1, 2 , 3 , )来实现。每个输人通断选择序列控制寄存器都是1fi位的,被分成了4个功能位CN V xx,每个功能位占据寄存器的4个位,如图13一9所示。在ADC转换过程中,当前CC)NVxx的位定义了要进行转换的引脚。 当ADC;一作于双序列发生器模式下,序列发生器SEQl使用通道选择控制寄存器AD-CC.HSELSEQI和ADC'.C'HSELSEQ2,可选择的通道为ADCINAO-.DtINA7;序列发生器EQ2使用通道选择控制寄存器ADCC.'HSELSEQ3和ADCC HSELSEQ9,可选择的通道为ADCI ISO-ADCIN#37。当ADC工作于单序列发生器模式下,序列发生器SEQ使用通道选择控制寄存器ADCrC:IISELSEQI-ADCCHSEI_SEQ4,可选择的通道为ADC所有的I6个通道。表13一3为各个序列发生器所对应的寄存器和可选用的通道情况。 当ADC对外面的输入信号进行采样时,可以选择工作于顺序采样或者并发采样两种模式,这是针对引脚采样的顺序而言的。顺序采样,就是按照序列发生器内的通道顺序一个通道、一个通道地进行采样,如ADCINAO . ADCINAI . w , ADCINA7 , ADCINI30 , ADCINI31、一、ADCINB7。并发采样,是一对通道、一对通道地采样,即ADCINAO和ADCiNI30一起,ADCI-NAi和I ADCINI31一起,- , ADCINA?和ADt:INB7一起。 在顺序采样模式下,通道选择控制寄存器中CNVxx的4位均用来定义输入引脚。最高位为0时,说明采样的是A组;最高位为1时,说明采样的是B组;而低3位定义的是偏移量,决定了某一组内的某个特定引脚。如果CNVxx的数值是OlOlb,则说明选择的输人通道是ADCINAS;如果CNVxx的数值是1011b,则说明选择的输人通道是ADCINI;3 0 在并发采样模式下,因为是成对进行采样,所以CNVxx的最高位被舍弃,只有低3位的数据有效。如果CNVxx的数值为。101b,则采样保持器S/ I-I一A对通道ADCINAS进行采样,紧接着s/ H一I3对通道ADCINI35进行采样;如果CNVxx的数值为lOllb,则采样保持器S/ H一A对通道ADCINA3进行采样,紧接着S/ H一B对通道ADCINI33进行采样。 X281x的ADC还有一个最大转换通道寄存器ADCMAXCNV,这个寄存器的值决定了一个采样序列所要进行转换的通道总数,其结构如图13一10所示。当ADC模块工作于双序列发生器模式时,SEQ1使用位MAXC<)NV1 _0 - MAXCNV1 _2,即ADCMAXC<)NV 0:2;SEQ2使用位MAXCNV2_0一MAXCNV2_2,即ADCMAXCN V :6。当ADC模块工作于级联模式h' SEQ使X11位MAXCN V 1 _ 0一MAXCNV1 _3,即ADCMAXCNVC:so最大通道数等于(M1hXC:ONVn1),如果现在某个序列发生器要转换6个通道,则相应的MAXC<)NVn应该取值为50 是不是看得有点晕头转向,一会是顺序采样、并发采样,一会又是双序列发生器模式、级联模式,是不是很容易混淆?其实前者讲的是ADC的采样方式,而后者讲的是序列发生器的工作模式在双序列发生器模式下可以采用顺序采样或者并发采样,在级联模式下也可以采用顺序采样或者并发采样。下面将结合实例,详细介绍ADC模块的这4种Z.作方式。 13. 2. 1双序列发生器模式下顺序采样 假设需要对ADCINAO-ADCINA7 ,ADCINBO-ADGINB7这16路通道进行采样,ADC模块T:作于双序列发生器模式,并采用顺序采样。 由于ADC工作于双序列发生器模式,所以会用到序列发生器SEQ1,SEQ2。最大转换通道寄存器将用到位MAXCONVI和MAXCONVZ,两个位的值均为7。由于是顺序采样,必须对16个通道每一个通道都要进行排序,SEQ1将用到通道选择控制寄存器ADCCI-ISEI_SEQ1,ADCCHSELSEQ2, SEQ2将用到通道选择控制寄存器ADCCI-ISEI_SEQ3, AD-CCHSEI_SEQ4,其通道分配情况如表T3-4所列。序列发生器内通道的选择情况如图13一11所示。 下面来看看双序列发生器模式下顺序采样的初始化代码该怎么来写: AdcAegs.ADCTRL1.bit.SEQ_ CASC=0;/选择tl列发生器模式 AdcRegs.ADCTRL3.bi七.SMODESEL=0。;/选择顺序采样模式 AdcRegs.MAXTCONV.all二0x0077;/每个序列发生器最大采样通道数为8,总共可采样16通道 刀SEQ1将用到ADCCHSEL5EQI,ADCCHSELSEQ2,SEQ2将用到ADCCHSELSEQ3,ADCCHSELSEQ4 AdcRegs.CHSEISEQ1.bit.CONV00二0x0;/采样ADGINAfl通道 AdcRegs.CHSELSEQ1.bit.CONV01=0x1;/采样ADCiNAI通道 AdcRegs.CHSELSEQ1.bit.CONV02 = 0x2;刀采样ADCTNA2通道 AdcRegs.CHSELSEQ1.bit.CONV03 = 0x3;/采样ADCINA3通道 AdcRegs.CHSELSEQ2.bit.CONV04=0x4;/采样ADCINA9通道 AdcRegs.CHSELSEQ2.bit.CONV05二0x5;/采样ADCINA5通道 AdcRegs.CHSELSEQ2.bit.CONVO二0x6;刀采样ADCTNA6通道 AdcRegs.CHSELSEQ2.bit.CONV07=0x7 ;刀采样ADCTNA7通道 AdcRegs.CHSELSEQ3.bit.CONV08=0x8;刀采样ADCINH。通道 AdcRegs.CHSELSEQ3.bit.CONV09 = 0x9;刀采样AIaCINBl通道 AdcRegs.CHSELSEQ3.bit.CONV10二OxA;/采样ALINB2通道 AdcRegs.CHSELSEQ3.bit.CONV11=OxB;刀采样ADCINB3通道 AdcRegs.CHSELSEQ4.bi七.CONV12 = OxC;刀采样肛工NB4通道 AdcRegs.CHSELSEQ4.bit.CONV13=OxD;/采样ADCIN85通道 RdcReg,s. CHSELS叩4.bit. CONU14 = OxE; RdcRcg.CHSELS黝4.bit.CONV1=xF; /采样ADCINH&通道 /采样ADCIIB7通道 如果序列发生器5EQ1和5EQ2都已经完成了转换,转换结果如图13一12所示。 在双序列发生器模式下,SEQ1和SEQ2是独立工作的,而ADC模块只有一个转换器,就有可能出现SEQ1和SEQ2同时向转换器发出转换请求的情况,这时转换器应该怎样响应呢?前面学习中断时,知道各个中断是有优先级的,这里一也一样,两个序列发生器在转换器那里也是有优先级的,SEQ1的优先级高于SEQ2的优先级。当SEQI和SEQ2同时产生转换请求时,A I)C的转换器先响应SEQ1的请求,再响应SEQ2的。如果ADC在转换SEQ1中的序列时,SEQ2的请求在等待状态,这时SEQ1又产生了一个转换请求,则当ADC完成转换后,仍然先响应SEQ1的转换请求,SEQ2继续等待。 前面的例子是对lfi个通道一起采样,可能很多问题还没有办法看清楚,下面再来看一个实例。假设需要对ADCINAO, ADCINAI, ADCINA2, ADCINB3, ADCINB4, ADCINB5,ADCINI-37这7路通道进行采样,ADC模块工作于双序列发生器模式,并采用顺序采样。 和上一个例子一样,由于ADC工作于双序列发生器模式,所以会用到序列发生器SEQ1,SEQ2。最大转换通道寄存器将用到位MAXCONVl和MAXCONV2,这里由于A组转换的通道有3路,I3组转换的通道有4路,所以MAXCt)NV1的值为2, MAXCONV2的值为30SEQ1将用到通道选择控制寄存器ADCCHSELSEQI , SEQ2将用到通道选择控制寄存器AD-CCHSELSEQ3,其通道分配情况如表13一5所列。序列发生器内通道的选择情况如图13一13所示。 此处ADC模块的初始化代码如下: AdcRegs. A01. bit. SEQ_CASC = 0;刀选择双序列发生器模式 AdcRegs.ADCTRL3.bit.SMODE_SEL =。;刀选择顺序采样模式 AdcRegs. IAX,COPIV. all=0x0032; /A组采样通道数为3,13组采样通道数为4,共7路通道需要采样 刀SEQl将用到ADCCHSETSEQI,SEQ2将用到ADCCHSELSEQ3 AdcRegs.CHSELSEQ1.bit.CONV000x0;/采样ADC工NAO通道 AdcRegs. CHSE#SEQl. bit. CONV01=0x3. ;/采样ADCINA3.通道 AdcRegs.CHSELSEQ1.bit.CONV02“0x2;/采样ADCINA2通道 AdcRegs.CHSEL$LQ3.bit.CONV08二OxD;/采样ADC工NB3通道 AdcRegs.CHSELSEQ3.bi七.CONV09二OxC;/采样ADCINH4通道 AdcRegs. CHSELSEQ3. bit. CONV3.0= OxD;/采样ADCINB5通道 AdcRegs.CHSELSEQ3.bit.CONV1l = OxF;/采样ADCINH'7通道 如果序列发生器SEQ1和SEQ2都已经完成了转换,转 换结果如图13一1所示。 13. 2. 2双序列发生器模式下并发采样 假设需要对ADCIN Ao ADCINA7 , ADCINBa- ADCIN137这is路通道进行采样,ADC:模块工作于双序列发生器模式,并采用并发采样。 由于ADC:工作于双序列发生器模式,所以会用到序列发生器SEQ l , SEQ2。最大转换通道寄存器将用到位MAXCUNVI和MAXCUNV2,两个位的值均为3。这里值得注意的是,由于并发采样是一对通道、一对通道地采样,如采样ADCINAO ,也必定会采样ADC;INBO ,所以A组和B组采样的通道数是一样的,也就是MAXCC?N V 1和MAXCUNV2的值必须一样,而且只需要对一对通道中的任何一个通道进行排序,所以通道选择控制寄存器使用的数量也将是顺序采样时的一半。SEQ1将用到通道选择控制寄存器ADCCI ISELSEQI , SEQ2将用到通道选择控制寄存器ADCCHSELSEQ3,其通道分配情况如表13一G所列。序列发生器内通道的选择情况如图1一15所示。 此时ADC模块的初始化代码如下: AdcRegs.P.DCTRL工·bit.SEQCASC =。;/选择双序列发生器模式 AdeRegs.ADCTRL3.bit.SMODE-SEL = 1;/选择并发采样模式 AdcRegs.川X一 C:ONV. all = 0x0033; 刀由于并发采样是一对通道、一对通道采样,采16个通道,总共只需设置8个通道 刀sQl和sQa各设置4个通道,SEQ1将用到ADCCHSEL5EQI,SEQ2将用到SDCCHSELSEQ3 AdcRegs.CHSELSEQI.bit.CONU00二0x0;/采样ADCINAO和ADCINBO AdcRegs.CHSELSEQI.bit.CONV01=0x1;/采样ADCINAI和ADC工如工 AdcRegs.CHSELSEQ1.bit.CONV02二0x2 ;/采样ADCINA2和ADCINB2 AdcBegs.CHSELSEQ1.bit.CONV03 = 0x3;/采样ADCINA3和ADCINB3 AdcRegs.CHSEL5EQ3.bit.CONY08=OxC;/采样ADCINA4和ADCINH4 AdcRegs.CHSELSEQ3.bit.CONV09 = OxD;/采样肛工NA5和ADC工NB5 AdcRegs. CHSELSEQ3. bit. CONl10=OxE;/采样ADCINA6和ADC工NB6 AdcRegs.CHSELSEQ3.bit.CONV11=OxF;/采样ADCINA7和肛工NB7 13. 2. 3级联模式下的顺序采样 这里,似设需要对ADCI V AO一ADCINA7ADCINI30 - ADCINI37这i6路通道进行采样,ADC模块工作于级联模式,并采用顺序采样。 由于ADC工作于级联模式,所以此时序列发生器SEQ 1和SEQ2级联成了一个16状态的序列发生器SEQ。如图13一10所示,最大转换通道寄存器用到的功能位MAXCNV1也由原来的3位数据位成了I位,由于需要对16路通道进行采样,所以MAXC:NV 1的值为15e由于采样方式是顺序采样,所以必须对16个通道中的每一个通道都要进行排序,SEQ将用到通道选择控制寄存器ADC".C:HSELSEQI、ADCC HSELSEQ2、ADCCI-I-SEL.SEQ3 ADCCHSELSEQ4,它们的通道分配情况如表13一7所列。序列发生器内通道的选择情况如图13一17所示。 此时AhC模块的初始化代码如下: AdcRegs.ADCTRL1.bit.SEQ-CASC二1;刀选择级联模式 AdcRegs.ADC'RL3.bit.SMODESEL二。;刀选择顺序采样模式 AdcRegs.MAX_CANV.aII = Ox000F; /序列发生器最大采样通道数为16,一次采1个通道,总共可采16通道 /sEQ将用到ADCCHSELSEQI,ADCCHSELSEQ2,ADCCHSELSEQ3,ADCCHSELSEQ9 AdcRegs.CHSELSEQ1.bit.CONV00二0x0;/采样AI3CINA0通道 AdcRecs. CHSELSEQl, bit. CONl01 = 0x1;/采样AI3CINA1通道 AdcRegs.CHSELSEQ1.bit.C4NY02=0x2;刀采样ADCINA2通道 AdcRegs.CHSELSEQ工.bi七.CONV03 = 0x3 ;/采样八刀CINA3通道 AdcRegs. CHSS劝2, bit. CONV04二0x4; AdcRegs. CHSEISEQ2. bit. CONV05=0x5; AdcRegs. CHSEE.SEQ2. bit. CONV06 = 0x6; AdcRegs.CHSEISEQ2.bit.CONV07=0x7; AdcRegs. CHSEI.SEQ3. bit, CflNV08二0x8; AdcRegs.CHSEISEQ3.bit.CONV09二OxS; AdeRegs.CHSELSEQ3.bit.CONV10二OxA; AdcRegs.CHSELSEQ3.bit.CONV11二pxB; AdcRegs.CHSELSEQ4.bit.CONV12=OxC; AdcRegs.CHSELSEQ4.bit.CONV13 = OxD; AdcRegs.CHSELSEQ4.bit. CONV14 = OxE; AdcRegs. CHSELSEQI. bit. CONV15”OxF; /采样ADC工NA4通道 /采样ADCINA5通道 刀采样ADCTNA6通道 /采样ADCINA7通道 /采样AczNBo通道 /采样ADCINBI通道 刀采样ADCINB2通道 刀采样ADCINB3通道 刀采样ADGINB4通道 刀采样ADCINBS通道 /采样AIE;INB6通道 刀采样ABCINB7通道 有没有发现,双序列发生器模式和级联模式顺序采样16路通道的初始化程序区别仅仅在于对MAXCNV的设置上,但事实上两种T作模式的区别肯定不止这个,为了能够更清楚地看清两种工作模式的区别,下面进行分析。仍然和前面一样,假设需要对ADCINAO. ADCINAI, ADCINA2,ADCINB3、ADCINI34、ADCIiBS、ADCINB7这7路通道进行采样,ADC模块工作于级联模式,并采用顺序采样。 由于A DC工作于级联模式,所以此时序列发生器SEQl和SEQ2级联成了一个16状态的序列发生器SEQ。由于需要对7路通道进行采样,所以MAXCONVI的值为6。由于采样方式是顺序采样,所以必须对这6个通道一一进行排序,SEQ将用到通道选择控制寄存器ADCCHSEI_SEQI , AD-CCHSELSEQ2,其通道分配情况如表13一8所列。序列发生器内通道的选择情况如图13一19所示。 此时anc模块的初始化程序为: AdcRegs.ADCTRL1.bit.SEQ CASC=1; AdcRegs. ADCT'RL3. bit. SMODESEL=0; AdcRegs.MAX_CONV.11“0x0006; /序列发生器最大采样通道数为7,一次采 /SE"将用到ADCCHSELSEQI,ADCCHSELSE"2 AdcRegs.CHSELSE"1.bit.CONV00二0x0; AdcRegs.CHSELSEQI.bit.CONV01二0x1; AdcRegs.CHSELSE"2.bit.CONV02=0x2; AdcRegs.CHSELSE"1 .bit.CONV03二OxH; AdcRegs. CHSE3JSE"2. bit. CDNVOg,OxC; AdcRegs. CHSELSE"2. bit. CON705=OxD; AdcRegs.CHSELSE"2.bit.CONV06二OxF; /选择级联模式 /选择顺序采样模式 1个通道,总共可采7通道 /采样ADCINAO通道 /采样ADCINAI通道 /采样AI3CINA2通道 /采样ABCINB3通道 刀采样ADCINH4通道 刀采样ADCINBS通道 /采样ADCINB7通道 通过这个例子可以看到,双序列发生器模式下顺序采样和级联模式下顺序采样的区别除了对最大转换通道寄存器的设置不同外,最大的区别在于通道选择控制寄存器的使用上。在双序列发生器模式下,A组的通道只能选择ADCCHSELSEQI和ADCCHSELSEQ2 , B组的通道只能选择ADCCHSELSEQ3和ADCCHSEI_SEQ4;但是在级联模式下,不管A组通道或者B组通道,都能选择A D-CCHSEI_SEQ1- ADCCHSEI_SEQ4中的任意一个通道选择控制寄存器。当然,这些区别究其本质,主要是由于双序列发生器模式下使用的是2个8状态的序列发生器SEQ1和SEQ2,而级联模式下使用的序列发生器是16状态的SEQ o 13. 2. 4级联模式下的并发采样 假设需要对ADCIN AO - ADCINA7 , ADCINBO- ADCI?IB7这16路通道进行采样,ADC模块工作于级联模式,并采用并发采样。 山于ADC工作于级联模式,所以SEQ 1和SEQ2级联成了16状态的SEQ o因为并发采样是一对通道、一对通道的采样,如采样ADCINA(3,也必定会采样ADCIlI30,所以A组和I3组采样的通道数必定是一样

    注意事项

    本文(Dsp 的adc转换模块.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开