本帖最后由 zhuyjgh 于 2011-8-15 10:34 编辑
不知道能不能说清楚~~
程序思路是这样,,我要采集四路模拟量,通道10、通道11、通道12、通道13,使用规则组16个,独立模式(DULMOD=0)、连续扫描方式(SCAN=1 CONT=1),但是采样顺序和次数需要交替改变。第一次(后称状态1)顺序为 通道10 12 13 13 13 13 13 13 11 11 11 11 11 11 10 12 第二次(后称状态2)顺序为 通道13 11 12 12 12 12 12 12 10 10 10 10 10 10 13 11 第三次重复第一次,然后依次交替。
使用DMA接收数据,建立一个二维数组,abc[2][1024] 分别接收状态1和状态2的数据。采用DMA中断 DMA数据量设为1024(16*64 ),想要的是规则组扫描64遍,DMA中断并重新配置规则组顺序,在扫描状态2 64遍,依次循环。
结果是状态2的数据出现错位,比较菜,有几点不解,需要大家帮忙~~
1:ADC应该怎么停止? 如果配置了连续扫描,我想让他立即停止可以吗,EXTRIG SWSTART SCAN CONT 这几个位应该怎么处理,如果在DMA来的时候将这几位全部清掉ADC会停止吗?如果停止了,下次再用SWSTART开启的时候,会从规则通组第一个开始转换码?还是在上次停掉的地方接着转换?
2:ADC校准的问题,STM32说在上电的时候最好校准一次ADC,是在芯片上电呢还是ADON置1的时候呢?如果是在ADON置1的时候,那在程序中如果清了ADON再置1的话不是都要校准啊~~
3:DMA的问题,DMA会占用系统总线,如果我频繁(一直在用)的使用DMA会不会影响程序的速度啊??会不会影响实时性啊?
暂时这么多,劳烦您看完了,,谢谢,希望知道的能给指点一二~~ |