问题描述: 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)结果一样。 问:为什么会出现这种情况?是不是选定了一个转换序列后就不可以在改变转换序列?为什么转换序列的第一个数据会错误?如何解决这种问题? 静待高人指点!! |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
RE:STM32F030的ADC多通道DAM方式采样
RE:STM32F030的ADC多通道DAM方式采样
RE:STM32F030的ADC多通道DAM方式采样
RE:STM32F030的ADC多通道DAM方式采样
RE:STM32F030的ADC多通道DAM方式采样
// ADCx->CHSELR |= (uint32_t)ADC_Channel;
ADCx->CHSELR = (uint32_t)ADC_Channel; //change by dupg 150429
ADC_ChannelConfig(ADC1, ADC_Channel_0 , ADC_SampleTime_28_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_1 , ADC_SampleTime_28_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_28_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_28_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_4 , ADC_SampleTime_28_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_5 , ADC_SampleTime_28_5Cycles);
最后开ADC_Cmd(ADC1, ENABLE);就会出现错一位;如果把ADC_DMACmd(ADC1,ENABLE),放到设置AD采样通道后面就会正常。
大神,问个问题
如果用PA1口作为AD输入,
那么ADC转换通道怎么选择??随意选择一个通道吗?
这两个应该没有什么关系吧??
请赐教菜鸟
ADC_Config(); //ADC-DMA-TIM1配置顺序勿改变,避免ADC数据错位
DMA_Config();
初始化时这个顺序很重要哦!!