当前位置: 首页 > news >正文

stm32—ADC

1. 什么是ADC

生活中我们经常会用到ADC这种器件,比如说,当我们在使用手机进行语音通信时,ADC器件会将我们的声信号转换为电信号 (模拟信号 ---> 数字信号)

模拟信号:

        模拟信号是指用连续变化的物理量表示的信息,其信号的幅度、频率、相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号


数字信号:

        数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示

自然界中大部分信号都是模拟的,比如说:温度、压力、声音、速度等等,这些信号容易受噪声干扰且不易存储,而数字信号则没有这两种缺点,因此我们使用ADC器件以便于我们处理和存储这些模拟信号


将模拟信号转化为数字信号一般包括三个步骤:抽样(采样)量化编码

抽样(采样):是在发送端将模拟信号转换为离散信号的过程

        采样定理:在进行模拟/数字信号的转换过程中,当采样频率大于信号中最高频率的2倍时,采样之后的数字信号就能完整地保留原始信号中的信息

        远远高于信号带宽两倍或其最高频率对其进行采样的过程,又叫做过采样

        采样的目的:为了利用有限的采用率,无失真的还原出原有声音信号的样子

量化:抽样信号在各抽样时刻的幅度反映了模拟信号的幅度变化,因此仍然是连续的,必须在编码之前,将幅度抽样值用预先规定的有限个取值来表示


编码:所谓编码就是将量化器输出量化信号在各离散时刻的取值用指定位数的二进制代码表示,从而得到数字信号

ADC的作用:采集传感器数据,测量输入电压,检查电池电量剩余,检测温度 ......

2. ADC0809模块的工作原理

在早期单片机性能相对较弱时,单片机内部并没有ADC外设往往需要外接ADC模块进行ADC采集

(1) 引脚介绍
IN0—IN7:8路模拟量输入端D0—D7:8位数字量输出端ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入 高电平 有效START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)EOC: A/D转换结束信号,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)OE:数据输出允许信号,输入 高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量CLK:时钟脉冲输入端。要求时钟频率不高于640KHZVREF(+)、VREF(-):基准电压Vcc:电源,单一,+5VGND:地
(2) 工作过程
1. 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中2. 此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位3. 下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行4. 直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请5. 当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上
(3) 转换原理
比较器:比较器是一种基本的电路,广泛应用于数字电路中。它通常用于将两个电压或电流进行比较,
并输出比较结果。在数字电路中,比较器是非常重要的,因为它可以用来判断两个数字的大小关系,
并控制逻辑电路的运行比较器的一端为输入电压,比较器的另一端为DAC器件所产生的电压输入测量电压范围:即DAC器件产生的电压范围 VREF+-对应的电压范围例如:VREF+ 为3.3V VREF- 为 0V,则测量范围为0-3.3V8位逐次逼近型:8位:转换后的数据范围为8位,即输出数据范围为0-255逐次逼近:DAC器件产生电压和输入电压比较,相等/最接近时即为待测电压数值测得的电压值:ADC输出数据范围0-255,和测量电压范围一一对应,即输出结果为255,则输入电压为3.3v

3. stm32 ADC外设



(1) 分辨率

        分辨率表示精度,位数越高精度越高,同时也表示最小可检测电压变化。例如12位分辨率,即ADC输出数据范围为0—4095


(2) ADC输入

        ADCx_IN0—ADCx_IN15 + 温度传感器 + VREFINT + VABT

(3) 测量范围

参考电压:即测量范围,VREF- — VREF+



由原理图可知:VDDA = 3.3v VSSA = GND,即ADC测量电压测量范围为0—3.3V

(4) 转换通道

通道选择:选择由哪个通道对外部输入进行转换


规则通道:

        可以按照设置的转换顺序进行转换的通道。一个规则转换组最多由 16 个转换构成

注入通道:

        可以“插队”,也就是说,注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才可以继续转换。一个注入转换组最多由 4 个转换构成

不同于ADC0809模块只能从8个通道中选择一个进行转换,stm32可以同时选择多个通道进行转换

