0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADC高速采样电路设计详解之STM32踩坑

张飞电子实战营 来源:张飞电子实战营 2024-12-02 09:27 次阅读

一、踩坑过程

最近用STM32F334做数字电源,用到了高速ADC采集电压电流。设计的参考电压VREF为3.3V,输入信号经运放跟随后直接接入单片机的采样通道。一开始测试一切正常,但随着输入信号增加到2.5V左右,采集到的电压值突然严重偏大(比如实际2.5V,ADC采集到的电压为2.6V)。
首先排除软件问题,因为电压较低时采集到的数据一切正常。然后检查硬件问题,确认输入信号正常,确认参考电压正常,甚至排除了通道间相互干扰的可能性,最终问题依旧。也怀疑过单片机自身的缺陷,但根据多年的踩坑经验,大概率还是自己的硬件设计或者软件有不完善的地方。

对比以往的经验,所用到的ADC的采样率都很低(基本上小于1kHz),而这次采样率很高(达到300kHz)。因此初步怀疑,这次和以往的不同应该有什么没注意到的问题。由于需要快速采样,本次的ADC时钟到达72MHz,采样时间设为了最小1.5个周期,单次采样时间0.149us左右。配置代码如下

ADC_StructInit(&ADC_InitStructure); ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Disable; //单次触发模式 ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_7; //HRTIM_ADCTRG1 event ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_RisingEdge; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable; ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable; ADC_InitStructure.ADC_NbrOfRegChannel = 4; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_1Cycles5); //VISENS ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_1Cycles5); //IOSENS ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_1Cycles5); //VOSENS1 ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 4, ADC_SampleTime_1Cycles5); //VOSENS2

怀疑采样时间太快,导致采集出错,因此将采样时间设大。设大后有明显效果,采集到的值误差变小,基本判定此处有玄机。于是仔细看了下手册关于采样时间的的描述

fb73ec04-ae41-11ef-93f3-92fbcf53809c.png

描述中明确提到,需要有足够的采样时间,确保输入信号对内嵌的保持电容充电并达到稳定状态。之后把采样时间设置到最大,采样的结果好了很多,但却没有完全解决问题。明显这已经不能真正解决问题了,因为采样时间已经超出我能接受的范围。同时还有一个疑惑,如果充电时间太短导致电压未达到实际值,采样结果应该偏小才对,为啥会偏大呢?看来是有必要把ADC的相关问题系统彻底的研究一下了。首先应该深入了解下单片机内ADC的基本原理,在网上找到了一篇文章https://blog.csdn.net/Zhuo3364/article/details/142112282,看完后才真正解开了我的疑惑。问题就出在输入信号的处理上。由于我直接运放跟随后接入ADC,在低速采样时有足够时间来稳定电压,所以不会有问题。但在高速时,采样开关开启的瞬间,放大器会产生尖峰。又由于采集时间很短,尖峰还未消除,采集开关已经关闭,因此实际采样到的值会偏大。至此问题算是真的找到了,下面将ADC采样电路的设计要点总结一下。

二、ADC设计要点总结

1、基准源的设计

首先基准电压肯定要稳,而且应该要有一定的驱动能力。有一篇关于基准的文章https://www.bilibili.com/read/cv35121342/值得仔细研读。

2、输入信号的设计

输入信号为什么要处理

关于输入信号,很多新手都会犯一个错误,就是直接把电阻分压的信号接入ADC采样,如下图示意。为什么说这是个错误呢,经历过的人就知道这样采样得到的值也会有偏差,严重时跟设计完全不符。

fb9dae72-ae41-11ef-93f3-92fbcf53809c.png

这个问题在于,ADC本身有一定的输入阻抗,但阻抗并不高,有些甚至只有几kΩ。这样直接接入信号,ADC的输入阻抗就会起到分压的作用。如下图,ADC的输入阻抗Rz和R2并联后再和R1分压,因此实际分压比就和设计的完全不同了,采样到的值自然会和设计值差别很大。所以输入信号应该要做适当的处理。

fbac9c52-ae41-11ef-93f3-92fbcf53809c.png

常规的处理,就是输入信号加个跟随器,因为放大器的输入阻抗可以认为是无穷大的,所以不存在上述分压的问题。这基本上可以满足绝大部分低速采样的需求,但对于高速采样,只跟随不滤波也会有问题,这也是本次踩坑的点所在。

找了一个专用的ADC手测仔细研究了下,里面重点就强调了输入信号抗混叠的处理。其实就是对输入信号进行低通滤波。

fbbd1352-ae41-11ef-93f3-92fbcf53809c.png

下面这张图片也很好的显示了输入信号加RC滤波和不加的区别,这也是为什么我这次踩坑的原因。从不加RC的曲线可以看到,采样瞬间放大器输出信号产生了一个尖峰,如果采样周期很短,尖峰还未消除,就完成了采样,那么采样到的值肯定偏大。而加了RC的曲线则是平稳上升到实际的值。

fbd87f5c-ae41-11ef-93f3-92fbcf53809c.png

三、反思 很多时候我们以为自己懂了,其实没懂,只是凑巧没出问题而已。知其然后还是应该要知其所以然,面对问题方能处变不惊,游刃有余。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    98

    文章

    6496

    浏览量

    544473
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355754

原文标题:ADC高速采样电路设计详解:STM32 踩坑?

