打印
[STM32F0]

STM32F030的ADC多通道DAM方式采样

[复制链接]
633|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题描述:
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)结果一样。
问:为什么会出现这种情况?是不是选定了一个转换序列后就不可以在改变转换序列?为什么转换序列的第一个数据会错误?如何解决这种问题?

静待高人指点!!

使用特权

评论回复
沙发
香水城| | 2024-1-4 11:28 | 只看该作者
不知你具体代码,不好分析。

至于F0系列ADC的转换顺序,只有两种可选,要么从前往后,要么从后往前,即forward或backward方式。

你中途改变转换通道,需要先停止ADC,再从新配置和启动。

使用特权

评论回复
板凳
香水城| | 2024-1-4 14:38 | 只看该作者
本帖最后由 香水城 于 2024-1-4 14:41 编辑

我用STM32F0芯片测试了下, 先测试 ch14 ch15 ch17, 然后测量CH13 CH15 CH17。
使用CubeMx配置,这样组织代码是可以的。
  /* USER CODE BEGIN 2 */
  
  HAL_ADCEx_Calibration_Start(&hadc);
  
  HAL_Delay(10);

   HAL_ADC_Start_DMA(&hadc, pData1,  3);
   
   while (!ADC_transformed){}
   
   HAL_ADC_Stop_DMA(&hadc);
   
   HAL_ADC_DeInit(&hadc);
   
   HAL_ADC_Reinit(hadc);
     
   HAL_ADC_Start_DMA(&hadc, pData2,  3);
  
  
  /* USER CODE END 2 */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)

{

ADC_transformed=0xff;

}



75816596525d12c09.png (11.5 KB )

75816596525d12c09.png

使用特权

评论回复
地板
香水城| | 2024-1-4 14:39 | 只看该作者
这样是不会出现错位的现象的。

使用特权

评论回复
5
未说出口的像你| | 2024-1-13 14:10 | 只看该作者
初始化顺序确实会影响结果的

使用特权

评论回复
6
月亮一键变蓝| | 2024-1-13 17:00 | 只看该作者
这个好像正常吧,转换在前,要不然你ADC都初始化完了,转换还没配置完呢

使用特权

评论回复
7
春日负喧| | 2024-1-13 21:00 | 只看该作者
你看看官方的例程呢?例程里怎么写的

使用特权

评论回复
8
西洲| | 2024-1-13 23:00 | 只看该作者
你用cubemx配置一下呗,基本底层方面就不用太过操心了

使用特权

评论回复
9
捧一束彼岸花| | 2024-1-14 01:00 | 只看该作者
你转换完成之后,延时一下再给DMA呢?

使用特权

评论回复
10
故意相遇| | 2024-1-14 03:00 | 只看该作者
我觉得还是时序影响了通道数据

使用特权

评论回复
11
白马过平川| | 2024-1-14 05:00 | 只看该作者
还跳着存的数据,有点意思

使用特权

评论回复
12
风凉| | 2024-1-14 14:00 | 只看该作者
先都配置好之后,再调用ADC采集是不是能好点

使用特权

评论回复
13
一只眠羊| | 2024-1-14 16:00 | 只看该作者
不如把你的故障代码发出来帮你看看了

使用特权

评论回复
14
她已醉| | 2024-1-14 19:00 | 只看该作者
这个不太清楚,但是你要是用DMA的话,确实是先转换,后初始化

使用特权

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

本版积分规则

1527

主题

4667

帖子

6

粉丝