STM32H562----------ADC外设详解

1、ADC 简介

STM32H5xx 系列有 2 个 ADC,都可以独立工作,其中 ADC1 和 ADC2 还可以组成双模式(提高采样率)。每个 ADC

最多可以有 20 个复用通道。这些 ADC 外设与 AHB 总线相连。

STM32H5xx 的 ADC 模块主要有如下几个特性:

1、可配置 12 位、10 位、8 位、6 位分辨率,ADC 的转换时间与 AHB 总线时钟频率无关,分辨率越低转换时间越短。

2、每路 ADC 支持多达 20 个采集通道,其中 18 个外部通道,2 个内部通道。18 路外部通道中有 6 路快速通道和 12

  路慢速通道。

3、ADC 的结果可左对齐/右对齐的方式存储在 16 位数据寄存器中

4、ADC 具有四条专用的内部通道,一路用于内部温度传感器、一路用于内部参考电压,一路用于监控外部 VBAT 的电

  源引脚、一道用于监控内部 VDDCORE 电源。

5、支持过采样,过采样比 2~256x 可调,每个 ADC 支持三路模拟看门狗

6、支持单独输入和差分输入(可按通道进行编程),ADC 输入电压范围 VREF-≤VIN≤VREF+。一般把 VSSA 和 VREF-接地,把

 V<sub>REF+</sub>和 V<sub>DDA</sub> 接到 3.3V,所以一般得到 ADC 输入电压范围是:0~3.3V。

7、最多 4 条注入转换序列,16 条常规转换序列。

2、ADC 功能描述

ADC 功能框图如下:

2.1、VREF+参考电压

2.2、ADC Clocks

ADC 模块的时钟如上图 2 的双时钟域结构,ADC 输入时钟可以在两个不同的时钟源之间选择。ADC

时钟独立于 AHB 总线时钟。

1、adc_ker_ck_input 是一个特定的时钟源与 AHB 时钟独立且异步。若要选择此时钟必须将 ADC_CCR

寄存器的 CKMODE[1:0] 位设置为 00。

2、adc_hclk 时钟经过 AHB 时钟分频得到,可配置分频因子 1/2/4。若选择此时钟,ADC_CCR 寄存器

的 CKMODE[1:0] 位不能为 00。

选择 adc_ker_ck_input 的优点是无论选择何种 AHB 时钟方案,都可以实现最大 ADC 时钟频率。ADC

时钟最终可按如下比例划分: 1/2/4/6/8/12/16/32/64/128/256。根据 ADC_CCR 寄存器中的 PRESC[3:0]

位配置分频。

选择 adc_hclk 时钟的优点是可绕过时钟域的重新同步。

2.3、输入通道

每路 ADC 总共有 20 个输入通道,STM32H5 的 ADC 支持单端和差分转换,由寄存器 ADC_DIFSEL

控制,该寄存器默认是 0(单端模式),配置为 1(则为差分模式)。因 STM32H5 支持差分输入,所以

有 ADC_INP[19:0] 和 ADC_INN[19:0] 两组通道。其中 INP 是差分正向输入,INN 是差分反向输入。

ADC_INP[0:5] 和 ADC_INN[0:5] 是快速模拟输入,ADC_INP[6:19] 和 ADC_INN[6:19] 是慢速模拟输入。

若使用单端输入,则只有 ADC_INP[19:0] 这二十个输入通道有效,ADC_INN[19:0] 内部自动接 VSSA

ADC 连接的 4 路内部模拟输入,如下表所示:

VSENSE:内部温度传感器通道

VREFINT:内部参考电压通道

VBAT/4:外部 VBAT 电源通道

VDDCORE:监控内部 VDDCORE 电源

2.4、转换序列

ADC 可将转换分两组:常规转换组和注入转换组。对于常规转换组最多允许 16 个通道进行转换。注入转换最多

允许 4 个通道进行转换。注入转换可打断常规转换组的转换,获得优先转换的权力。如下示意图:

对于常规转换组的转换顺序由寄存器 ADCx_SQRy(y = 1~4) 中设置,以 ADC_SQR1 寄存器为例介绍如下图:

L[3:0]:设置常规转换组要转换的通道数。