文章出处:【微信号:zfdzszy,微信公众号:张飞电子实战营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    又给项目埋雷,RS485自动收发电路设计

    前言 这个文章的题目有点骗眼球的感觉,其实是自己过大坑,很是痛恨这个电路,希望大家以后不要了。工程师要画这个电路时,网上一搜,不经深入分析就拿来用,给项目埋了炸弹。 RS485自动
    的头像 发表于 12-06 09:59 269次阅读
    <b class='flag-5'>踩</b><b class='flag-5'>坑</b>又给项目埋雷,RS485自动收发<b class='flag-5'>电路设计</b>

    高速adc与低功耗adc的区别

    ADC则在能效方面具有优势,适合于电池供电或对能效要求较高的场合。 高速ADC的特点 高采样率 :高速A
    的头像 发表于 11-19 16:10 375次阅读

    高速ADC设计中采样时钟影响的考量

      在使用高速模数转换器 (ADC) 进行设计时,需要考虑很多因素,其中 ADC 采样时钟的影响对于满足特定设计要求至关重要。关于 ADC
    的头像 发表于 11-13 09:49 479次阅读
    <b class='flag-5'>高速</b><b class='flag-5'>ADC</b>设计中<b class='flag-5'>采样</b>时钟影响的考量

    在学习go语言的过程过的

    作为一个5年的phper,这两年公司和个人都在顺应威廉希尔官方网站 趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目。在学习go语言的过程中也学习并总结了一些相关的东西,这篇文章就分享下自己过的一些吧。
    的头像 发表于 11-11 09:22 159次阅读

    STM32ADC采样及各式滤波算法实现

    本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过
    的头像 发表于 10-28 10:51 1964次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>ADC</b><b class='flag-5'>采样</b>及各式滤波算法实现

    ADC采样保持电路的工作原理和威廉希尔官方网站 指标

    ADC(Analog-to-Digital Converter,模数转换器)采样保持电路ADC转换过程中的一个重要组成部分,其工作原理和威廉希尔官方网站 指标对于确保
    的头像 发表于 10-05 14:33 1196次阅读
    <b class='flag-5'>ADC</b><b class='flag-5'>采样</b>保持<b class='flag-5'>电路</b>的工作原理和威廉希尔官方网站
指标

    高速电路设计实践—王剑宇.rar

    高速电路设计实践—王剑宇.rar
    发表于 09-24 17:26 5次下载

    ADS8578S 14位、高速8通道同步采样ADC数据表

    电子发烧友网站提供《ADS8578S 14位、高速8通道同步采样ADC数据表.pdf》资料免费下载
    发表于 07-30 13:50 0次下载
    ADS8578S 14位、<b class='flag-5'>高速</b>8通道同步<b class='flag-5'>采样</b><b class='flag-5'>ADC</b>数据表

    ADS8588S 16位、高速4通道、同步采样ADC数据表

    电子发烧友网站提供《ADS8588S 16位、高速4通道、同步采样ADC数据表.pdf》资料免费下载
    发表于 07-24 11:36 0次下载
    ADS8588S 16位、<b class='flag-5'>高速</b>4通道、同步<b class='flag-5'>采样</b><b class='flag-5'>ADC</b>数据表

    ADS8588S 16位、高速8通道、同步采样ADC数据表

    电子发烧友网站提供《ADS8588S 16位、高速8通道、同步采样ADC数据表.pdf》资料免费下载
    发表于 07-24 11:35 0次下载
    ADS8588S 16位、<b class='flag-5'>高速</b>8通道、同步<b class='flag-5'>采样</b><b class='flag-5'>ADC</b>数据表

    ADS8588S 16位、高速6通道、同步采样ADC数据表

    电子发烧友网站提供《ADS8588S 16位、高速6通道、同步采样ADC数据表.pdf》资料免费下载
    发表于 07-24 11:33 0次下载
    ADS8588S 16位、<b class='flag-5'>高速</b>6通道、同步<b class='flag-5'>采样</b><b class='flag-5'>ADC</b>数据表

    ADC采样定理 ADC采样过程详解

    想要保证ADC的性能能够发挥出来,在做ADC硬件设计的时候,需要注意一些事项。
    的头像 发表于 05-13 18:05 6980次阅读
    <b class='flag-5'>ADC</b>的<b class='flag-5'>采样</b>定理 <b class='flag-5'>ADC</b>的<b class='flag-5'>采样</b>过程<b class='flag-5'>详解</b>

    硬件篇---电路设计ADC采样

    硬件篇---电路设计ADC采样 在现代电子领域中,模拟数字转换器(ADC)扮演着关键的角色,作为将模拟信号转换为数字形式的核心威廉希尔官方网站 。
    的头像 发表于 05-10 15:42 7315次阅读
    硬件篇---<b class='flag-5'>电路设计</b><b class='flag-5'>之</b><b class='flag-5'>ADC</b><b class='flag-5'>采样</b>

    家庭路由器如何选?实用技巧让你不再

    家庭路由器选购需考虑需求、预算、性能指标、硬件配置、软件功能、认证与测试及售后服务。明确需求,选择适合的型号和品牌,确保网络稳定、高速。遵循这些技巧,避免,享受网络便利。
    的头像 发表于 04-29 11:38 656次阅读

    痛苦“电池电压侦测电路”,含泪总结设计要点

    和大家分享这个电路的设计要点,以及当时的设计失误,帮助大家积累经验,以后不要这种。 设计要点一:设定分压电阻的大小 这种便携式掌上阅读器,当然是内置锂电池的:
    的头像 发表于 04-07 14:31 3204次阅读
    痛苦<b class='flag-5'>踩</b><b class='flag-5'>坑</b>“电池电压侦测<b class='flag-5'>电路</b>”,含泪总结设计要点