一、问题
最近在使用灵动微的MM32,当用多路ADC-DMA时,出现了一些问题,所以在此记录一下
总结下来,处理了下面几个问题(这里的问题是拿到最新的SDK包,参考example没办法解决的)
多路通道对应的DMA内存不明确,例如CH0对应DMA的第二个字节,CH1却对应第一字节
多个通道数值接近
二、解决方法
使用任意通道
<p>1 ADC_ANY_NUM_Config(ADC1,3);//一共4通道</p><p>2 ADC1->ANYCR |= ADC_ANY_CR_CHANY_MDEN;//开启任意通道</p><p> </p><p>3<span style="white-space:pre"> </span>///设置通道的顺序</p><p>4 ADC_ANY_CH_Config(ADC1,0,ADC_Channel_0);</p><p>5 ADC_ANY_CH_Config(ADC1,1,ADC_Channel_1);</p><p>6 ADC_ANY_CH_Config(ADC1,2,ADC_Channel_2);</p><p>7 ADC_ANY_CH_Config(ADC1,3,ADC_Channel_Vrefint);</p>
这个问题,是因为引脚悬空导致了,举个例子,若PA1有确切电平, PA2 PA3
悬空,则PA2 PA3得到的数据会跟随PA1变化,只有一点点区别(细微差别)
|