SQR1[4:0]:设置第一个转换的通道(0~19)

SQR2[4:0]:设置第二个转换的通道(0~19)

SQR3[4:0]:设置第三个转换的通道(0~19)

SQR4[4:0]:设置第四个转换的通道(0~19)

按照 ADC_SQR1 寄存器一样设置 ADC_SQR2、ADC_SQR3、ADC_SQR4;

对于注入转换组的转换顺序由 JSQR 寄存器配置。如下图:

JL[1:0]:设置注入转换组要转换的通道数。

JSQ1[4:0]:设置第一个转换的通道 (0~19)

JSQ2[4:0]:设置第二个转换的通道 (0~19)

JSQ3[4:0]:设置第三个转换的通道 (0~19)

JSQ4[4:0]:设置第四个转换的通道 (0~19)

2.5、触发源

ADC 的触发转换有两种:软件触发或外部事件触发(硬件)

软件触发:常规通道由 ADCx_CR 寄存器的 ADSTART 位触发,注入通

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

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

相关文章

【Android】双指旋转手势

一&#xff0c;概述 本文参考android.view.ScaleGestureDetector&#xff0c;对双指旋转手势做了一层封装&#xff0c;采用了向量计算法简单实现&#xff0c;笔者在此分享下。 二&#xff0c;实例 如下&#xff0c;使用RotateGestureDetector即可委托&#xff0c;实现旋转手…

B站的视频怎么下载下来——Best Video下载器

B站&#xff08;哔哩哔哩&#xff09;作为国内最受欢迎的视频平台之一&#xff0c;聚集了无数优质内容&#xff1a;动漫番剧、游戏实况、学习课程、纪录片、Vlog、鬼畜剪辑……总有那么些视频让人想反复观看、离线观看&#xff0c;甚至剪辑创作。 但你是否遇到过这样的烦恼&am…

基于SFC的windows系统损坏修复程序

前言 在平时使用Windows操作系统时会遇到很多因为系统文件损坏而出现的错误 例如:系统应用无法打开 系统窗口(例如开始菜单)无法使用 电脑蓝屏或者卡死 是如果想要修复很多人只能想到重装系统。但其实Windows有一个内置的系统文件检查器可以修复此类错误。 原理 SFC命令…

智绅科技 —— 智慧养老 + 数字健康,构筑银发时代安全防护网

在老龄化率突破 21.3% 的当下&#xff0c;智绅科技以 "科技适老" 为核心理念&#xff0c;构建 "监测 - 预警 - 干预 - 照护" 的智慧养老闭环。 其自主研发的七彩喜智慧康养平台&#xff0c;通过物联网、AI 和边缘计算技术&#xff0c;实现对老年人健康与安…

用函数实现模块化程序设计(适合考研、专升本)

函数 定义&#xff1a;本质上是一段可以被连续调用、功能相对独立的程序段 c语言是通过“函数”实现模块化的。根据分类标准不同函数分为以下几类。 用户角度&#xff1a;库函数、自定义函数 函数形式&#xff1a;有参函数、无参函数 作用域&#xff1a;外部函数、内部函数 …

OpenCV 滑动条调整图像亮度

一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…

vcs仿真产生fsdb波形的两种方式

目录 方法一&#xff1a; 使用verilog自带的系统函数 方法二&#xff1a; 使用UCLI command 2.1 需要了解什么是vcs的ucli&#xff0c;怎么使用ucli&#xff1f; 2.2 使用ucli dump波形的方法 使用vcs仿真产生fsdb波形有两种方式&#xff0c;本文参考《vcs user guide 20…

【前端】每日一道面试题6:解释Promise.any和Promise.allSettled的使用场景及区别。

Promise.any() 和 Promise.allSettled() 是 JavaScript 中用于处理异步操作的两种不同策略的 Promise 组合器&#xff0c;它们的核心区别在于逻辑目标与结果处理方式&#xff1a; 1. Promise.any() 使用场景&#xff1a; 需要获取 首个成功结果&#xff08;类似竞速成功优先&…

数据链路层__

