STM32F1学习——ADC模数转换器

news2025/1/13 11:26:03

一、ADC模数转换器

        ADC的全称 Analog-Digital Converter 模拟-数字转换器,他可以用来将引脚上连续变换的模拟电压转换为内存中存储的数字变量。

        ADC有两个重要指标,分辨率和频率。 STM32的ADC是 12位 逐次逼近型,1us转换时间,也就是1M HZ的频率。

        输入电压的范围为0-3.3V , 转换结果在0 ~ 2^12 - 1 , 可以测量16个GPIO和两个内部信号源是温度传感器和内部参考电压。

        规则组和注入组两个转换单元,注入组是用于紧急事件的。

        同时还有模拟看门狗自动监测输入电压范围。

二、ADC的电路结构

1、逐次逼近型ADC

        图中左边是模拟信号的选择,和ADC地址和锁存地址的信号,通过一个选择开关,进入比较器,这个比较器的逻辑是由二分法来逐次逼近输入模拟值,简单点讲就是1111 1111是255,将他对应的电压输入比较器,如果比他小,那么输入0111 1111是127,如果大了就输入0101 1111,再比较,每一次确定左边的一位,从而逐次逼近真实值,ADC精度有多高就比较几次。

        图上面是时钟信号,和开始信号,转换完8位,即一个数据后置起EOC。

        最下面时供电和参考电压,一般参考电压接供电,对应接就行。

2、STM32中的ADC电路结构

        在结构图中,中间一部分就是ADC转换的主要部分,由最多16个GPIO口和两个内部信号源,温度传感器和参考电压构成18个输入,分别通过一个模拟多路开关,进入ADC模数转换器,这个模数转换器和上面的逐次逼近型电路结构相同。同时注意ADC模数转换器是由时钟驱动的右边有一个ADC预分频器,他的最大频率为14MHZ,分频时要注意分屏值。

        当ADC转换完后会到规则组 / 注入组数据寄存器,分别是16位和4*16位的,规则组如果是使用多个ADC转换时需要使用DMA,不然只会留下最后一个ADC转换的结果。最后规则组、注入组和模拟看门狗通向最上面的ADC中断端口,都有自己的标志位。

        图下面是触发源的选择。

3、STM32的ADC逻辑框图

三、ADC配置要点

1、转换模式选择

        在ADC中,我们根据两个控制量来控制转换模式,单次模式和连续模式 、 扫描模式和非扫描模式,他们一起组合有四种模式。

2、数据对齐方式

        左对齐和右对齐,我们一般右对齐,这样读出来的值和实际值相同。值得注意的是左对齐可以只读高位,虽然损失了部分精度,但是只用读一个字节。

3、转换时间

        转换时间只要由采样时间和ADC转换时间共同构成,转换时间因为12位,大约为12.5个ADC转换周期,采用周期我们有参数来配置,采样时间越长,越能略掉毛刺信号。

4、ADC校准

        一般在初始化的时候我们都会对ADC进行校准,这是一个自动化的程序,由四条标准库代码来执行就行,其原理是校准的时候对电容增加修正值,来进行ADC校准。

        这里的电容是将采样的电压通过一个电容保存起来,在保持阶段使用的。

四、代码

        本次实验仅仅将PA0口,ADC1的通道一接入一个滑动变阻器,来测量点位的电压值。①打开ADC 和 GPIO的时钟。②配置ADC的预分频系数。 ③初始化GPIO。④波动数据选择器,选择ADC的通道。 ⑤配置ADC的模数转换部分。⑥使能ADC并校准。

        为了节省文章篇幅,代码已经放在github仓库里了。hal库的暂未更新,请耐心等待。

STM32F103c8t6_learning/GPIO_std/STM32f1_ADC at main · Jiang-kun02/STM32F103c8t6_learning · GitHub

参考

[7-1] ADC模数转换器_哔哩哔哩_bilibili

[7-2] AD单通道&AD多通道_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[每周一更]-(第131期):Go并发协程总结篇

Go语言的并发是通过协程(goroutine)实现的。Go协程是轻量级的线程,允许多个任务同时执行,且Go运行时会高效地管理它们。在Go中使用并发协程的方式非常简便,也很强大。以下是一些关于Go协程的基础用法和并发控制方法&am…

Ecdsa密钥在线生成工具

具体前往:ECC公钥私钥对在线生成器

llama.cpp 模型可视化工具 GGUF Visualizer

llama.cpp 模型可视化工具 GGUF Visualizer 1. GGUF Visualizer for VS Code (gguf-viz)1.1. Features1.2. Extension Settings References GGUF Visualizer https://marketplace.visualstudio.com/items?itemNameAgainstEntropy.gguf-viz 1. GGUF Visualizer for VS Code (g…

【DAPM杂谈之三】DAPM的初始化流程

