STM32 ADC学习
ADC
Analog-to-Digital Converter,即模拟/数字转换器
常见ADC类型
分辨率和采样速度相互矛盾,分辨率越高,采样速率越低。
ADC的特性参数
- 分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如8,10,12,16位等。(刻度划分)(3.3V/4096)
- 转换时间:完成一次A/D转换所需的时间,转换时间越短,采样率就可以越高
- 精度:最小刻度基础上叠加各种误差的参数,精度受ADC性能、温度和气压等影响。
- 量化误差:用数字量近似表示模拟量,采用四舍五入原则,此过程产生的误差为量化误差。
STM32各系列ADC主要特性
ADC工作原理
ADC供电电源VSSA、VDDA(2.4V~3.6V)
输入通道
外部16个输入通道,内部2个输入通道
转换序列
触发源
转换时间
数据寄存器
中断
转换序列(F1为例)
A/D转换被组织为两组:规则组(常规转换组)和注入组(注入转换组)
规则组最多可以有16个转换,注入组最多有4个转换。
排A/D转换先后顺序
触发源
触发转换的方法有两种:
-
ADON位触发转换(仅限F1系列)
-
外部事件触发转换
外部事件触发转换分为:规则组外部触发和注入组外部触发
DMA请求(只适用于规则组)
规则组每个通道转换结束后,除了可以产生中断外,还可以产生DMA请求,我们利用DMA及时把转换好的数据传输到指定的内存里,防止数据被覆盖。
单次转换模式和连续转换模式
单次转换模式:只触发一次转换
连续转换模式:自动触发下一次转换
扫描模式
单通道ADC采集实验(战舰为例)
通过ADC1通道1(PA1)采集电位器的电压,并显示ADC转换的数字量以及换算后的电压值。
RTT ADC
ADC(Analog-to-Digital Converter)指模数转换器。
是指将连续变化的模拟信号转换为离散的数字信号的器件。
真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。
模数转换器可以实现这个功能,在各种不同的产品中都可以找到它的身影。
与之相对应的DAC(Digital-to-Analog Converter),它是ADC模数转换的逆向过程。
ADC最早用于对无线信号箱数字信号转换。如电视信号,长短播电台发射接收等。
转换过程
如下图所示,模数转换一般要经过采样、保持和量化、编码这几个步骤。
在实际电路中,有些过程是合并进行的,如采样和保持,量化和编码在转换过程中是同时实现的。
采样是将时间上连续变化的模拟信号转换为时间上离散的模拟信号。
采样取得的模拟信号转换为数字信号都需要一定时间,为了给后续的量化编程过程提供一个稳定的值,在采样电路后要求将所采样的模拟信号保持一段时间。
将数值连续的模拟量转换为数字量的过程称为量化。
数字信号在数值上是离散的。
采用保持电路的输出电压还需要按照某种近似方式归化到与之相应的离散电平上,任何数字量只能是某个最小数量单位的整数倍。
量化后的数值最后还需要编码过程,也就是AD转换器输出的数字量。
分辨率
分辨率以二进制(或十进制)数的位数来表示,一般有8位、10位、12位、16位等,它说明模数转换器对输入信号的分辨能力,位数越多,表示分辨率越高,恢复模拟信号时会更精确。
精度
精度表示ADC器件在所有的数值点上对应的模拟值和真实值之间的最大误差值,也就是输出数值偏离线性最大的距离。
转换速率
转换速率是指A/D转换器完成一次从模拟到数字的AD转换所需时间的倒数。
例如,某A/D转换器的转换速率为1MHZ,则表示完成一次AD转换时间为1us。
查找ADC设备
应用程序根据ADC设备名称获取设备句柄,进而可以操作ADC设备,查找设备函数如下所示:
rt_device_t rt_device_find(const char* name);
一般情况下,注册到系统的ADC设备名称为adc0,adc1等,使用示例如下:
#define ADC_DEV_NAME "adc1"
rt_adc_device_t adc_dev;adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
使能ADC通道
在读取ADC设备数据前需要先使能设备,通过如下函数使能设备:
rt_err_t rt_adc_enable(rt_adc_device_t dev, rt_uint32_t channel);
- dev:ADC设备句柄
- channel:ADC通道
返回
- RT_EOK:成功
- -RT_ENOSYS:失败,设备操作方法为空
#define ADC_DEV_NAME "adc1"
#define ADC_DEV_CHANNEL 5
rt_adc_device_t adc_dev;adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
读取ADC通道采样值
rt_uint32_t rt_adc_read(rt_adc_device_t dev, rt_uint32_t channel);
#define ADC_DEV_NAME "adc1"
#define ADC_DEV_CHANNEL 5
#define REFER_VOLTAGE 330
#define CONVERT_BITS (1 << 12)rt_adc_device_t adc_dev; /* ADC 设备句柄 */
rt_uint32_t value;
/* 查找设备 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
/* 使能设备 */
rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
/* 读取采样值 */
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
/* 转换为对应电压值 */
vol = value * REFER_VOLTAGE / CONVERT_BITS
rt_kprintf("the voltage is :%d.%02d\n", vol/100, vol%100);
实际电压值的计算公式为:采样值*参考电压/(1 << 分辨率位数),上面示例代码乘以 100 将数据放大,最后通过 vol / 100 获得电压的整数位值,通过 vol % 100 获得电压的小数位值。
FinSH命令
在使用设备前,需要先查找设备是否存在,可以使用命令adc probe后面跟注册的ADC设备的名称。
msh >adc probe adc1
probe adc1 success
使能设备的某个通道可以使用命令adc enable后面跟通道号
msh >adc enable 5
adc1 channel 5 enables success
相关文章:
STM32 ADC学习
ADC Analog-to-Digital Converter,即模拟/数字转换器 常见ADC类型 分辨率和采样速度相互矛盾,分辨率越高,采样速率越低。 ADC的特性参数 分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如8,10…...
详解AI作画算法原理
在人工智能领域,AI作画技术已经成为一个引人入胜的研究方向。AI作画算法利用机器学习技术,尤其是深度学习,来生成具有艺术性的图像。本文将深入剖析AI作画的基本原理,包括其技术架构、关键组件以及工作流程。 引言 AI作画技术不…...
每日Attention学习3——Cross-level Feature Fusion
模块出处 [link] [code] [PR 23] Cross-level Feature Aggregation Network for Polyp Segmentation 模块名称 Cross-level Feature Fusion (CFF) 模块作用 双级特征融合 模块结构 模块代码 import torch import torch.nn as nnclass BasicConv2d(nn.Module):def __init__(…...
华为eNSP学习—IP编址
IP编址 IP编址子网划分例题展示第一步:机房1的子网划分第二步:机房2的子网划分第三步:机房3的子网划分IP编址 明确:IPv4地址长度32bit,点分十进制的形式 ip地址构成=网络位+主机位 子网掩码区分网络位和主机位 学此篇基础: ①学会十进制与二进制转换 ②学会区分网络位和…...
数据库的要求
本来我是不准备写数据库的。而且是准备从零开始,学习python,学完语言学,会c和写作技法,再来学习数据库 那样做的复杂度是天量的,按部就班什么的具备,因为你完全不清楚什么时候就有这个基础和条件࿰…...
Spring MVC(二)
1. 注解RequestMapping修饰类 在Spring MVC中一般都是使用注解RequestMapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置的映射地址作用一致。在上一节的内容中,我们通过注解RequestMapping改进…...
ECP44304T-76是一款增强型通信处理器吗?
ABB ECP44304T-76是一款增强型通信处理器,专为ABB的PLC控制系统设计。 这款通信处理器的主要功能是提供PLC与其他设备或网络之间的通信接口。它支持多种通讯协议,包括但不限于Profibus、Ethernet、Modbus等,使得PLC可以轻松集成到复杂的工业…...
mongoDB分组查询
完整代码 //根据医院编号 和 科室编号 ,查询排班规则数据Overridepublic Map<String, Object> getRuleSchedule(long page, long limit, String hoscode, String depcode) {//1 根据医院编号 和 科室编号 查询Criteria criteria Criteria.where("hosco…...
【Java 刷题记录】位运算
位运算 33. 位1的个数 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输出:3 解释…...
WINDOWS下zookeeper突然无法启动但是端口未占用的解决办法(用了WSL)
windows下用着用着时候突然zookeeper启动不了了。netstat查也没有找到端口占用,就是起不来。控制台报错 java.lang.reflect.UndeclaredThrowableException: nullat org.springframework.util.ReflectionUtils.rethrowRuntimeException(ReflectionUtils.java:147) ~…...
【LLM第三篇】名词解释:RLHF——chatgpt的功臣
RLHF (Reinforcement Learning from Human Feedback) ,直译为:“来自人类反馈的强化学习”。RLHF是一种结合了强化学习和人类反馈的机器学习方法,主要用于训练大模型以执行复杂的任务,尤其是当这些任务难以通过传统的奖励函数来精…...
基于Opencv的车牌识别系统(毕业设计可用)
系统架构 图像采集:首先,通过摄像头等设备捕捉车辆图像。图像质量直接影响后续处理的准确性,因此高质量的图像采集是基础。 预处理:对获取的原始图像进行预处理,包括灰度化、降噪、对比度增强和边缘检测等。这些操作旨…...
Leetcode—295. 数据流的中位数【困难】
2024每日刷题(132) Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…...
JavaWeb之过滤器(Filter)与监听器(Listener)
前言 过滤器(Filter) 1.什么是过滤器 2.过滤器的语法格式 3.使用场景 3.1.如何防止用户未登录就执行后续操作 3.2.设置编码方式--统一设置编码 3.3.加密解密(密码的加密和解密) 3.4.非法文字筛选 3.5.下载资源的限制 监听器(Listener) 1.什么是监听器 2.监听器分类…...
video.js的请求头问题
为了防止视频被轻易下载,我们项目需要在请求视频地址的时候,增加token识别,避免url一粘贴到浏览器地址上就能被盗。 明明一开始就找到的方法: // ts-ignorevideojs.Vhs.xhr.beforeRequest function (options) {options.headers …...
leetcode 1235
leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …...
Activiti7 开发快速入门【2024版】
记录开发最核心的部分,理论结合业务实操减少废话,从未接触工作流快速带入开发。假设你是后端的同学学过JAVA和流程图,则可以继续向后看,否则先把基础课程书准备好先翻翻。 为什么要工作流 比起直接使用状态字段,工作…...
vue3组件插槽
Index.vue: <script setup> import { ref, onMounted } from vue import Child from ./Child.vue import ./index.cssonMounted(() > {}) </script><template><div class"m-home-wrap"><Child>插槽</Child><div class&qu…...
Cloudera简介和安装部署
ChatGPT Cloudera 是一个基于 Apache Hadoop 的数据管理和分析平台。它是由 Hadoop 的几位创始人及早期贡献者于 2008 年创立的公司,并随着公司的不断发展,Cloudera 开始提供企业级的解决方案,帮助企业更好地利用 Hadoop 生态系统进行大数据…...
Spring Boot集成Ldap快速入门Demo
1.Ldap介绍 LDAP,Lightweight Directory Access Protocol,轻量级目录访问协议. LDAP是一种特殊的服务器,可以存储数据数据的存储是目录形式的,或者可以理解为树状结构(一层套一层)一般存储关于用户、用户…...
杨辉三角的打印
题目内容: 在屏幕上打印杨辉三角。 思路: 首先我们通过观察发现,每一步的打印都与行列数有关,中间的数据由这一列和上一行的前一列数据控制。所以我们可以使用二维数组进行操作: (1ÿ…...
贪吃蛇(下)游戏的实现
感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一.蛇和食物的打印二.游戏的运行逻辑三.结束游戏 (善后工作)四.游戏的测…...
偏微分方程算法之椭圆型方程差分格式编程示例
目录 一、示例1-五点菱形格式 1.1 C代码 1.2 计算结果 二、示例2-九点紧差分格式 2.1 C代码 2.2 计算结果 三、示例3-二阶混合边值 3.1 C代码 3.2 计算结果 本专栏对椭圆型偏微分方程的三种主要差分方法进行了介绍,并给出相应格式的理论推导过程。为加深对…...
PCIe协议之-TLP路由基础
✨前言: 在PCI Express (PCIe) 技术中,数据包的路由方式对于确保信息能够高效、准确地传送至目标设备至关重要。PCIe定义了几种路由方式,主要有以下几种。 🌟地址路由(Address Based Routing) 这是最基本…...
inline内联函数-虚函数(virtual)可以是内联函数(inline)吗?
目录标题 inline内联函数特征:使用:编译器对inline函数的处理步骤优点:缺点: 虚函数(virtual)可以是内联函数(inline)吗?特征:使用: inline内联函…...
Spring Boot | Spring Boot 消息管理 ( 消息中间件 ) 、RabbitMQ“消息中间件“
目录: 一、"消息服务" 概述 :1.1 为什么要使用 "消息服务" ( 消息中间件 ) ?① 异步处理② 应用解耦③ 流量削峰④ 分布式事务管理 1.2 常用 "消息中间件" 介绍 :ActiveMQ ( 广泛应用于中小型企业 )RabbitMQ ( 没有特别要求的场景下…...
二层交换机与路由器连通上网实验
华为二层交换机与路由器连通上网实验 二层交换机是一种网络设备,用于在局域网(LAN)中转发数据帧。它工作在OSI模型的第二层,即数据链路层。二层交换机通过学习和维护MAC地址表,实现了数据的快速转发和广播域的隔离。 实…...
AJAX知识点(前后端交互技术)
原生AJAX AJAX全称为Asynchronous JavaScript And XML,就是异步的JS和XML,通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无需刷新就可获取数据。 AJAX不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式 …...
用wordpress为外贸进出口公司搭建多语言国际站
使用WordPress为外贸进出口公司搭建多语言国际站是一个很好的选择,因为WordPress不仅易于使用,而且具有丰富的插件和主题,可以支持多语言内容。以下是搭建多语言国际站的步骤和建议: 安装WordPress:首先,您…...
雷军-2022.8小米创业思考-6-互联网七字诀之口碑:口碑即定位,超预期才有口碑,品牌建设
第六章 互联网七字诀 专注、极致、口碑、快,这就是我总结的互联网七字诀,也是我对互联网思维的高度概括。 口碑 用户口碑是所有产品成功的关键因素,这是不言而喻的公理。 资源永远有限,对于创业公司尤其如此。只有专注…...
阿里云网站公安备案系统/挖掘关键词的工具
文章目录vmplayer介绍1.下载和安装2.下载虚拟机镜像3.创建新的虚拟机创建虚拟机运行附件vmplayer介绍 VMware Player (现已更名为VMware Workstation Player)是一款桌面虚拟化应用,无需重新启动即可在同一计算机上运行一个或多个操作系统。凭…...
网站开发网页/宁波seo网页怎么优化
随着分布式技术的发展,MQ技术产品也出现井喷。目前除了各类常用的MQ,比如Apache的ActiveMQ,Kafka,Pulsar,RocketMQ(既是Apache,也是阿里的,头条也是基于RocketMQ)&#x…...
iis7配置网站404页面/seo优化查询
也许你也遇到了这样的一个很无语的问题,明明都输入了正确了可还是会报错,看到上面的图重复试了三五次开始怀疑人生了。。。。 然后事实上,正常的Crossref网站注册页面是这样的。。。 这下知道是什么原因了吧。。。。。。 对,没错…...
大连做网站的网络公司/seo哪个软件好
一、安装Java SE JKD A、下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteIdocomen 选择最新版本,当前最新版本 1.8.0 。下载 jdk-8u45-linux-x64.tar.gz 。 B、解压下载包,添加环境变量。 $ sudo vim ~/.bash…...
企商网站建设/深圳seo外包
DHT11原理:https://blog.csdn.net/x1131230123/article/details/103665953 MSP430 G2553: MSP430 F5529: 串口端:...
wordpress子菜单位置/最经典最常用的网站推广方式
一、copy 头文件algorithm template <class InputIterator, class OutputIterator>OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result);复制元素范围 将[first,last]范围内的元素复制到从result开始的范围内。 该函数…...