文章目录 数据链路层基本概念&#xff08;1&#xff09;链路管理&#xff1a;面向连接的服务&#xff08;2&#xff09;帧同步&#xff1a;成帧1、字符计数法2、字符填充法&#xff08;带填充的首尾界符法&#xff09;3、带填充的首位标志法4、物理层编码违例法 &#xff08;3&…

coze智能体后端接入问题:

是否一定要按照coze官方API文档格式调用&#xff1f; 不一定&#xff1a;以下面代码为例(给了注释) app.route(/compare_models, methods[POST]) def compare_models():print("收到 compare_models 请求&#xff01;") #begin-这一部分代码作用&#xff1a;从前端接…

如何轻松、安全地管理密码(新手指南)

很多人会为所有账户使用相同、易记的密码&#xff0c;而且常常多年不换。虽然这样方便记忆&#xff0c;但安全性非常低。 您可能听说过一些大型网站的信息泄露事件&#xff0c;同样的风险也可能存在于您的WordPress网站中。如果有不法分子获取了访问权限&#xff0c;您的网站和…

宝塔think PHP8 安装使用FFmpeg 视频上传

宝塔think PHP8 安装使用FFmpeg 一、 安装think PHP8二、安装 FFmpeg1&#xff0c;登录到宝塔面板。2&#xff0c;进入“软件商店”。3&#xff0c;搜索“FFmpeg”。4&#xff0c;选择版本点击安装。5&#xff0c;检查 FFmpeg 是否安装成功6&#xff0c; 在 ThinkPHP 8 中使用 …

Android 轻松实现 增强版灵活的 滑动式表格视图

表格视图组件&#xff0c;支持&#xff1a; 1. 无标题模式&#xff1a;只有数据行也可以正常滑动 2. 两种滑动模式&#xff1a;固定第一列 或 全部滑动 3. 全面的样式自定义能力 4. 智能列宽计算 1. 无标题模式支持 设置无标题&#xff1a;调用 setHeaderData(null) 或 …

【Python进阶】元类编程

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…

DeepSeek模型性能优化:从推理加速到资源调度的全栈实践

引言 在生产环境中部署DeepSeek模型时,性能优化直接关系到服务质量和运营成本。本文将深入探讨从芯片级优化到分布式调度的全栈性能提升方案,涵盖计算图优化、内存管理、批处理策略等关键技术,并分享在千万级QPS场景下的实战经验,帮助工程团队突破性能瓶颈,实现成本与效能…

Ctrl+R 运行xxx.exe,发现有如下问题.

CtrlR 运行xxx.exe,发现有如下问题. (1)找不到Qt5Core.all,Qt5Cored.dll,Qt5Gui.dll,Qt5Guid.dll,Qt5Widgets.all,Qt5Widgetsd.dll? (2)之后找不到libwinpthread-1.dll 从这个目录拷贝相应的库到运行xx.exe目录下 方法二:将库路径添加到系统PATH环境变量里: 在Path中添加路…

硅基计划2.0 学习总结 陆 抽象类与接口

文章目录 一、抽象类1. 定义2. 示例代码3. 特性 二、接口初识1. 定义2. 命名与语法3. 示例代码4. 常见特性5. 多接口实现6. 接口的继承 三、Object类初识1. equals方法2. hascode方法 一、抽象类 1. 定义 请你假设这样一个场景&#xff0c;我们定义一个人的类&#xff0c;这个…

Linux命令基础(2)

su和exit命令 可以通过su命令切换到root账户 语法&#xff1a;su [-] 用户名 -符号是可选的&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上 参数&#xff1a;用户名&#xff0c;表示要切换的用户&#xff0c;用户名可以省略&#xff0c;省略表示切换到ro…

C++算法训练营 Day10 栈与队列(1)

1.用栈实现队列 LeetCode&#xff1a;232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x)将元素x推到队列的末尾 int pop(…

设计模式域——软件设计模式全集

摘要 软件设计模式是软件工程领域中经过验证的、可复用的解决方案&#xff0c;旨在解决常见的软件设计问题。它们是软件开发经验的总结&#xff0c;能够帮助开发人员在设计阶段快速找到合适的解决方案&#xff0c;提高代码的可维护性、可扩展性和可复用性。设计模式主要分为三…