本文主要分析DAPM的设计与实现 内核的版本是:linux-5.15.164,下载链接:Linux内核下载 主要讲解有关于DAPM相关的知识,会给出一些例程并分析内核如何去实现的 /**************************************************************…

HarmonyOS:@LocalBuilder装饰器: 维持组件父子关系

一、前言 当开发者使用Builder做引用数据传递时,会考虑组件的父子关系,使用了bind(this)之后,组件的父子关系和状态管理的父子关系并不一致。为了解决组件的父子关系和状态管理的父子关系保持一致的问题,引入LocalBuilder装饰器。…

Pytorch导出onnx模型并在C++环境中调用(含python和C++工程)

Pytorch导出onnx模型并在C环境中调用(含python和C工程) 工程下载链接:Pytorch导出onnx模型并在C环境中调用(python和C工程) 机器学习多层感知机MLP的Pytorch实现-以表格数据为例-含数据集和PyCharm工程中简单介绍了在…

git打补丁

1、应用场景 跨仓库升级 开发项目B使用的是开源项目A。开源项目A发现漏洞,作者进行了修复,我们可以通过使用git补丁的方式,将作者修改的内容复制到我 们的项目B中。 2、TortoiseGit方式 源仓库 格式化补丁 根据提交数量,生成…

计算机网络 (34)可靠传输的工作原理

前言 计算机网络可靠传输的工作原理主要依赖于一系列协议和机制,以确保数据在传输过程中能够准确无误地到达目的地。 一、基本概念 可靠传输指的是数据链路层的发送端发送什么,在接收端就收到什么,即保证数据的完整性、正确性和顺序性。由于网…

基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现

一、概述 3D LiDAR目标检测是一种在三维空间中识别和定位感兴趣目标的技术。在自动驾驶系统和先进的空间分析中,目标检测方法的不断演进至关重要。3D LiDAR目标检测作为一种变革性的技术,在环境感知方面提供了前所未有的准确性和深度信息. 在这里&…

Vue3初学之常用的指令

v-bind:动态绑定属性 v-bind 用于动态绑定一个或多个属性,或一个组件 prop 到表达式的值。 v-model:双向数据绑定 见上篇 https://editor.csdn.net/md/?articleId145022994 v-if、v-else-if、v-else:条件渲染 v-show&…

docker中jenkins流水线式部署GitLab中springboot项目

本质就是将java项目拉取下来,并自动打包成docker镜像,运行 首先启动一个docker的jenkins 如果没有镜像使用我的镜像 通过网盘分享的文件:jenkins.tar 链接: https://pan.baidu.com/s/1VJOMf6RSIQbvW_V1zFD7eQ?pwd6666 提取码: 6666 放入服…

在ubuntu下对NFS做性能测试

安装NFS 首先,安装服务 sudo apt update sudo apt install nfs-kernel-server然后创建共享文件夹 # 请自定义你自己的共享目录 sudo mkdir -p /exports/nfs4/homes sudo chmod -R 777 /exports/nfs4/homes# 这个可以根据no_root_squash标致选择设置。 # 如果不设…

Open FPV VTX开源之默认MAVLink设置

Open FPV VTX开源之默认MAVLink设置 1. 源由2. 准备3. 连接4. 安装5. 配置6. 测试6.1 启动wfb-ng服务6.2 启动wfb-ng监测6.3 启动QGroundControl6.4 观察测试结果 7. 总结8. 参考资料9. 补充9.1 telemetry_tx异常9.2 DEBUG串口部分乱码9.3 PixelPilot软件问题 1. 源由 飞控图传…

26个开源Agent开发框架调研总结(2)

根据Markets & Markets的预测,到2030年,AI Agent的市场规模将从2024年的50亿美元激增至470亿美元,年均复合增长率为44.8%。 Gartner预计到2028年,至少15%的日常工作决策将由AI Agent自主完成,AI Agent在企业应用中…

mark 一下conductor github

Netflix 关闭conductor 后,后续https://orkes.io/content/ 继续在维护,github地址如下 https://github.com/conductor-oss/conductor 最新release为3.21.11

PyCharm文档管理

背景:使用PyCharmgit做文档管理 需求:需要PyCharm自动识别docx/xslx/vsdx等文件类型,并在PyCharm内点击文档时唤起系统内关联应用(如word、excel、visio) 设置步骤: 1、file -》 settings -》file types 2、在Files opened i…

嘉立创画原理图和PCB

一、环境 进入立创EDA官网 注册登录的环节就不介绍了。 登录账号后,选择专业版 二、原理图 工程中,有原理图和PCB,这里选择原理图 那么接下来就是进行绘制 元器件在如下区域搜索使用。 双击进行放置,也可以左键提前预览。 网…

科创驱动 | 华望系统科技荣膺西湖区年度前沿创新新锐企业

2025年1月3日,由中共西湖区党委、西湖区人民政府主办的“新年第一会”—西湖区科技创新大会在杭州隆重举行。大会现场揭晓了西湖区年度科技创新团队与项目,并发布了“2024西湖区科技十大事件”与“西湖区五大年度科技榜单”。杭州华望系统科技有限公司榜…

Monorepo设置:新手指南

Monorepo是一种项目代码管理方法,指在单个代码仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署的复杂性,并提供更好的可重用性和协作性。 简单理解:所有项目都在一个代码仓库中 📦,但这并不意…

[Python学习日记-75] 计算机基础与网络

[Python学习日记-75] 计算机基础与网络 简介 计算机基础 什么是网络编程 计算机网络 简介 本篇主要介绍的计算机基础是浓缩的,这是因为我们主要学习的是 Python,而 Python 主要是为了开发应用程序的,并不会用它来开发操作系统和嵌入式程序…