STM32 ADC精度提升方法

STM32 ADC精度提升方法

  • Fang XS.
  • 1452512966@qq.com
  • 如果有错误,希望被指出,学习技术的路难免会磕磕绊绊
  • 量的积累引起质的变化

硬件方法

  1. 优化布局布线,尽量减小其他干扰
  2. 增加电源、Vref去耦电容
  3. 使用低通滤波器,或加磁珠
  4. 使用DCDC时尽量减小纹波
  5. 使用LDO尽量减小噪声

软件方法

  1. 减小ADC输入时钟
  2. 使用较大采样周期
  3. 增加滤波算法,精度优先首选均值滤波
  4. 在初始化时使用ST自带的校准
  5. 在每次采集数据时使用Vrefint通道校准
  6. 手动校准
  7. 对于没有FPU的MCU,尽量避免浮点数运算
  8. 数字静默,采集时降CPU主频和其他可能影响ADC的时钟

使用Vrefint通道校准方法

以STM32F030C8T为例,规格书描述如下
在这里插入图片描述
这个值是在芯片出厂时,ST针对Vrefint通道进行校准的值,也就是用ADC采集VDDA=3.3V时得到的ADC值,存放在地址0x1FFF F7BA处,2字节大小;
结合这个校准值可以优化ADC转换计算方法:
通道x电压 = (通道xADC值 * 3.3 * VREFINT_CAL) / (通道VrefintADC值 * 4095);
每次ADC采集包含Vrefint通道,将每次采集都进行校准。
去除浮点数运算,DEMO代码如下:

#define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7BA))
#define VREFINT_CAL_VOLTAGE_mV 3300 // Vrefint电压 (mV)
uint32_t CalibrateADC(uint32_t adc_value, uint32_t vrefint_adc) 
{ 
	uint32_t vrefint_cal = *VREFINT_CAL_ADDR; // 读取Vrefint校准值 
	uint32_t adc_chan_vol_mV = (adc_value * VREFINT_CAL_VOLTAGE_mV * vrefint_cal) / (vrefint_adc * 4095); 
	return adc_chan_vol_mV;
 }

注:

  1. SAR型ADC相较于其他ADC,容易受干扰影响
  2. 看其他的文章,有的型号可能出现通道间串扰的问题,解决思路跟本文类似,海可以在2个通道采集之间插入一次接地通道的采集,原理是让电容尽可能充分的放电

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Android运行时切换Retrofit Base URL:简化开发环境与生产环境的切换

在运行时切换Retrofit Base URL:简化开发环境与生产环境的切换 在Android开发中,Retrofit是一个由Square开发的类型安全的HTTP客户端库。它为API认证和网络请求提供了一个强大的框架。然而,在开发过程中,我们常常需要在不同的环境(如开发环境和生产环境)之间切换Base UR…

2024上半年剧集市场复盘:质增量减之下,腾讯持续领跑

随着2024上半年结束,剧集市场长视频平台的比拼也告一段落了。 总结2024H1阶段的剧集市场,依旧延续了“高质量增长”的发展路线,具体表现在数量上的减少和质量上的提升,“质增量减”成为这一阶段的关键词。 根据灯塔专业版数据&a…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)

环境:OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接:【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法,是一种基于颜色空间分布(彩色图像的像素值)的图像分割…

java框架的落地实践案例:大数据平台设计与实现

使用 java 框架设计和实现大数据平台可为企业提供数据处理和分析解决方案,使之能够做出数据驱动的决策。系统采用微服务架构,分解数据处理任务为松散耦合组件,构建于 spring boot 等 java 框架之上。数据采集通过kafka 进行,数据清…

【原理】随机森林模型是怎么训练的

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、随机森林简介二、随机森林训练原理2.1. 随机森林的训练流程2.2. 随机森林训练的核心代码 用过随机森林的朋友都知道,随机森林是集成决策的一个经典代表,它通过训练多棵决策树&#xf…

1、线性回归模型

1、主要解决问题类型 1.1 预测分析(Prediction) 线性回归可以用来预测一个变量(通常称为因变量或响应变量)的值,基于一个或多个输入变量(自变量或预测变量)。例如,根据房屋的面积、位置等因素预测房价。 1.2 异常检测(Outlier Detection) 线性回归可以帮助识别数…

鸿蒙应用开发-时间屏幕

点击下载源码: https://download.csdn.net/download/liuhaikang/89509449 做一个时间屏幕,可以点击切换白色和黑色,有渐变效果,使用到了鸿蒙的动画效果。 在这个设计中,我们首先引入了通用能力包,以实现功…

将一个立方体对象的值赋给另一个立方体对象

如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。 对象之间的赋值也是通过赋值运算符""进行的。本来&…

MYSQL substring_index

1.substring_index( 参数1,参数2 ,参数3 ) 2.group by 也可以用我们起的别名来划分,以及起别名可以不用as SELECT IF(profile LIKE %female,female,male) gender,COUNT(*) number FROM user_submitGROUP BY gender; 3.切割、截取、删除、替换 select -- 替换法 r…

logback log.info耗时异常,RollingFileAppender+TimeBasedRollingPolicy配置踩坑

我喜欢把核心内容放开头 此次log.info耗时异常升高,是由于日志量过大(5G甚至以上),并且使用同步阻塞的RollingFileAppenderTimeBasedRollingPolicy,导致log.info一直等待日志文件滚动,造成了异常。解决方式…

innovus:timing报告的精度如何设置

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 innovus设置timing报告精度常用方法: set_global report_precision 6 report_timing,report_net,report_cell_instance_timing,report_cloc…

记录前端发现问题之 mock接口无返回数据导致所有后续接口调用报错:网络异常

1. 背景 就更新了代码,发现新涉及的页面,切换tab 之后会报错网络异常,再次切换其他没涉及的功能页面,继续报错网络异常 测试环境:纯前端代码,后端是前端mock的数据,仅供demo 2. 问题报错 手动…

如何构建智能聊天系统

聊天分为听、思考、读,简单的通过ASR、LLM、TTS三类模型的组合可以实现,最近openai推出支持多模态的GPT-4o模型,可以把三个模型真正融合成在一起。 现在市面上的模型百花齐放,各有所长。要实现可落地的方案,需要结合业…

ffmpeg在powershell和ubuntu终端下的不同格式

在win10下的powershell中,如果想运行一个exe文件,就不能再像cmd命令行一样用名字来直接运行了,否则会提示格式不对。 正确的做法是: . \ffmpeg.exe -re -i video-test.mpr -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://您的…

模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同

大家好,我是LvZi,今天带来模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同 一.基本概念 模拟算法就是根据题意 模拟出代码的过程,模拟算法的题意往往都很简单,考验的是将思路转化为代码的能力,十分的锻炼代码能力,且能很好…

Zigbee智能家居数据中心:微信小程序实时掌控家居传感器信息

摘要: 本文将介绍如何构建一个基于Zigbee和微信小程序的智能家居网关,实现对家居传感器数据的采集、汇总和展示。用户可通过微信小程序实时查看家中温湿度、光照等环境数据,为智能家居系统提供数据支撑。 关键词: Zigbee&#xf…

信创测试与性能测试的差别是什么?

信创测试和性能测试在多个方面存在显著的区别。 首先,信创测试是一个更为全面和系统的测试过程,它主要针对信创工程项目中的产品、系统等进行测试和验证,以确保其自主可控和满足性能要求。这包括适配测试、功能测试、性能测试、安全测试、兼…

Spring Boot集成geode快速入门Demo

1.什么是geode? Apache Geode 是一个数据管理平台,可在广泛分布的云架构中提供对数据密集型应用程序的实时、一致的访问。Geode 跨多个进程汇集内存、CPU、网络资源和可选的本地磁盘,以管理应用程序对象和行为。它使用动态复制和数据分区技术…

【postgresql】索引

见的索引类型: B-tree 索引:这是最常用的索引类型,适用于大多数查询。B-tree索引可以高效地处理范围查询。 Hash 索引:适用于等值查询,但不支持范围查询。 GiST 索引:通用搜索树(GiST&#xf…

Django学习第二天

启动项目命令 python manage.py runserver 动态获取当前时间 javascript实现数据动态更新代码 <script>setInterval(function() {var currentTimeElement document.getElementById(current-time);var currentTime new Date();currentTimeElement.textContent Curren…