(5) 转换顺序

转换顺序选择:转换顺序即为通道中对应输入的顺序,配置方式如下:



(6) 启动转换

触发信号:即开始ADC采集信号
配置了转换通道以及转换顺序之后,便可以开始转换了。ADC触发转换的有很多种方式:

        软件触发:ADC 转换可以由 ADC 控制寄存器2(ADC_CR2) 的 ADON 这个位来控制,写 1 的时候开始转换,写 0 的时候停止转换;
       
外部事件触发:可分为内部定时器触发和外部IO触发
                内部定时器触发:

                外部IO触发:


数据转换:STM32 AD转换模块

(7) 转换时间
(8) 转换方式

转换方式:STM32 对于通道内转换序列的转换方式包括连续\单次,扫描\非扫描

        单次模式:转换一次后,就停止转换

        连续模式:转换一次后,接着进行下一次转换,不断连续

        扫描模式:对于对通道的转换按设置顺序依次转换

        非扫描模式:对于对通道的转换按设置顺序依次转换,但是每个序列转换需要

因此按照上述模式,总共有四种转换方式:





(9) 转换结果寄存器

数据输出:ADC转换后的结果

注入通道每个转换序列的结果保存在单独的注入数据寄存器中,而规则通道的转换序列的结果全部保存 在一个规则数据寄存器中

当规则通道需要转换多个序列时应当注意规则数据寄存器的覆盖问题

ADC_CR2 寄存器中的 ALIGN 位用于选择转换后存储的数据的对齐方式,有不同的保存方式:
左对齐或者右对齐
        注入通道组的转换数据将减去 ADC_JOFRx 寄存器中写入的用户自定义偏移量,因此结果可 以是一个负值。SEXT 位表示扩展的符号值

        对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效



(10) 转换事件标志

转换事件标志:当转换完成时可能会设置如下标志


(11) 模拟看门狗

模拟看门狗:对输入的电压进行监控,如果不在阈值范围之间则将相应的标志位进行设置,如果使能中断则会产生相应的中断



 

4. 固件库ADC API 接口介绍

固件库的adc操作流程:







 

5. ADC—光敏传感器

相关文章:

stm32—ADC

1. 什么是ADC 生活中我们经常会用到ADC这种器件,比如说,当我们在使用手机进行语音通信时,ADC器件会将我们的声信号转换为电信号 (模拟信号 ---> 数字信号) 模拟信号: 模拟信号是指用连续变化的物理量表示的信息,其信…...

【微信小程序】吐槽生态之云开发服务端能力不足

回想起来,笔者开发小程序的经历也有4年多了,以前因为技术积累接触不到比较深层次的东西,也不理解软件生态这个概念,现在开发小程序的过程中,越来越觉得很多生态微信的进步空间很大。 问题引入 比如说,在迭…...

AnimateDiff论文解读

GitHub - Kosinkadink/ComfyUI-AnimateDiff-Evolved: Improved AnimateDiff for ComfyUI and Advanced Sampling Support 视频编码 定义: 首先,将视频数据转换为一系列的潜变量代码(latent codes)。这是通过一个预训练的自动编码器(auto-encoder)来完成的。操作: …...

C/C++控制台贪吃蛇游戏的实现

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…...

Linux 升级安装 Weblogic-补丁!

版本: RedHat 6.5 Weblogic 10.3.6.0 ----------------------------------------------------------------- 1.查看当前 weblogic 补丁版本 cd /weblogic/utils/bsu/ ./bsu.sh -prod_dir/weblogic/wlserver_10.3/ -statusapplied -verbose -view 2.卸载旧补丁…...

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测 目录 苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...

关于WebSocket必知必会的知识点

什么是WebSocket WebSocket是一种网络传输协议,可以在单个TCP连接上进行全双工通信,位于OSI模型的应用层。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,服务器可以主动向客户端发送消息。在WebSocket API中,浏览器和…...

Go 1.19.4 Sort排序进阶-Day 12

