第一部分
1、模拟地和数字地分开布线,不使用的ADC通道接地,模拟地和数字地不需要一点连接,因为2812在内部将数字地和模拟地连接在一起了。
2、模拟电源和数字电源最好分开,但也可以使用一个,本人就是使用的一个LM1117-3.3V电源,但模拟电源和数字电源单独走线和进行滤波。
3、模拟电源和地的布线不要和数字部分交叉。
4、虽然2812的ADC采样速率最快可达到25M,但速度高的时候,采样值一致性非常差,所以在满足设计要求的条件下,采用尽量低一些的采样频率,本人采用的是500K。
5、程序中尽量减少通道的切换,因为通道切换时由于保持电容的作用,会引起误差。切换通道时,可将切换后第一个采样数据丢弃不用。
6、可使用过采样提高精度。
7、本人使用的是DSP内部的基准,还是可以的。
8、F2812的ADC使用时一般需要进行GAIN误差和OFFSET误差的校准。
第二部分
按照一次转换通道个数分为:同步采样模式(Simultaneous sampling)、顺序采样模式(sequential sampling),
1. 同步工作模式:对AB两组中相同偏移量的2个通道同时转换。
顺寻工作模式:转换器对AB两组中的通道按照排序器中定义的排列顺寻转换。
2. 双排序器、级联排序器
双排序器:SEQ1、SEQ2是两个排序器。SEQ1、SEQ2独立工作。可以让SEQ1工作在同步模式下,也可以让SEQ1工作在顺序模式下。SEQ2同样如此。SEQ1工作在同步模式下,对ADCINA和ADCNIB相同偏移通道同步采样,结果放在Result0,Result1中。
级联排序器:
两个排序器合二为一,组成一个排序器,SEQ由16个section构成。CONV00--CONV15;单排续器可以使用EVA、EVB、软件、外部引脚GPIO/XINT2_ADCSOC引脚触发。
双排序器:
SEQ1由8个section构成:CONV00-CONV07;SEQ2由8个section构成:CONV08-CONV15, 相当于两个独立的排序器,SEQ1排序器启动由EVA启动;SEQ2排序器由EVB启动。
通道转换顺序如何确定?
CONV00:中放置的通道编号对应的通道第一个被转换,紧接着CONV01中放置的通道编号对应的通道被转换,--》CONV02中放置的通道编号 的通道被转换。
不论是在双排序,还是单排序,因为SEQ1级别比SEQ2级别高,首先转换完SEQ1的section放置通道编号,然后转换SEQ2中放置的通道编号。
3.同步模式和顺序模式的区别在于:
转换结果在结果寄存器中的放置不同。
同步模式,不论是单排序器还是级联排序器,结果寄存器中的数存放顺序是:RESULT0中存放ADCINA0,RESULT1中存放ADCINB0。
顺序工作模式:RESULT0中存放ADCINA0数值,RESULT1中存放ADCINA1数值....
顺序排序,result0中放置conv00中通道的结果,result1中放置conv01中通道的结果,以此类推...
ADC转换之前需要配置寄存器,设置转换的通道个数、对那些通道转换、转换次序。
EX:转换的通道个数:AdcRegs.ADCMAXCONV.all = 0x0001; //转换两个通道
EX:要进行转换的通道、转换次序:
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // Setup ADCINA3 as 1st SEQ1 conv. 通道3第一个被转换
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv. 接着通道2被转换
4.转换如何开始?
接收到SOC信号之后,ADCASEQSR的SEQ_CNTR位从AdcRegs.ADCMAXCONV中获得需要转换的通道个数,完成一个减小1;直到SEQ_CNTR中的数字变为0.
5.转换结束了会发生什么?
如果ADCTRL1的CONT_RUN是1,转换重新开始,ADCASEQSR的SEQ_CNTR位从AdcRegs.ADCMAXCONV中获得需要转换的通道个数,....
问题是:必须在第二个转换开始之前,从结果寄存器中取走第一次转换的结果;防止第一次转换结果被覆盖。
如果ADCTRL1的CONT_RUN是0,转换停止,SEQ_CNTR保持0.
问题是:排序指针停留在最后一个section,必须使用ADCTRL2的RST_SEQ2或者RST_SEQ1位复位排序器。
ADCASEQSR的SEQ_CNTR位在每次变为0,中断标志为都会置位,用户可以在中断响应函数中手动对ADCTRL2的RST_SEQ2或者RST_SEQ1位复位。
转换的最大通道数
级联排序器同步工作模式:(级联同步) 0x0007
级联排续器顺序工作模式:(级联顺序) 0x000F
双排序器同步工作模式:(双排序器同步) 0x0033
双排序器顺序工作模式:(双排序顺序) 0x0007
双排序器or单排续器影响MAXCONV中设置的数值。
双排序器中的数值=要转换的通道数/2-1
单排续器最大转换通道数值:要转换的通道数-1
单排续器还是双排序器,在ADC控制寄存器1中SEQ_CASC位设置。
同步工作模式还是顺序工作模式在ADC控制寄存器3中的SMODE SEL位设置。默认状况下,ADC工作在双排序器、顺序工作模式。
转换结果:取决于同步模式or顺序模式。
双排序器工作在同步模式下,SEQ1的MAXCONV中存放的数值是0x0033(110011),SEQ1的转换最大通道数是(4-1)对,SEQ2转换的最大通道数是(4-1)对。