打印
[应用相关]

STM32F030的ADC多通道DAM方式采样

[复制链接]
2603|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
309030106|  楼主 | 2016-3-28 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:
1、用ADC1的CH0、CH3、CH5共3个通道单次转换后通过DMA将数据寄存器中的转换后的值放在一个16位的数组中adc_convert_tbl[3]
转换方向是:upwoard
结果:adc_convert_tbl[0]中是ch0的数据、adc_convert_tbl[1]中是ch5中的数据、adc_convert_tbl[2]中是ch3的数据。即通道数据窜位。
将ADC_DMACmd(ADC1,ENABLE)放在ADCStartConversion()之后是正常的顺序即
adc_convert_tbl[0]中是ch0的数据、adc_convert_tbl[1]中是ch3的数据。
问:如何理解将ADC_DMACmd()放后面顺序就正确了?为什么会产生通道数据窜位?
2、在ADC的序列转换完成中断中或者DMA序列传输完成终断中改变选择的通道序列,即将原来的CH0、CH3、CH5改成CH1、CH3、CH5后,通道数据窜位,CH5跑到了adc_convert_tbl[1]中,CH3在adc_convert_tbl[2]中、而adc_convert_tbl[0]中的数据出错,正常转换后的值在20以内,但是出现了1480左右的数值。在改变通道前ADC_DMACmd(DISABLE)在改变通道后ADC_DMACmd(ENABLE)结果一样。
问:为什么会出现这种情况?是不是选定了一个转换序列后就不可以在改变转换序列?为什么转换序列的第一个数据会错误?如何解决这种问题?

静待高人指点!!
沙发
豆腐块| | 2016-3-28 21:59 | 只看该作者
先使能DMA,再使能ADC就没有问题.错位的原因是ADC开启后,没有及时使能DMA,到DMA使能时ADC已经转换过若干个值,与设计产生偏差

使用特权

评论回复
板凳
lefeng| | 2016-3-28 22:04 | 只看该作者
可以单独转化每个通道,就不会错位

使用特权

评论回复
地板
xmshao| | 2016-3-29 11:22 | 只看该作者
ADC\DMA初始化顺序问题不大,但要注意的是使能ADC的DMA功能的使能必须放在 ADC校准操作之后;

ADC的序列号的修改是可以的,但要注意的是必须在ADC停止状态下,即ADSTART=0的前提下;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

774

帖子

2

粉丝