STM32H750外设ADC之外部触发和注入管理
目录
概述
1 外部触发转换和触发极性
1.1 外部触发条件
1.2 忽略硬件触发条件
1.3 触发框图
1.4 常规通道的外部触发
1.5 注入通道的外部触发
2 注入通道管理
2.1 触发注入模式
2.2 自动注入模式
2.3 注入转换延迟
概述
本文主要介绍STM32H750外设ADC之外部触发和注入管理的相关内容。ADC模块可通过外部触发转换,它的触发极性( EXTSEL、 EXTEN、 JEXTSEL、 JEXTEN)可以通过相关的寄存器来设置参数。
1 外部触发转换和触发极性
1.1 外部触发条件
可通过软件或外部事件(例如定时器捕获、输入引脚)触发转换或转换序列。触发外部事件能够以所选极性转换条件:
1)EXTEN[1:0] 不等于“0b00
位 11:10 EXTEN[1:0]:常规通道的外部触发使能和极性选择 (External trigger enable and polarity selection forregular channels)
通过软件将这些位置 1 和清零可选择外部触发极性和使能常规组的触发。
00:禁止硬件触发检测(可通过软件启动转换)
01:在上升沿执行硬件触发检测
10:在下降沿执行硬件触发检测
11:在上升沿和下降沿都执行硬件触发检测注:
仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对这些位执行写操作
2)JEXTEN[1:0] 不等于“0b00
位 8:7 JEXTEN[1:0]:注入通道的外部触发使能和极性选择 (External Trigger Enable and Polarity Selection for injected channels)
通过软件将这些位置 1 和清零可选择外部触发极性和使能注入组的触发。
00:如果 JQDIS=0(队列使能),同时禁止硬件和软件触发检测
00:如果 JQDIS=1(队列禁止),禁止硬件触发检测(可通过软件启动转换)
01:在上升沿执行硬件触发检测
10:在下降沿执行硬件触发检测
11:在上升沿和下降沿都执行硬件触发检测
注:ADC 使能后 (ADEN=1),允许随时通过软件写入这些位。如果 JQM=1 且上下文队列为空,则会在内部禁止注入序列的软件和硬件触发
3) EXTEN[1:0] 和 JEXTEN[1:0] 值与触发极性之间的对应关系。
1.2 忽略硬件触发条件
在转换进行时发生的硬件触发会被忽略。
1) 如果位 ADSTART=0,则会忽略发生的任何常规硬件触发。
位 2 ADSTART: ADC 开始常规转换 (ADC start of regular conversion)
此位由软件置 1,用于开始 ADC 的常规通道转换。根据配置位 EXTEN 的值,可以立即开始转换(软件触发配置),也可以在发生常规硬件触发事件后开始转换(硬件触发配置)。
该位通过硬件清零:
– 在单次转换模式下(CONT=0、 DISCEN=0),如果选择了软件触发 (EXTEN=0x0):出现常规转换序列结束 (EOS) 标志时清零。
– 在不连续转换模式下(CONT=0、 DISCEN=1),如果选择了软件触发 (EXTEN=0x0):出现转换结束(EOC) 标志时清零。
– 在所有其他情况下:执行完 ADSTP 命令后,由硬件将 ADSTP 位清零的同时清零。
0:当前未进行 ADC 常规转换。
1:写入 1 可开始常规转换。读取值为 1 表示 ADC 正在运行,最终会转换常规通道。注:
仅当 ADEN=1 且 ADDIS=0 时(ADC 已使能,并且没有任何待处理的禁止 ADC 的请求),才允许通过软件将 ADSTART 置 1。在自动注入模式下 (JAUTO=1),通过将ADSTART 位置 1 开始常规转换和自动注入转换( JADSTART 必须保持清零)
2)如果位 JADSTART=0,则会忽略发生的任何注入硬件触发。
位 3 JADSTART: ADC 开始注入转换 (ADC start of injected conversion)
此位由软件置 1,用于开始 ADC 的注入通道转换。根据配置位 JEXTEN 的值,可以立即开始转换(软件触发配置),也可以在发生注入硬件触发事件后开始转换(硬件触发配置)。该位通过硬件清零:– 在单次转换模式下,如果选择了软件触发 (JEXTSEL=0x0):出现注入转换序列结束(JEOS) 标志时清零。
– 在所有情况下:执行完 JADSTP 命令后,由硬件将 JADSTP 位清零的同时清零。
0:当前未进行 ADC 注入转换。
1:写入 1 可开始注入转换。读取值为 1 表示 ADC 正在运行,最终会转换注入通道。
注:仅当 ADEN=1 且 ADDIS=0 时(ADC 已使能,并且没有任何待处理的禁止 ADC 的请求),才允许通过软件将 JADSTART 置 1。在自动注入模式下 (JAUTO=1),通过将 ADSTART 位置 1 开始常规转换和自动注入转换( JADSTART 必须保持清零)
1.3 触发框图
触发由主 ADC 和从 ADC 共享
1.4 常规通道的外部触发
ADC x 配置寄存器 (ADCx_CFGR)( x=1 到 3)
ADC x configuration register
偏移地址: 0x0C
复位值: 0x8000 0000位 9:5 EXTSEL[4:0]:常规组的外部触发选择 (External trigger selection for regular group)
这些位可选择用于触发常规组转换的外部事件。
00000:事件 0
00001:事件 1
00010:事件 2
00011:事件 3
00100:事件 4
00101:事件 5
00110:事件 6
00111:事件 7
...
11111:事件 31
注:仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对这些位执行写操作。
ADC1、 ADC2 和 ADC3 - 常规通道的外部触发
1.5 注入通道的外部触发
ADC1、 ADC2 和 ADC3 - 注入通道的外部触发
2 注入通道管理
2.1 触发注入模式
要使用触发注入,必须将 ADCx_CFGR 寄存器中的 JAUTO 位清零。
位 25 JAUTO: 注入组自动转换 (Automatic injected group conversion)
通过软件将该位置 1 和清零可在常规组转换后分别使能/禁止注入组自动转换。
0:禁止注入组自动转换
1:使能注入组自动转换
注:仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行常规转换、也未进行注入转换),才允许通过软件对此位执行写操作。
如果使能了双重模式( ADCx_CCR 寄存器的 DAMDF 位不等于零),则从 ADC 的 JAUTO 位不再可写,其内容与主 ADC 的 JAUTO 位相等。
1. 通过外部触发或将 ADCx_CR 寄存器中的 ADSTART 位置 1 来启动常规通道组转换。
2. 如果在常规通道组转换期间出现外部注入触发或者 ADCx_CR 寄存器中的 JADSTART位置 1,则当前的转换会复位,并会启动注入通道序列切换(所有注入通道都会转换一次)。
3. 然后,常规通道组的常规转换会从上次中断的常规转换处恢复。
4. 如果在注入转换期间出现常规事件,注入转换不会中断,但在注入序列结束时会执行常规序列。
注意:
使用触发注入时,必须确保触发事件之间的间隔长于注入序列。例如,如果序列长度为 20 个
ADC 时钟周期(即,采样时间为 1.5 个时钟周期的两次转换),则触发事件的最小间隔不能小于 21 个 ADC 时钟周期。
2.2 自动注入模式
如果将 ADCx_CFGR 寄存器中的 JAUTO 位置 1,则注入组中的通道会在常规组通道之后自动转换。这可用于转换最多由 20 个转换构成的序列,这些转换在 ADCx_SQRy 和 ADCx_JSQR寄存器中编程。
在该模式下,必须将 ADCx_CR 寄存器中的 ADSTART 位置 1 以开始常规转换,然后再进行注入转换( JADSTART 必须保持清零)。将 ADSTP 位置 1 会中止常规转换和注入转换(不得使用 JADSTP 位)。
在此模式下,必须禁止注入通道上的外部触发。
如果 CONT 位和 JAUTO 位均已置 1,则在转换常规通道之后会继续转换注入通道。
位 13 CONT:常规转换的单次/连续转换模式 (Single / continuous conversion mode for regular conversions)
此位由软件置 1 和清零。该位置 1 时,常规转换将持续进行,直到该位清零。
0:单次转换模式
1:连续转换模式
注意点:不能同时使能不连续模式和连续模式:禁止同时将 DISCEN 和 CONT 位置 1。仅当 ADSTART=0 时(这可确保当前未进行任何常规转换),才允许通过软件对此位执行写操作。如果使能了双重模式( ADCx_CCR 寄存器的 DAMDF 位不等于零),则从 ADC 的 CONT 位不再可写,其内容与主 ADC 的 CONT 位相等。
注意点:
不能同时使用自动注入和不连续采样模式。如果在 JAUTO 模式下使用 DMA 导出常规定序器的数据,需要将其设定为循环模式(将DMA_CCRx 寄存器中的 CIRC 位置 1)。如果 CIRC 位复位(单发模式), JAUTO 序列将在出现 DMA 传输完成事件时停止。
2.3 注入转换延迟
相关文章:

