当前位置: 首页 > 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; },…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【C++进阶篇】智能指针

C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...

python打卡day49@浙大疏锦行

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称:Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号:CVE-2023-25194 CVSS评分:8.8 影响版本:Apache Kafka 2.3.0 - 3.3.2 修复版本:≥ 3.4.0 漏洞类型:反序列化导致的远程代…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...

SpringCloud优势

目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...