5962|16

9792

帖子

24

TA的资源

版主

楼主
 

STM32的ADC使用DMA方式时数据被篡改 [复制链接]

 

最近测试时发现STM32的ADC使用DMA方式读到的数据会出现下边的情况

开始怀疑是外界信号产生的高频干扰,经过几天的测试发现这个其实是DMA输出的内存数据中间被插入了额外的数据

通过第二张图可以看的很清楚,把中间的“高频”信号去掉后的波形就会变正常

所以“高频”信号是多出的一部分,不是在原有信号上的叠加

还有一个很奇怪的问题,这一部分多余的数据会和实际信号有某种联系,仔细看,把它低通滤波后好像又和原始信号相同

这个现象并不会经常出现,我发现在输出一个幅度比较小的正弦信号,让这个正弦信号的过零点在vref/2(12位ADC的2048 CODE)处,就会出现这种情况,ADC的采样率或者ADC是不是使用放大器缓冲结果都不太一样

我试过STM32G474和STM32L452都有这个问题,不过有时采样率降的低一些现象就不这么明显,或者看不到这个现象

试过STM32F413,没看到过这种现象

有兴趣的可以试一下,使用STM32本身的DAC可以产生这种信号

stm32g474测试工程,A2是DAC输出,A0是ADC输入,用路线连接A0和A4即可

g474.rar (9.77 MB, 下载次数: 16)

这个是采集到的几次数据

adc数据分析2.xlsx (848.05 KB, 下载次数: 5)

如果知道解决办法或者厂家的技术支持也麻烦帮忙看下,这个问题已经困扰我好多天了,多谢

 

 

 

此帖出自stm32/stm8论坛

最新回复

我最近也再调试DMA读取多通道的ADC,发现数据很不稳定,我直接用ADC读取出来的数据就很稳定,不知道是不是跟你一样的原因。你换了外部时钟吗?   详情 回复 发表于 2019-11-4 10:25
点赞 关注(1)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 

那换个频率是什么情况

此帖出自stm32/stm8论坛

点评

你是说采样率吗?降到很低就看不到这种现象,只降一些插入的数据会有变化,但还是有  详情 回复 发表于 2019-9-15 14:34
 
 

回复

9792

帖子

24

TA的资源

版主

板凳
 
huo_hu 发表于 2019-9-15 14:27 那换个频率是什么情况

你是说采样率吗?降到很低就看不到这种现象,只降一些插入的数据会有变化,但还是有

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复

4008

帖子

0

TA的资源

版主

4
 

现在电脑没装软件,怀疑是你dma的配置有问题,是不是dma不连续引起的

此帖出自stm32/stm8论坛

点评

应该不是DMA配置的问题  详情 回复 发表于 2019-9-15 21:41
 
 
 

回复

374

帖子

3

TA的资源

一粒金砂(高级)

5
 
本帖最后由 wenyangzeng 于 2019-9-15 20:26 编辑

貌似信号源的问题而非ADC本身。ST官方的DAC演示文件里DAC数组的数据本身就有问题。

此帖出自stm32/stm8论坛

点评

用示波器测量过 不是信号源的问题  详情 回复 发表于 2019-9-15 21:41
 
 
 

回复

9792

帖子

24

TA的资源

版主

6
 
huo_hu 发表于 2019-9-15 14:47
现在电脑没装软件,怀疑是你dma的配置有问题,是不是dma不连续引起的

应该不是DMA配置的问题
此帖出自stm32/stm8论坛
 
 
 

回复

9792

帖子

24

TA的资源

版主

7
 
wenyangzeng 发表于 2019-9-15 20:23
貌似信号源的问题而非ADC本身。ST官方的DAC演示文件里DAC数组的数据本身就有问题。

用示波器测量过 不是信号源的问题
此帖出自stm32/stm8论坛
 
 
 

回复

9792

帖子

24

TA的资源

版主

8
 

这个工程我使用的内部RC震荡器,将时钟源改为外部晶振现象消失。

不过仔细测试发现还是存在类似问题,只是不明显了

下边这张图是后续测试,使用2路ADC,170MHz主频,ADC时钟42.5MHz,2.5MSPS采样率

提高主频降低采样率问题能减轻,但是问题还是存在

此帖出自stm32/stm8论坛

点评