STM32H750外设ADC之外部触发和注入管理
目录 概述 1 外部触发转换和触发极性 1.1 外部触发条件 1.2 忽略硬件触发条件 1.3 触发框图 1.4 常规通道的外部触发 1.5 注入通道的外部触发 2 注入通道管理 2.1 触发注入模式 2.2 自动注入模式 2.3 注入转换延迟 概述 本文主要介绍STM32H750外设ADC之外部触发和注…...

软设之排序算法对比
直接插入 时间复杂度:平均情况为O(n^2)。特殊情况下基本有序最优为O(n) 空间复杂度:O(1) 希尔排序 时间复杂度:平均情况O(n^1.3) 空间复杂度:O(1) 直接选择排序 时间复杂度:O(n^2) 空间复杂度:O(1) 堆排序 时间复杂度:O(nlog(2)n) 空间复杂度:O(1) 冒泡排序 时间…...

javascript导入excel文件
导入文件用到一个 xlsx.core.js 的包。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><script type"tex…...

「C系列」C 变量及常见问题梳理
文章目录 一、C 变量1. 整数变量2. 浮点数变量3. 字符变量4. 字符串变量(在C中,通常使用字符数组来表示字符串) 二、C 变量-常见问题1. 变量未初始化2. 变量类型不匹配3. 变量作用域问题4. 变量命名冲突5. 变量越界访问6. 变量声明位置7. 变量…...

