STM32F103 ADC多通道检测必须要DMA吗?
STM32F103 ADC1的2个通道检测,不通过DMAADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
ad1=ADC_GetConversionValue(ADC1);
ad1=(ad1*3300)>>12;
systick_delay_ms(100);
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,2,ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
ad2=ADC_GetConversionValue(ADC1);
ad2=(ad2*3300)>>12;
systick_delay_ms(100);
想要的结果是ad1存放通道1的数据,ad2存放通道2的数据
实际运行:ad2里一下是通道1的数据,一下是通道2的数据??正确的程序应该怎么写?必须通过DMA来获取吗??
不一定,好用就好。 1、ADC不一定非得使用DMA;
2、2个ADC转换使用扫描模式即可;
3、楼主的代码貌似ADC初始化的一部分,其中转换数据的处理放初始化里没有意义,这个初始化函数只会执行一次。数据的处理应该放在在读取ADC转换值的函数中进行处理。
扫描方式ADC ST官方有代码可参考
wenyangzeng 发表于 2019-10-24 17:41
1、ADC不一定非得使用DAM;
2、2个ADC转换使用扫描模式即可;
3、楼主的代码貌似ADC初始化的一部分,其中转 ...
我参考下,谢谢您 不一定使用DMA 可以规则扫描 两个通道 也可以每个通道单独扫描 不一定啊,DMA只是方便更快的把数据存储传输 条条大路通罗马,只要符合应用需求就行。芯片可以满足查询转换方式,相比DMA传输方式,稍微占点资源而已。速度满足应用需要就可以了:) 另外代码中没看到转换模式的配置。如果手动改通道,要等到当前转换结束后,使ADC停止转换再手动切换通道
页:
[1]