F4是有内部RC不稳定的问题,尽量别用,之前也发现有问题  详情 回复 发表于 2019-9-16 12:44
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

257

帖子

0

TA的资源

一粒金砂(高级)

9
 
本帖最后由 viphotman 于 2019-9-16 11:00 编辑

STM32F103的有没有试过;

此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

10
 
littleshrimp 发表于 2019-9-16 08:56 这个工程我使用的内部RC震荡器,将时钟源改为外部晶振现象消失。 不过仔细测试发现还是存在类似问题,只 ...

F4是有内部RC不稳定的问题,尽量别用,之前也发现有问题

此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

11
 
本帖最后由 huo_hu 于 2019-9-16 12:54 编辑

你变化信号源的频率的情况下,出问题的数据点在相位上位置固定不变吗?

此帖出自stm32/stm8论坛

点评

出问题的地方一般在adc代码的2048处 调整信号源的直流偏置 在相位上是变化的 当信号的摆动不经过2048时就不会有问题  详情 回复 发表于 2019-9-16 14:20
 
 
 

回复

9792

帖子

24

TA的资源

版主

12
 
huo_hu 发表于 2019-9-16 12:53
你变化信号源的频率的情况下,出问题的数据点在相位上位置固定不变吗?

出问题的地方一般在adc代码的2048处 调整信号源的直流偏置 在相位上是变化的 当信号的摆动不经过2048时就不会有问题
此帖出自stm32/stm8论坛
 
 
 

回复

403

帖子

6

TA的资源

纯净的硅(中级)

13
 

DMA篡改数据这个有点让人怕怕啊,ST家应该不至于出这类低级错误吧。总是在2048附近倒是让人遐想,想起来某些RRIO运放倒是因为在某些电平情况下正好是NPN PNP输入级架构的临界点来回切换导致失真,如果你的ADC DAC用到了内置运放或者缓冲的话,内置运放还有功耗模式设置。不过个人也不太相信ST家硬件上有这么严重的缺陷,多半还是外部找找原因吧。这几天正在画H750VB的板子,拖了一年了,想在国庆前做好,看看它的16BIT ADC性能。等板子画好后空了我再试试我的474

此帖出自stm32/stm8论坛

点评

数据篡改找到原因,是时钟的问题,具体为什么会这样不是很清楚 小信号阶梯状不平滑是VREFBUF选择Disable的原因,设置为外部参考电压后解决,也不清楚为什么会这样  详情 回复 发表于 2019-9-19 09:58
 
个人签名如果天空是黑暗的,那就摸黑生存;如果发出声音是危险的,那就保持沉默...但不要习惯了黑暗就为黑暗辩护;不要为自己的苟且而得意;不要嘲讽那些比自己更勇敢热情的人们。人可以卑微如尘土,不可扭曲如蛆虫。
 
 

回复

9792

帖子

24

TA的资源

版主

14
 
jackfrost 发表于 2019-9-19 09:21 DMA篡改数据这个有点让人怕怕啊,ST家应该不至于出这类低级错误吧。总是在2048附近倒是让人遐想,想起来某 ...

数据篡改找到原因,是时钟的问题,具体为什么会这样不是很清楚

小信号阶梯状不平滑是VREFBUF选择Disable的原因,设置为外部参考电压后解决,也不清楚为什么会这样

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

15
 

我最近也再调试DMA读取多通道的ADC,发现数据很不稳定,我直接用ADC读取出来的数据就很稳定,不知道是不是跟你一样的原因。你换了外部时钟吗?

此帖出自stm32/stm8论坛

点评

换了  详情 回复 发表于 2020-2-26 15:14
换了好用  详情 回复 发表于 2019-11-4 11:47
 
 
 

回复

9792

帖子

24

TA的资源

版主

16
 
niaonnn 发表于 2019-11-4 10:25
我最近也再调试DMA读取多通道的ADC,发现数据很不稳定,我直接用ADC读取出来的数据就很稳定,不知道是不是 ...

换了好用
此帖出自stm32/stm8论坛
 
 
 

回复

9792

帖子

24

TA的资源

版主

17
 
niaonnn 发表于 2019-11-4 10:25
我最近也再调试DMA读取多通道的ADC,发现数据很不稳定,我直接用ADC读取出来的数据就很稳定,不知道是不是 ...

换了
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表