【STM32系列】提升ADC采样精度的方法
资料地址
兆易创新GigaDevice-资料下载兆易创新GD32 MCU

ADC简介
- ADC转换包括采样、保持、量化、编码四个步骤。
- 的采样电容上,即在采样开关 SW 关闭的过程中,外部输入信号通过外部的输入电阻 RAIN 和以及 ADC 采样电阻 RADC 对采样电容 CADC 充电。采样阶段需要在规定的采样时间内将外部信号的电压完整无误的采样到 ADC。Vref+需要在量化的过程中保持稳定。
- ADC的性能指标一般分为" 静态性能参数 "和" 动态性能参数 "
每次采样过程可以简化为:外部信号通过输入阻抗以及采样电阻对采样电容的充电电阻对采样电容的充电(即采样电容零状态的单位阶跃响应)。

误差
- 以下几种就是静态性能参数。
- 采样时间结束后,采样误差表示为采样电容上的电压与信号源上的电压差值。在一次理想的采样过程中,这个电压差值应该保持在0.5LSB以内(LSB为逐次逼近型ADC(SAR ADC)的最小电压分辨率,0.5LSB为SAR ADC的量化误差)。
偏置误差

增益误差

微分非线性误差

积分非线性误差

ADC采样信号FFT频谱图
以下就是ADC采样的动态性能参数。

信噪比(SNR)

信纳比(SNDR)

有效位数(ENOB)

总谐波系数(THD)

采样周期Ts与外部输入电阻Rain
此处仅说结论,推导过程可以在资料中找到!

故在设计SAR ADC的外围电路时,首先就要考虑其采样时间Ts和外部信号源内阻,如果忽略这些基本参数,那么采样结果很难达到理想的精度。
RC滤波与采样
此处仅说结论,推导过程可以在资料中找到!


提高精度的几种方法和注意事项
MUC供电电源
- 一般的的单片机内部都会有一个精准的内部参考源(典型电压2.5V),可以用作ADC工作时的电压,该内部参考电压可以连接到Vref引脚上,但是需要注意的是,其内部参考源带载能力不强,谨慎选择所带负载大小。
- 量化编码过程中,Vref+需要给转化电容网络充电在量化过程中,也会有对基准源抽 取电荷的作,因此,如果没有其他的去耦措施,一个稳健且干净的 Vref+基准会显著影响 ADC 量化的精度,建议对于这两个电源采用纹波噪声系数更小的 LDO 来供电。
- 对于 VREF+基准源,建议靠近引脚并联一个 uF 级以及一个 nF 级的去耦电容,一方面可以滤除来自外部低频与高频的电源噪声,另一方面,也可使 ADC 在量化编码过程的基准源更加稳定。
- 在 layout 过程中,相关电源线的走线上,推荐加宽电源迹线,以减小迹线的 ESR,在量化阶段,减小转化电容网络瞬间充电对输入基准源的影响。
引脚电容

参考电压设置

IO口引入超范围电压

信号源输入电阻的影响
当信号源输入电阻不满足要求
假设锂电池的电压为24V,用R1=9MΩ、R2=1MΩ的电阻分压,然后将分压结果送进ADC通道进行采样,其并联得到的输出阻抗为0.9MΩ。

改善方法
- 添加一个运放跟随电路,实现阻抗匹配。
- 如果对于采样率没有要求的情况下,我们可以降低 ADC 的采样时钟,变相提高采样时间来使 得采样电容充电到正确电位。
- 在功耗要求可以放宽时,我们可以同比例缩小 R1,R2 两个电阻,比如 R1=900k,R2=100k,此时该分压电路的输出阻抗变为90k,配置合适的采样周期,已经能够满足ADC的阻抗要求。
保证ADC采样精度的改善方法
- 对于极大输入阻抗,我们添加了一颗电容来限制单次采样时的电压跌落或上升毛刺的幅值,但是此种情形下,需要在每两次采样之间添加足够的时延给内部采样电容充电,以保证采样开关关闭时,采样电容上的电压与外部信号的电压差在量化误差范围一列。
- 当 ADC 工作在连续采样或者扫描采样时,如果由于输入阻抗过大,且未被及时修正时,输入阻抗过大通道的采样结果会受前一个采样通道信号的影响,通过增大采样时间以满足输入阻抗的影响会显著改善这个现象。
I/O引脚串扰

- 在引脚规划上,就需要提前规划将那些需要持续翻转的数字 I/O 在物理位置上远离 ADC 采样通道。
- 如果由于资源限制,频繁翻转的数字 I/O 无法远离模拟采样口,我们可以在后期 layout 上采取一些措施来减弱影响,比如我们可以通过在数字 I/O 与模拟通道之间加上一定面积的 GND 来隔离。
- 此外,减慢数字信号的边沿也会减弱串扰的影响,如对数字信号添加电容值适当的电容,减慢 MCU 数字 IO 口的驱动速度,也能显著减慢这个数字信号边沿。
- 在数字 I/O 口不翻转的时候进行一次 ADC 转换,当然前提是应用允许这么做。

软件提高ADC采样精度
- 使用ADC片上硬件过采样。

