硬汉嵌入式论坛

 找回密码
 立即注册
查看: 261|回复: 7
收起左侧

[ADC] ADC采集值变化有跳变

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2025-4-11 13:43:57 | 显示全部楼层 |阅读模式
最近在做STM32H750VBT6多ADC多通道采集,发现adc的采集值的变化有跳变现象或者说部分值取不到(中间有空隙),请问有没有人遇到,该如和解决,与ADC校准有关么(配置:ADC+DMA、ADC1-3下各有3个通道,共9个,独立模式,软件触发)

其中一ADC配置,其他两相同
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc1.Init.LowPowerAutoWait = DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.NbrOfConversion = 3;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_CC1;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;
  hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  hadc1.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
  hadc1.Init.OversamplingMode = DISABLE;
  hadc1.Init.Oversampling.Ratio = 1;
微信图片_20250411132830.png 微信图片_20250411132853.png



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-11 14:57:27 | 显示全部楼层
确定下是跳变问题,还是DMA Cache导致得数据一致性问题。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-4-11 15:39:30 | 显示全部楼层
eric2013 发表于 2025-4-11 14:57
确定下是跳变问题,还是DMA Cache导致得数据一致性问题。

关了cache依旧有
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-4-11 15:43:03 | 显示全部楼层
eric2013 发表于 2025-4-11 14:57
确定下是跳变问题,还是DMA Cache导致得数据一致性问题。

https://community.st.com/t5/stm3 ... /m-p/784144#M275373
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-11 15:44:56 | 显示全部楼层

1、当前测试,如果定时器触发,转换速度先慢点,1KHz触发先测试下,不要高了。
2、然后就是你处理数据波形展示得时候,保证你的数据是连续得不。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-4-11 16:07:01 | 显示全部楼层
eric2013 发表于 2025-4-11 15:44
1、当前测试,如果定时器触发,转换速度先慢点,1KHz触发先测试下,不要高了。
2、然后就是你处理数据波 ...

1、测试是软件触发的
2、所采集的模拟的输出确实是连续的
似乎与这个问题相似:https://community.st.com/t5/stm3 ... /td-p/709534/page/2
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-12 09:11:02 | 显示全部楼层
xigua580 发表于 2025-4-11 16:07
1、测试是软件触发的
2、所采集的模拟的输出确实是连续的
似乎与这个问题相似:https://community.st.c ...

那你楼主位的代码和你的描述不太匹配,

这里配置的是定时器触发

hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_CC1;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
回复

使用道具 举报

2

主题

30

回帖

36

积分

新手上路

积分
36
发表于 2025-4-12 10:45:10 | 显示全部楼层
出现问题的是不是在过零点附近或者关于过零点对称?将ADC分频降低到10MHz左右再试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 01:42 , Processed in 0.288199 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表