<网络安全VIP>第二篇《工业控制软件》
1 PLC PLC,(Programmable Logic Controller),可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。 2 DCS 四、DCS的发展趋势 一、DCS的基本定义 DCS是分布式控制系统(Distributed Control System)的英文缩写,在国内自控行业又称之为集…...

微服务:Rabbitmq中的不同交换机的使用Fanout、Direct、Topic(消息队列中间件)
文章目录 发布订阅Fanout 交换机Direct 交换机Topic 交换机通配符规则 发布订阅 在这里插入图片描述 Fanout 交换机 Fanout 交换机会将收到的消息路由到每一个跟其绑定的queue上。 我们做一个交换机,两个队列,两个消费者分别连接两个队列。 定义交换…...

数据结构单链表的前插法实现
单链表的前插法实现可以通过以下步骤进行: 创建一个新的节点,并将要插入的元素存储在新节点的数据域中。 将新节点的指针域指向原链表的头节点。 将原链表的头节点指向新节点。 具体代码实现如下所示: class Node:def __init__(self, da…...

Cocos Creator开发学习路线
1.JavaScript与TypeScript程序设计 由于可以跨平台发布,同时要能支持h5的游戏,cocos creator选择了JavaScript与TypeScript来做为它的开发语言,所以我们要先学习JavaScript与TypeScript。TypeScript是基于JavaScript的一个语法糖,运行的时候被编译为JavaScript,所以我们要…...

C语言:IO操作
引言 I/O操作是一切实现的基础。IO即为input &output 标准IO(stdio) FILE类型贯穿始终,FILE是由typedef定义出来的 vii /usr/include/asm-generic/errno-base.h (errno定义的位置) /usr/include/x86_64-linux-gnu/bits/types/struct…...

算法 | 刷题日记
1.递归通常是用栈来实现的 递归在其本质上是通过函数调用栈(Call Stack)来实现的,而不是队列(Queue)。当你调用一个函数时,该函数的局部变量、参数和返回地址会被压入(push)到一个由…...

微信小程序登录接口
微信小程序登录,实现思路分析: 用户触发登录操作:用户在微信小程序中点击“登录”按钮,触发登录流程。调用微信登录接口:小程序端调用微信提供的登录接口(如wx.login),获取临时登录…...

VBA实战(Excel)(5):介绍一种排列组合算法
1. 需求场景 有多个条件,条件个数不定,每个条件有若干种情况,情况个数不定,输出所有条件可能的情况的排列组合。 2.举例 假设第一次有5个情况要填,第一个条件20种情况,第二个5种,第三个40种&…...

迭代器的使用
参考: 生成器迭代器next函数 迭代器的使用 说到迭代器就必须先要提一下可迭代对象(iterable),可迭代对象是能够逐一返回其成员项的对象。可迭代对象包括序列类型(如list、str、tuple)和非序列类型&#…...

安卓手机APP开发___广播概述
安卓手机APP开发___广播概述 目录 概述 关于系统广播 系统广播所发生的更改 接收广播 清单声明的接收器 上下文注册的接收器 对进程状态的影响 发送广播 通过权限限制广播 带权限的发送 带权限的接收 安全注意事项和最佳做法 概述 Android 应用可以通过 Android …...

【封装】Unity切换场景不销毁物体
在切换场景时,如果物体不需要销毁,可以直接使用下方脚本 代码 public class DontDestroyLoader : MonoBehaviour{ //所有不销毁的物体预制体[SerializeField] private GameObject[] dontDestroyPrefabs;//实例化预制体public void Load(){foreach (var …...

基于学习的决策树
基于学习的决策树概述 决策树是一种监督学习方法,广泛应用于分类和回归任务中。基于学习的决策树模型通过学习数据中的特征来构建树状结构,帮助做出决策。以下是对基于学习的决策树的详细介绍,包括其基本概念、工作流程、构建算法、优势和挑…...

godot.bk2
1.$node_name 其实 就是 get_node 的语法糖 2.场景内部用get_node,场景外部用信号 这是自定义信号的绑定,如果是内置信号,直接右键点击链接到一个函数即可 3.场景切换和摄像头一直居中 4.class_name命名一个类,extends继承&…...

STM32 IIC 使用 HAL 库操作eeprom
在STM32上通过I2C接口(注意:在标准STM32库中,I2C接口通常被写为"I2C"而不是"IIC")与EEPROM芯片通信时,你需要遵循I2C通信协议,并使用STM32的HAL库或标准外设库(如果适用&am…...

YOLOv8+PyQt5海洋船只检测(可以重新训练,yolov8模型,从图像、视频和摄像头三种路径识别检测)
1.效果视频:海洋船只检测yoloV8检测(https://mbd.pub/o/bread/mbd-ZpaYk55r)_哔哩哔哩_bilibili资源包含可视化的海洋船只检测系统,可对于高空拍摄到的海洋图片进行轮船检测,基于最新的YOLOv8训练的海洋船只检测模型&a…...

PCL 高阶多项式曲线回归拟合(二维)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 高阶多项式曲线回归(Polynomial Regression)是一种线性回归模型的扩展,它允许数据拟合一个非线性的曲线。虽然多项式本身是非线性的,但我们可以通过引入新的变量(例如,原始变量的平方、立方等)来将问题转化为…...

深入理解 Python3 函数:从基础语法到高级应用
Python3 函数是构建模块化代码的基本单位,允许我们将代码组织成独立的、可重用的块。本文将详细介绍 Python3 函数的基本语法、常用命令、示例、应用场景、注意事项,并进行总结。 基本语法 在 Python 中,函数的定义使用 def 关键字…...

03_初识Spring Cloud Gateway
文章目录 一、网关简介1.1 网关提出的背景1.2 网关在微服务中的位置1.3 网关的技术选型1.4 补充 二、Spring Cloud Gateway的简介2.1 核心概念:路由(Route)2.2 核心概念:断言(Predicate)2.3 核心概念&#…...

python数据分析——线性模型
参考资料:活用pandas库 1、简单线性回归 线性回归的目标是描述响应变量(或“因变量”)和预测变量(也称“特征”、“协变量”、“自变量”)之间的直线关系。本例中将讨论tips数据集中的total_bill对tip的影响。 # 导入…...

网络原理——HTTP/HTTPS ---- HTTPS
T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 HTTPS加密与解密HTTPS的工作流程使用对称密钥来加密使用非对称密钥 来对 对称密钥进行加密第三方公证总结 HTTPS https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部…...

网络协议二
一、套接字Socket 基于 TCP UDP 协议的 Socket 编程,在讲 TCP 和 UDP 协议的时候,我们分客户端和服务端,在写程序的时候,我们也同样这样分。 在网络层,Socket 函数需要指定到底是 IPv4 还是 IPv6,分别对应设…...

内存映射mmap技术详解
一、mmap基础概念 mmap 即 memory map,也就是内存映射。mmap 是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,…...

react 合成事件
React合成事件-CSDN博客 当然,很高兴为你解释React中的合成事件概念,非常适合React初学者理解。 想象一下,你正在组织一场派对,为了让派对顺利进行,你需要管理各种活动,比如游戏、音乐和食物分配。但是&a…...

springboot配置集成RedisTemplate和Redisson,使用分布式锁案例
文章要点 自定义配置属性类集成配置RedisTemplate集成配置分布式锁Redisson使用分布式锁简单实现超卖方案 1. 项目结构 2. 集成RedisTemplate和Redisson 添加依赖 依赖的版本与继承的spring-boot-starter-parent工程相对应,可写可不写 <!--spring data redis…...

随机数相关
产生随机数对象 固定写法: Random 随机数变量名 new Random();Random r new Random();生成随机数 int i r.Next(); //生成一个非负数的随机数 Console.WriteLine(i);i r.Next(100); // 生成一个 0~99的随机数 左边始终是0 左包含 右边是100 右不包含 Consol…...

EulerMaker Yocto Open Build Service
EulerMaker & Yocto & Open Build Service 1 介绍1.1 概述 2 工具2.1 Yocto 【嵌入式领域】介绍目标好处三大关键组件创建流程发行版本 2.2 Open Build Service 【OBS】【服务器领域】介绍应用 2.3 EulerMaker 【全场景】介绍特性需求背景(1)能支…...