- 不具备片上硬件过采样单元的 MCU,软件算法上亦可采用常用的一些滤波算法来降低输入信号采样值的波动。例如最常见的平均算法,滤波过程中需要占用CPU的算力与一定的RAM空间。这种平均算法适用于输入信号变化慢,偶有脉冲型干扰的情形。如果信号变化频率已经大于这个平均滤波算法的执行频率,则会丢失信号变化的细节,平均后的采样结果不能重现信号的所有信息。此平均算法一般只用于采样直流小信号,不建议用于采样交流连续信号(例如正弦波等等)。
相关文章:
【STM32系列】提升ADC采样精度的方法
资料地址 兆易创新GigaDevice-资料下载兆易创新GD32 MCU ADC简介 ADC转换包括采样、保持、量化、编码四个步骤。的采样电容上,即在采样开关 SW 关闭的过程中,外部输入信号通过外部的输入电阻 RAIN 和以及 ADC 采样电阻 RADC 对采样电容 CADC 充电。采样…...
前端面试如何出彩
1、原型链和作用域链说不太清,主要表现在寄生组合继承和extends继承的区别和new做了什么。2、推荐我的两篇文章:若川:面试官问:能否模拟实现JS的new操作符、若川:面试官问:JS的继承 3、数组构造函数上有哪些…...
Linux 切换用户的两种方法
sudo -su user1 与 su - user1 都可以让当前用户切换到 user1 的身份执行命令或进入该用户的交互式 Shell。但它们在权限认证方式、环境变量继承和 Shell 初始化过程等方面存在一些差异。 权限认证方式 su - user1 su 是 “switch user” 的缩写,默认情况下需要你输…...
Spring Boot 3 中Bean的配置和实例化详解
一、引言 在Java企业级开发领域,Spring Boot凭借其简洁、快速、高效的特点,迅速成为了众多开发者的首选框架。Spring Boot通过自动配置、起步依赖等特性,极大地简化了Spring应用的搭建和开发过程。而在Spring Boot的众多核心特性中ÿ…...
Vue实现留言板(实现增删改查)注意:自己引入Vue.js哦
代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scri…...
IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】
1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址:https://start.spring.io/ 修改为阿里云Server URL地址:https://star…...
读取电视剧MP4视频的每一帧,检测出现的每一个人脸并保存
检测效果还不错,就是追踪有点难做 import cv2 import mediapipe as mp import os from collections import defaultdict# pip install msvc-runtime# 初始化OpenCV的MultiTracker # multi_tracker = cv2.MultiTracker_create() # multi_tracker = cv2.legacy.MultiTracker_cre…...
HTML前端开发-- Iconfont 矢量图库使用简介
一、SVG 简介及基础语法 1. SVG 简介 SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,用于在网页上显示二维图形。SVG 图形可以无限缩放而不会失真,非常适合用于图标、图表和复杂图形。SVG 文件是文本文件&#x…...
使用Allure作为测试报告生成器(Java+Selenium)
背景 JAVA项目中原先用Jenkinsseleniumselenium grid来日常测试UI并记录。 问题 当某一个testSuite失败时,当需要确认UI regression issue还是selenium test case自身的问题,需要去jenkins中查log,一般得到的是“Can not find element xxx…...
RocketMQ面试题合集
消费者获取消息是从Master Broker还是Slave Broker获取? Master Broker宕机,Slave Broker会自动切换为Master Broker吗? 这种Master-Slave模式不是彻底的高可用模式,他没法实现自动把Slave切换为Master。在RocketMQ 4.5之后&…...
Qt初识_对象树
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 Qt初识_对象树 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 什么是对象树 为什么要引…...
axios的get和post请求,关于携带参数相关的讲解一下
在使用 Axios 发送 HTTP 请求时,GET 和 POST 请求携带参数的方式有所不同。以下是关于这两种请求方法携带参数的详细讲解: GET 请求携带参数 对于 GET 请求,参数通常附加在 URL 之后,以查询字符串的形式传递。 直接在 URL 中拼接…...
Vue前端开发-路由其他配置
在路由文件中,除了跳转配置外,还可以进行路径重定向配置,如果没有找到对应的地址,还可以实现404的配置,同时,如果某个页面需要权限登录,还可以进行路由守卫配置,接下来,分…...
框架建设实战7——定时任务组件
在金融系统中,或者其他对账系统里,往往离不开分布式定时任务。用来做查证或者重试处理。 分布式job目前一般有如下三种: 1.elastic job 当当出品,比较老牌。新公司用的应该不多了。 2.xxl-job 个人开源项目。便于二开;有简洁的后管配置界面,方便接入。 3.powerjob …...
mybatis 整合 ehcache
pom.xml <!-- ehcache依赖 --><dependency><groupId>org.mybatis.caches</groupId><artifactId>mybatis-ehcache</artifactId><version>1.1.0</version></dependency>ehcache.xml <?xml version"1.0" en…...
【PlantUML系列】用例图(三)
目录 一、组成部分 二、典型案例 一、组成部分 参与者(Actors):使用关键字 actor 后跟参与者的名称。用例(Use Cases):使用关键字 usecase 后跟用例的名称和编号(可选)。系统边界…...
发送请求时遇到了数据库完整性约束错误 1048 Column ‘platform‘ cannot be null
可以这样解决 在 Vue 2 中封装接口请求时,确保每次请求都包含 platform Header 参数的最佳实践是通过创建一个全局的 Axios 实例,并为这个实例设置默认的 Header。这样可以确保所有通过该实例发送的请求都会自动包含 platform 参数。此外,你…...
三菱FX3U模拟量产品的介绍
FX3u可编程控制器模拟量产品包括:特殊适配器、特殊功能模块的连接 1、连接在FX3U可编程控制器的左侧。 2、连接特殊适配器时,需要功能扩展板。 3、最多可以连接4台模拟量特殊适配器。 4、使用高速输入输出特殊适配器时,请将模拟量特殊适配器连…...
pdf转图片
目录 pdf2image库 PyMuPDF库 python-office库 pdfplumber库 pdf2image库 安装:pip install pdf2image 使用时会报错:pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH? 需要安装 po…...
Go 协程上下文切换的代价
在 Go 语言中,协程(Goroutine)是一种非常轻量级的并发执行单元,设计之初就是为了简化并发编程并提高性能。协程的上下文切换被认为是非常高效的,但是它的真正性能优势需要我们深入了解其背后的机制。 本文将深入探讨 …...
从华为3COM到H3C再到紫光:一个网络设备品牌的“前世今生”与认证体系变迁
H3C认证体系与产品线演进:网络工程师必备的品牌变迁指南 第一次接触H3C交换机的工程师,往往会对设备型号产生困惑——为什么S3600和S3900性能参数几乎相同?为什么早期教材中提到的HCNE认证如今变成了H3CNE?这些疑问背后࿰…...
好写作AI的硕士毕业论文功能:一篇论文的“学术对话”该怎么写?
你有没有过这种体验:当你把初稿交给导师后,得到的反馈不是“哪里写错了”,而是整段阅读后的那个表情——和一句意味深长的“你再想想”。不是你的论文有硬伤,而是它缺少一个硕士论文应该有的东西: 学术对话的能力。 …...
用STM32G431的SPI+DMA驱动WS2812B灯带:我的4bit编码方案与150MHz主频调优心得
STM32G431的SPIDMA驱动WS2812B灯带:4bit编码与150MHz主频调优实战 最近在做一个LED艺术装置项目时,遇到了一个有趣的挑战:如何用STM32G431驱动一批非标准WS2812B灯带。这些灯珠来自不知名厂商,时序要求与常规型号略有不同。经过两…...
Kaggle竞赛实战:特征工程与模型优化核心技巧
1. 竞争性机器学习实战框架解析在数据科学竞赛领域,Kaggle无疑是全球最具影响力的平台。我曾参与过17场Kaggle竞赛,获得过3次金牌和5次银牌的成绩。通过这些实战经验,我深刻体会到:要在竞赛中脱颖而出,光有算法知识远远…...
高端汽车零部件尺寸3D检测设备功率MOSFET选型方案:精密高效运动与成像电源驱动系统适配指南
随着汽车工业对零部件精度与质量控制的极致追求,高端3D检测设备已成为确保制造一致性的核心装备。其精密运动平台、高分辨率成像系统与高速数据处理单元作为整机“骨骼、眼睛与大脑”,需为伺服电机、激光器、传感器及计算模块提供稳定、洁净且快速响应的…...
从E·M·福斯特的《英国人性格的笔记》看技术文档写作:如何写出像英国人一样“冷静”又“高效”的代码注释?
技术文档的英伦美学:如何用克制与精准提升代码注释的沟通效率 在开源协作的世界里,代码注释常常成为开发者之间无声的对话。当我们在GitHub上阅读一个陌生项目的源码时,那些穿插在函数与逻辑之间的文字段落,往往比代码本身更能揭示…...
3分钟掌握QQ音乐加密音频转换:macOS用户的音频自由指南
3分钟掌握QQ音乐加密音频转换:macOS用户的音频自由指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认…...
【YOLOv11】035、YOLOv11在移动端部署:NCNN与MNN实战踩坑笔记
一、从真机闪退开始说起 上周三深夜,测试同事扔过来一台Android设备,屏幕上赫然是熟悉的“App has stopped”。日志里只有一行模糊的memory allocation failure,但PC端模拟器明明跑得顺畅。这就是移动端部署的典型开场——模型在服务器上精度再高,到了真机上可能就是另一回…...
Mac Mouse Fix终极指南:5分钟解锁鼠标隐藏功能,让普通鼠标在macOS上超越触控板
Mac Mouse Fix终极指南:5分钟解锁鼠标隐藏功能,让普通鼠标在macOS上超越触控板 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fi…...
谷歌推出两款全新TPU芯片,驱动AI训练与推理新浪潮
谷歌有限责任公司在2026年谷歌云Next大会上发布了两款专为人工智能设计的定制芯片,推出了分别面向训练与推理任务的两种张量处理器(TPU)架构:第八代TPU 8t与TPU 8i。谷歌表示,这两款芯片的设计初衷是应对下一代AI工作负…...


