为什么adc结果出现断层现象

发布者:iota19最新更新时间:2024-05-07 来源: elecfans 手机看文章 扫描二维码
随时随地手机看文章

有人使用STM32H7系列芯片对某正弦信号进行ADC采样转换,可发现最后测量出来的结果有点怪怪的,采样还原的图形上看感觉被截取了一段,呈现断层的样子,如下图所示:

b4e10d50-3519-11ee-9e74-dac502259ad0.png?imageView2/2/w/1000


他还补充说,使用H7系列不同型号以及不同ADC模块,都有类似问题,颇为奇怪!

对于这个结果,我之前未曾碰到过。于是找来STM32H7系列开发板做验证性测试,以图复现问题。

我先利用TIMER加DAC输出一路正弦波,并将输出连接到任一ADC通道。可是不管我如何测试,怎么也没发现采样结果有断层的现象。

b55ba77c-3519-11ee-9e74-dac502259ad0.png?imageView2/2/w/1000

后来,他进一步补充说,他的被测信号是带偏移的正弦波,峰谷差为50mv,中心电压在1v到3v之间,频率为1Khz。通过定时器控制ADC采样频率为2MHz.

b5766a12-3519-11ee-9e74-dac502259ad0.png?imageView2/2/w/1000

这边根据他的要求调整DAC的输出幅度以及输出频率,经过反复测试仍然没有发现他所反馈的断层现象。

b5a7c0ee-3519-11ee-9e74-dac502259ad0.png?imageView2/2/w/1000

从该用户咨询该问题来看,感觉他对STM32及ADC应用还是比较熟悉的。后来经同事提醒,会不会是客户在使用ADC前没做校准。说实在的,对于使用ADC模块前做校准应该说基本的标准动作了。所以,对于该用户我下意识地不太怀疑他使用ADC前没做 校准。现在又实在没法复现其问题现象,只好试着提醒他ADC校准的问题。因为H7系列ADC校准包含两方面,一方面是偏移校准,一方面是线性校准。我把这两个校准函数提供给他参考。

HAL_ADCEx_Calibration_Start(&hadc1,ADC_CALIB_OFFSET_LINEARITY,ADC_SINGLE_ENDED );

HAL_ADCEx_Calibration_Start(&hadc1,ADC_CALIB_OFFSET, ADC_SINGLE_ENDED );

后来,该用户反馈说,他们的确在使用ADC之前做了校准,不过只做了其中的一个,即没有同时做偏移校准和线性校准。当他对ADC模块做了两类校准后一切正常,ADC结果不再出现诡异现象,恢复正常。看来是该用户的一个小失误,虚惊一场,大折腾一番。

一般来讲,在启动STM32ADC模块前需主动做校准,这是基本操作。在ST提供的库函数里有现存的API函数可以调用,不清楚时可以参考ST公司提供的ADC应用例程。


引用地址:为什么adc结果出现断层现象

上一篇:smt32h750扩展sdram
下一篇:cupkee系统的编程操作

推荐阅读最新更新时间:2026-03-25 15:29

为什么adc结果出现断层现象
有人使用STM32H7系列芯片对某正弦信号进行ADC采样转换,可发现最后测量出来的结果有点怪怪的,采样还原的图形上看感觉被截取了一段,呈现断层的样子,如下图所示: 他还补充说,使用H7系列不同型号以及不同ADC模块,都有类似问题,颇为奇怪! 对于这个结果,我之前未曾碰到过。于是找来STM32H7系列开发板做验证性测试,以图复现问题。 我先利用TIMER加DAC输出一路正弦波,并将输出连接到任一ADC通道。可是不管我如何测试,怎么也没发现采样结果有断层的现象。 后来,他进一步补充说,他的被测信号是带偏移的正弦波,峰谷差为50mv,中心电压在1v到3v之间,频率为1Khz。通过定时器控制ADC采样频率为2MHz. 这边根
[单片机]
为什么<font color='red'>adc</font><font color='red'>结果</font>出现<font color='red'>断层</font><font color='red'>现象</font>
H7-TOOL自制Flash读写保护算法,为STM32H7系列芯片添加支持,支持在线和脱机烧录
说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作 实际上当前已经发布的TOOL版本,已经自制很多了。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。 最近好几个网友咨询H7系列芯片保护支持,马不停地,已经完成 实现效果: 对STM32H7全系列做了支持,从2.26版本开始将正式带此支持,支持解除和使能。 实现代码和原理 通过H7-TOOL的LUA小程序就可以方便的实现保护解除和使能,不需要自制算法文件。 对应的代码如下,这个不需要用户去管,已经封装到TOOL里面了,这里给大家分享是方便大家了解: --寄存器 local FLASH_F
[单片机]
MSP430F1232针对ADC10(使用DTC+SA)的内存中采样结果读取
定义一个指针,让它指向内存的某个地址,然后通过指针就可以访问。如果需要访问地址为0x210的内存单元(MSP430的ram起始地址是0x200),则可以这样: char a; char *p; p=0x210; *p=90;//在地址为0x210的内存单元存入一个数字90 a= *p;//将地址为0x210的内存单元中的数字读出赋值给a其实不光是430单片机,其他各种单片也是如此操作,这是由C语言决定的,与具体CPU无关,但各种单片机内存的地址范围不同,这个需要注意。 ==============以上内容引自“百度知道”================== 地址空间的0x0200为起始地址,往高地址增长是RAM占用的地
[单片机]
STM32定时TIM2触发ADC采样,使用DMA保存结果
1.adc.h文件 //ADC-------------------------------------------------------------------------// #ifndef __EVAL_ADC_H #define __EVAL_ADC_H // Includes ------------------------------------------------------------------// #include stm32f10x.h #include eval.h // Exported types --------------------------------
[单片机]
SRAM ECC功能以及应用中的注意事项
现代电子系统中,由于“软”错误引起的系统故障比永久性硬件失效引起的系统故障要更多。“软”错误是指可以恢复的故障或者失效。这一类错误容易发生在寄存器,RAM等上面,由于受到电磁干扰或者封装材料中的α粒子,宇宙射线等的影响而造成位值翻转。针对这个问题,可以在硬件上加奇偶校验,ECC电路来进行检测。 STM32H7系列MCU的Flash,SRAM和CACHE都支持ECC的功能。在本文中,主要介绍SRAM ECC这部分功能以及应用中的注意事项。 RAMECC外设 在STM32H7系列MCU中,有一个叫RAMECC的外设,它是一个RAM ECC Monitor。RAMECC提供了一个接口给应用程序来检测当前RAM的ECC状态,以及当
[单片机]
SRAM ECC功能以及应用中的注意事项
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved