使用stm32的ADC得到准确的电压

2023-11-07

一、引脚多一点的stm32单片机存在VREF-和VREF+引脚

由上面的供电图知道,如果存在VREF-和VREF+引脚,那么ADC是由这两个引脚供电的,ADC的采集电压范围为:VREF-<VIN<VREF+。给VREF+接入稳定的电压参考,那么使用ADC就能测量到精确的电压值。如:精度为12位(4096),VREF+参考为3V,转换时间足够,得到的值是2048,那么采样对象电压就是1.5V。(ADC转换时间会影响精度)

 

二、引脚少的单片机(48脚)没有引出VREF-和VREF+引脚

VREF-和VREF+引脚在单片机内部与VDDA和VSSA连在一起,因为不像上面单独给VREF+一个稳压源,因此可能存在供电电压不稳的问题。于是需要一些方法来对转换结果进行矫正。

ADC的通道17就是单片机内部的一个稳压源。可以读取它的数据来进行矫正。

该稳压源电压为1.16V到1.24V,精度不是很准确,要求不高,可以凑合着用。

具体使用方法是:增加一个通道17的采集(如本来要采集2个通道,现在采集3个通道),把通道17的测量数值记为ADrefine,目标通道测量数值为ADchx,则目标电压为:

Vchx = Vrefine* (ADchx/ADrefine),其中Vrefine为参照电压=1.20V。

程序上:

在STM32提供的库函数中,如果要开启内部参考电压功能,使用的库函数和开启温度内部温度传感器的函数是一样的,只是在后面采集ADCx_Channel_x通道的时候不同而已。开启函数为: ADC_TempSensorVrefintCmd(ENABLE);

注:必须设置TSVREFE位激活内部通道:ADCx_IN16(温度传感器)和ADCx_IN17(VREFINT)的转换。

关于操作源码,可以参考正点原子不完全手册 第二十一章 内部温度传感器实验,对于内部电压值的测量和温度传感器的方法是一样的,只是使能的ADC通道不一样,其他都是一样的,所以,可以直接参考。

 

三、引脚少的单片机(48脚)没有引出VREF-和VREF+引脚(方法二)

在某些stm32单片机中还存在VREFINT_CAL(直接在数据手册中搜索VREFINT_CAL)

这个值是ST在出厂测试时,25度,VDDA电压3V,读通道17的数值。我们知道引脚少的单片机VREF+与VDDA是连在一起的,因此当参考电压为3V,25度,ADC测量1.2V的结果就是VREFINT_CAL。这样我们可以测量通道17的数值来计算VDDA的电压:

        比如:参考电压为3V,25度,ADC测量1.2V的结果VREFINT_CAL=100,现在我读通道17的数值是200,因为测量对象一直是稳压源1.2V,可是测量数值翻倍了,那肯定是参考电压折半了嘛。

        这样相当于我能测量参考电压大小,于是就能计算目标电压大小:(把上面的式子代入)

 

四、采样时间会影响采样精度

因为ADC的采样需要一定的电流大小,因此外部阻抗的大小会影响采样的时间。阻抗越大,电流越小,需要采样时间越长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用stm32的ADC得到准确的电压 的相关文章

  • 【MM32F5270开发板试用】五、rt-thread 利用SPI接口驱动SD卡

    篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动 更多开发板试用活动请关注极术社区网站 作者 Magicoe是攻城狮 之前SPI接的是个2 4寸的小屏幕 鉴于MM32F5270片上没有SDIO接口用的是SPI拓展的SD卡 反正
  • HAL库使用硬件SPI驱动0.96寸OLED stm32F401

    找一个可以使用SPI接口的OLED驱动程序 一般买OLED会提供 或者自己网上找 这里用的是中景园的例程 由于我使用的开发板是STM32F401ccu6 所以我先移植到我的开发板上 主要改的 打开MXcube 配置时钟 配置DEBUG 我这
  • 计算机组成原理--基于Logisim的8位可控加减法器实验的应用(超详细/设计/实验/作业/练习)

    目录 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Logisim的8位可控加减法器实验 一 前言 二 环境与设备 三 内容 四 结果与分析 课程名 计算机组成原理 内容 作用 设计 实验 作业 练习 学习 基于Lo
  • Event Driven Class OSAL 基于事件驱动的模拟操作系统

    EventDrivenClassOSAL详解 Event Driven Class OSAL 基于事件驱动的模拟操作系统 前言 什么是OSAL OSAL为 Operating System Abstraction Layer 即 操作系统抽
  • 合宙Air105

    基于Air105开发板 Air105 LuatOS 文档 上手 开发上手 LuatOS 文档 前文 合宙Air105 摄像头 capture SPI Serial 串口 TFTLCD Micro SD卡 GC032A USB转TTL 官方d
  • UDS应用层协议解析(史上最全)

    UDS应用层协议解析 UDS应用层协议解读 下 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时 非默认会话模式下设置的状态需要reset 28服务 85服务设置的状态需要恢复至默认状态 27服务解锁状态需
  • VL6180X传感器驱动

    vl6180x i2c c I2C通信 获取VL6180x地址 可以知道7位地址为0x29 写 0x52 读 0x53 写入数据 通过I2C总线向某一寄存器写入一个字节数据 成功 0 失败 1 uint8 VL6180X WriteByte
  • eclipse + armgcc + pyocd(CMSIS-DAP) 进行嵌入式MCU Debug

    eclipse armgcc pyocd CMSIS DAP 进行嵌入式MCU Debug 由于中美贸易战的影响 备用方案将采用国产MCU 经过乱开发委员会的评估 认为华大 HDSC 的MCU性价比不错 但是keil官网找不到所选芯片的pd
  • FreeRTOS系统配置文件详解

    简介 在实际使用FreeRTOS 的时候我们时常需要根据自己需求来配置FreeRTOS 而且不同架构的MCU 在使用的时候配置也不同 FreeRTOS 的系统配置文件为FreeRTOSConfig h 在此配置文件中可以完成FreeRTOS
  • WIN10下搭建gcc编译环境

    安装make 1 下载make 3 81 链接 https pan baidu com s 1kj2CzmLvl tDTuHJRXKnBg 提取码 v7fh 2 直接安装 全选next 安装路径最好不要改动 3 进入系统属性 选择环境变量
  • 零基础开发NBIOT

    前言 shineblink core 开发板 简称Core 的库函数支持NBIOT通信功能 所以只用几行代码即可实现基于M5311 NB模块的联网通信 TCP UDP MQTT 功能 这里我们主要介绍通过TCP实现联网通信的功能 更多关于T
  • esp8266与stm32、手机通讯(原子云)——hal库(有代码)

    本文所讲 正点原子的wifi模块esp8266与正点原子开发板战舰V3 stm32f103zet6 及手机app通讯 esp8266分为三种工作模式 STA 8266连接到网络比如wifi 手机热点等 AP 8266作为热点 由手机连接到8
  • Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    前言 在数字化时代的今天 数据的存储和管理变得越来越重要 各种各样的存储技术应运而生 以满足不同的使用场景和需求 其中 Flash存储芯片以其非易失性 可擦写性和可编程性等优势 占据了重要地位 本博客将详细介绍Flash存储芯片中的NOR
  • 第36章_瑞萨MCU零基础入门系列教程之步进电机控制实验

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • Air780E

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 一 创建产品 1 1在onenet上创建产品 1 2创建设备 查看onenet接入协议 二 设备安全认证 1 鉴权参数 2 Token算法 3 sign算法 示例如下 4 参数编码 5
  • cmake中的编译选项

    CMake是一个跨平台的构建系统 它可以根据简单的配置文件生成各种平台的构建工具 例如Makefile Visual Studio项目文件等 CMake使用CMakeLists txt文件来描述项目的构建规则和依赖关系 在这个文件中 可以设
  • MSP430F42X系列单片机SD16例程(16位AD采样)

    说明 该驱动程序库包含了常用的16位ADC SD16 操作与控制功能函数 如选择通道 设置信号放大倍数 设置数据格式 基准源输出开关等 以及常用采样函数 包括单通道采样 平均采样 多通道同时采样等 可以作为各种程序的底层驱动使用 要使用该库
  • MCU平台下确定栈空间大小的方法

    本文介绍MCU平台下确定栈空间大小的方法 通常使用IDE开发MCU程序在生成Image文件时 Image文件被划分为代码区 数据区 BSS区 堆区 栈区 其中 代码区 数据区 BSS区空间大小由编译器最终决定 对于MCU 堆区一般设置为0
  • 关注MCU 开发中的无限循环

    在 MCU 的开发过程中 我们经常会遇到需要使用无限循环的情况 例如 在前后台系统中 我们需要在一个无限循环中处理各种任务 在实时性操作系统中 我们也可能需要在一个无限循环中调度各个任务 那么 处理无限循环的语句有哪些写法呢 目前常见的有两
  • C语言环形缓冲区

    2024第一天 继续给自己加点料 导言 C语言环形缓冲区是一种常用的数据结构 它提供了一种高效的方式来存储和处理数据 本文将深入解析C语言环形缓冲区的定义 原理和应用 并提供一些实际的代码示例 一 什么是环形缓冲区 环形缓冲区 也称为循环缓

随机推荐

  • 遍历子文件编码格式互换(UTF-8与GB2312)

    遍历子文件编码格式互换 UTF 8与GB2312 在日常开发中 我们经常会遇到需要将文件的编码格式从一种转换为另一种的情况 特别是在不同的操作系统和编辑器之间共享代码文件时 本篇文章将介绍一个Python脚本 用于遍历指定文件夹下的所有 c
  • 12月9号实验报告四

    完成apache服务器能够使用php解析 phtml php3 第一步 先修改配置文件httpd conf 添加 phtml php3 第二步 创建 phtml文件 php3文件 第三步 验证 phtml文件 php3文件
  • MyBatis(四) 主键生成策略

    1 数据库支持自动生成主键 若数据库支持自动生成主键的字段 比如 MySQL和 SQL Server 则可以设置useGeneratedKeys true 然后再把keyProperty 设置到目标属性上 mysql 支持自增主键 自增主键
  • Python3入门基础(10)一个对象

    Python3 面向对象 面向对象技术 与 Java 类似 类 Class 用来描述具有相同的属性和方法的对象的集合 它定义了该集合中每个对象所共有的属性和方法 对象是类的实例 方法 类中定义的函数 类变量 类变量在整个实例化的对象中是公用
  • discuz手机端默forum.php,discuz手机wap版模板开发方式简述

    近期项目需要对discuz论坛的手机模板进行开发调整 在官方论坛和搜索引擎找了很久 都没有找到相应的文章 只好自己着手开始研究 手机模板文件的所在目录 template default mobile 手机模板文件的主目录 template
  • 用Python+PIL将多个jpg图像批量合并成一个pdf文件

    一 引言 在 用Python PIL将目录下jpg图像批量转成pdf文件 介绍了将一个目录下所有的jpg文件批量转成一对一的pdf文件的方法 但单位后来又要求将所有图片合并到一个PDF中看 在实际工作中 确实有时还需要将批量图片文件合并生成
  • 用于视觉跟踪的在线特征选择研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 视觉跟踪是计算机视觉中的重要任务之一 它涉
  • QQuickWidget + QML编程实现酷炫动态动画效果

    1 具体需求 当Qt开发项目中需要实现简单的动态酷炫动画效果时 我们可以使用Qt中的QQuickWidget来实现 同时还可以使用QML编程来实现具体的动画效果 具体实现的效果如下所示 2 具体操作和实现效果图 1 按下start按钮 音乐
  • 解决win10运行Android Studio卡死问题

    问题 最近window来了一波强制更新 然后我发现在Android Studio内点运行 很容易就卡死在install处 完全不能动 只能在任务管理器上杀进程 用了很多办法都没解决 最后还是觉得是杀软的问题 处理了一下 解决办法 第一个办法
  • Python TimedRotatingFileHandler 多进程环境下的问题和解决方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题 Python 自带了一个 handler 可以实现每天自动切割日志文件的功能 其实支持各种按时间切割的方法 不过按日期切割是最常用的一种 切割 这件事的触发和执行逻辑
  • springboot在使用Scheduled做定时任务出现Autowired注入空指针

    错误示范 以往的依赖注入直接使用 Autowired Autowired BrowseRecordsService browseRecordsService ApiOperation 清除过期的浏览记录 public void remove
  • 【业务功能篇36】Springboot+activiti7 工作流引擎

    业务场景 前段时间总结的有一个告警工单流程 我们都是直接自己建表 状态节点 操作节点 都是自定义设计的 而到后面会有很多的工单流程 比如创建一个遗留问题电子流 指定处理人进行分析闭环 等等多种电子流 后期重复的开发工作以及维护工作会越来越多
  • C语言 递归实现汉诺塔问题 【图文讲解、简单易懂】

    汉诺塔问题是我们在学习函数递归时常遇见的一类问题 那么如何用简单易懂的思路来解决汉诺塔问题呢 下面我会为大家进行讲解 目录 汉诺塔是什么 汉诺塔的来源 用C语言实现汉诺塔 汉诺塔问题分析思路 用代码实现汉诺塔问题 总结 汉诺塔是什么 汉诺塔
  • 1 ubuntu18 docker配置与安装 镜像加速配置

    0 背景 搭建环境到创建第一个容器 1 搭建环境 需求 1 安装docker环境 2 镜像加速站 3 多台主机安装docker 1 1 docker环境 电脑为老联想电脑 cpu 2 7ghz 内存12GB 用vmware搞了两个ubunt
  • NOIP2014 Day2 模拟赛赛后总结&题解

    考试时的心态 还能有什么心态 考炸了嘛 题解 第一题 无线电通讯 水题 直接模拟 就不多说了 第二题 图论水题 其实也挺水的 只要倒着来广搜一遍 把能到达的边标记一下就可以了 接下来从起点出发BFS一遍就可以了 但是我考试的时候没有想那么多
  • 现在网红里骗子占一半。

    大家好 我是北妈 0 每天和身边朋友还有读者交流 打工没有出路 几乎成为打工人的普遍共识 也有越来越多人尝试或已经在实践打造个人 IP 超级个体品牌这条路 我的星球桃花岛 还有群也很多人每天在交流怎么做个人ip或者视频自媒体 大家都很想破圈
  • C++ STL::list常用操作及底层实现(中2)——实现list常用操作之删除(erase、remove、pop_front、pop_back、clear)

    list 常用操作及自底层实现 1 erase 按链表迭代器删除 1 1函数格式1 iterator erase iterator position 1 2函数格式2 iterator erase iterator first iterat
  • 用TensorFlow编写训练模型的程序——快速导读

    1 训练模型是怎么回事 训练模型是指 通过程序的反复迭代来修正神经网络中各个节点的值 从而实现具有一定拟合效果的算法 在训练神经网络的过程中 数据流有两个方向 正向和反向 正向负责预测生成结果 沿着网络节点的运算方向一层层计算下去 反向负责
  • 如何高速安装jetson-inference,一步到位,避免踩坑!

    踩了很长时间的坑 终于弄明白怎么高速下载jetson inference 来源 安装jetson inference 自动下载模型 满速下载起飞 解决下载模型被墙问题 奈流云何的博客 CSDN博客 需要将Github的仓库复制到Gitee上
  • 使用stm32的ADC得到准确的电压

    一 引脚多一点的stm32单片机存在VREF 和VREF 引脚 由上面的供电图知道 如果存在VREF 和VREF 引脚 那么ADC是由这两个引脚供电的 ADC的采集电压范围为 VREF