1. 结构体(切片)排序 结构体返回的是切片。 之前学习了sort.Ints()和sort.Strings(),使用这两个sort库下面的方法,可以对int和strings进行排序。 那如果我要对自定义类型进行排序,怎么办,sort库没提供&…...

python-求距离(赛氪OJ)

[题目描述] 给你一个 1−>n 的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?输入格式: 输入共两行。 第一行一个数 n 。 第二行 n 个数表示这个排列。输出格式: 输出一行一…...

《第二十一章 传感器与定位 - 传感器应用》

《第二十一章 传感器与定位 - 传感器应用》 在当今的移动应用开发中,充分利用设备的传感器能够为用户带来更加智能和便捷的体验。本章将重点探讨加速度传感器、方向传感器和光线传感器的应用。 一、传感器应用的重要性 随着智能手机和移动设备的普及,传感…...

Windows系统命令

Windows系统命令 Windows 系统中的命令行工具是指令式编程语言,可以用来执行各种任务、管理文件和目录、监控系统状态等。下面是一个 Windows 命令应用实例: 1. 文件操作 cd:用于改变当前目录。例如,cd Documents 将当前目录更…...

C语言函数递归

前言与概述 本文章将通过多个代码并赋予图示,详细讲解C语言函数递归的定义和函数递归的运算过程。 函数递归定义 程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它…...

【python数据分析11】——Pandas统计分析(分组聚合进行组内计算)

分组聚合进行组内计算 前言1、groupby方法拆分数据2、agg方法聚合数据3、apply方法聚合数据4、transform方法聚合数据5 小案例5.1 按照时间对菜品订单详情表进行拆分5.2 使用agg方法计算5.3 使用apply方法统计单日菜品销售数目 前言 依据某个或者几个字段对数据集进行分组&…...

高性能web服务器

目录 一、简介 (一)nginx-高性能的web服务端 (二)用户访问体验 二、I/O模型 (一)概念 (二)网络I/O模型 (三)阻塞型 I/O 模型 (四&#xf…...

微服务案例搭建

目录 一、案例搭建 1.数据库表 2.服务模块 二、具体代码实现如下: (1) 首先是大体框架为: (2)父模块中的pom文件配置 (3)shop_common模块,这个模块里面只需要配置pom.xml,与实体…...

SAP负库存

业务示例 在系统中,对于一些物料而言,不能立即将收到的交货输入为收货。如果要使发货无论如何都是可以过帐的,则需要允许这些物料的负库存。 负库存 发货数量大于预订数量时,过帐该发货就会出现负库存。如果由于组织原因&#…...

集团数字化转型方案(三)

集团数字化转型方案通过系统整合人工智能(AI)、大数据、云计算和物联网(IoT)技术,建立了一个全面智能化的业务管理平台,涵盖从业务流程自动化、数据驱动决策支持,到客户体验优化和供应链管理的各…...

ESP32智能设备:蓝牙音箱、AI语音助手、环境监测与调节以及智能控制,基于BLE与MQTT技术(代码详解)

本文将介绍如何实现一个功能丰富的ESP32项目,集成蓝牙音箱、AI语音助手、智能设备控制器、环境监测与调节等功能。通过本项目,您将学习到硬件设计、嵌入式编程、蓝牙技术、音频处理、人工智能与语音识别、物联网平台、数据分析及用户界面构建等技术。 一…...

web渗透测试 学习导图

web渗透学习路线 前言 一、web渗透测试是什么? Web渗透测试分为白盒测试和黑盒测试,白盒测试是指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。而黑盒测试则是在对该网站系统信息不知情的情况下渗透,以下所说的Web…...

WordPress禁止后台自定义功能

wordpress后台可以彻底禁止主题的自定义菜单功能,下面这段代码添加到functions.php文件中,后台外观菜单中的”自定义”就会消失不见了。 add_filter(map_meta_cap, function($caps, $cap){if($cap customize){return [do_not_allow];}return $caps; },…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...