STM32G4 双ADC模式之常规同步模式独立注入模式
目录
概述
1 认识双ADC模式
2 功能实现
2.1 原理介绍
2.2 实现方法
概述
本文主要介绍STM32G4 双ADC模式之常规同步模式&独立注入模式相关内容,包括ADC模块的功能介绍,实现框架结构,以及常规同步模式&独立注入模式ADC的转换的实现原理。
1 认识双ADC模式
双ADC模式可用于具有两个或更多ADC的器件。在双ADC模式中,转换的开始交替或同时由ADCx主ADC从,取决于所选择的模式的位DUAL[4:0]在ADCx_CCR寄存器。
注意:
-
1)从ADC上也存在外部触发器,但在此图中没有显示。
2)ADC公共数据寄存器(ADCx_CDR)包含主ADC和从ADC的常规转换数据。
其包括四种可能得应用:
1) 同时注入模式
-
2)常规同步模式
-
3)交错模式
-
4)交替触发方式
也可以将这些模式以以下方式组合使用:
1)注入同步模式+常规同步模式
-
2)常规同步模式+交替触发模式
-
3)注入同步模式+交错模式
在双ADC模式下(当ADCx_CCR寄存器的位dual[4:0]不等于零时),ADC_CFGR 寄存器的 位CONT, AUTDLY, DISCEN, DISCNUM[2:0], JDISCEN, JQM, JAUTO在主ADC和从ADC之间共享:从ADC中的位 总是等于主ADC的相应位。
要在双模式下启动转换,用户必须对位EXTEN[1:0], EXTSEL, JEXTEN[1:0],主ADC的JEXTSEL进行编程,以配置软件或硬件 触发器,以及常规或注入触发器。(从 ADC的EXTEN[1:0]和JEXTEN[1:0]位不关心)。
在常规同步或交错模式下:
-
一旦用户设置主ADC的ADSTART位或 ADSTP位,从ADC的相应位也自动设置 。但是,从ADC的ADSTART位或ADSTP位不需要在 同时清除主ADC位。
在注入同步或交替触发模式中:
-
一旦用户设置主ADC的JADSTART位或 JADSTP位,从ADC的相应位也自动 设置。但是,从ADC的JADSTART位或JADSTP位不需要在 上与主ADC位同时清除。
在双ADC模式下,可以通过读取ADC公共数据寄存器(ADCx_CDR) 并行读取主ADC和从ADC转换后的数据。状态位也可以通过读取双模式状态寄存器(ADCx_CSR)以 并行方式读取。
2 功能实现
2.1 原理介绍
该模式通过编程位DUAL[4:0] = 00110来选择。该模式在一组常规通道上执行。外部触发源 来自主ADC的常规组多路复用器(由 ADC_CFGR寄存器中的EXTSEL位选择)。一个同步触发器提供给从ADC。在这种模式下,支持独立的注入转换。注入请求(在主服务器或从服务器上的 )终止当前的同步转换,一旦注入的转换完成,将重新启动 。
注意点:
-
不要在两个adc上转换同一通道(转换同一通道时,两个adc的采样次数不能重叠)
在常规同步模式下,必须转换相同长度的序列或确保 触发器之间的间隔大于2个 序列的较长转换时间。否则,具有最短序列的ADC可能重新启动,而具有 最长序列的ADC正在完成先前的转换。
当软件可以读取数据时,中断会通知它:
1) 在主ADC上的每个转换事件(EOC)结束时,生成一个主EOC中断(如果启用了EOCIE),软件可以读取主ADC的ADC_DR。
-
2)在从ADC上的每个转换事件(EOC)结束时,生成一个从EOC中断(如果启用了EOCIE),软件可以读取从ADC的ADC_DR。
-
3)如果主正则序列的持续时间等于从正则序列的持续时间,软件可能只启用两个EOC中断中的一个(例如:主EOC),并从公共数据寄存器(ADCx_CDR)读取两个转换后的数据。
也可以使用DMA读取常规数据。有两种方法:
1)使用两个DMA通道(一个用于主站,一个用于从站)。这里是比特MDMA[1:0]必须保持清洁。
- 配置DMA主ADC通道从主ADC读取ADC_DR。DMA请求在主ADC的每个EOC事件中生成。
- 配置DMA从ADC通道从从读取ADC_DR。DMA请求在从ADC的每个EOC事件中生成。
2)使用MDMA模式,这使得一个DMA通道自由用于其他用途:
- 配置MDMA[1:0] = 10或11(取决于分辨率)
- 使用单个DMA通道(主机的一个)。配置DMA主机ADC通道,用于读取通用ADC寄存器(ADCx_CDR)
- 每次主EOC事件和从EOC事件发生时,都会生成单个DMA请求。此时,从ADC转换的数据在ADCx_CDR 32位寄存器的上半字中可用,主ADC转换的数据在ADCx_CDR寄存器的下半字中可用。
- 当DMA读取ADCx_CDR寄存器时,两个EOC标志都被清除。
注意点:
在MDMA模式(MDMA[1:0] = 10或11)中,用户必须在主序列中编写与从序列中相同数量的转换。否则,其余的 转换不会生成DMA请求。
2.2 实现方法
实现框图:16路常规同步模式:双ADC模式
如果DISCEN = 1,则每“n”个常规序列的同时转换都需要发生 常规触发事件(“n”由discum定义)。
该模式可与autly模式结合使用:
1) 一旦序列的同步转换结束,序列中的下一个转换只有在公共数据寄存器ADCx_CDR(或主ADC的常规数据寄存器)被读取(延迟阶段)时才开始。
-
2)一旦同步的常规转换序列结束,只有在读取公共数据寄存器(ADCx_CDR)时才接受新的常规触发事件(延迟阶段)。在正在进行的常规序列和相关延迟阶段期间发生的任何新的常规触发事件都将被忽略。
假设使用多重DMA模式,可以使用DMA以常规同步模式结合 AUTDLY模式处理数据:MDMA必须设置为10或 11位。
当普通同步模式与auttly模式结合使用时, 用户必须确保:
1)主序列中的转换数量等于从序列中的转换数量。
-
2)对于序列的每次同步转换,从ADC转换的长度低于主ADC转换的长度。请注意,序列的长度取决于要转换的通道数量、采样时间和每个通道的分辨率。
注意点:
常规同步模式和auttly模式的这种组合仅限于在只编程常规通道的情况下使用 :禁止在这种组合模式下编程注入的 通道。
相关文章:

STM32G4 双ADC模式之常规同步模式独立注入模式
目录 概述 1 认识双ADC模式 2 功能实现 2.1 原理介绍 2.2 实现方法 概述 本文主要介绍STM32G4 双ADC模式之常规同步模式&独立注入模式相关内容,包括ADC模块的功能介绍,实现框架结构,以及常规同步模式&独立注入模式ADC的转换的实…...
深入理解网络协议:OSPF、VLAN、NAT与ACL详解
OSPF工作过程与基础配置 一、OSPF的工作过程 OSPF(开放最短路径优先)是一个广泛使用的路由协议,它的工作过程可以总结为以下几个步骤: 启动与邻居发现 OSPF在配置完成后,会通过本地组播地址224.0.0.5发送HELLO包。HE…...

idea 配置tomcat 服务
选择tomcat的安装路径 选到bin的文件夹的上一层就行...

.net core 接口,动态接收各类型请求的参数
[HttpPost] public async Task<IActionResult> testpost([FromForm] object info) { //Postman工具测试结果: //FromBody,Postman的body只有rawjson时才进的来 //参数为空时,Body(form-data、x-www-form-urlencoded)解析到的数据也有所…...

关注!这些型号SSD有Windows蓝屏问题需要修复
近期,在闪迪官方有一个SSD FW升级提醒,主要是为了解决Windows 11 24H2系统蓝屏的问题: Fix问题:这些SSD的主机内存缓冲区(Host Memory Buffer,简称HMB)功能可能会导致系统出现蓝屏死机ÿ…...
go语言gin框架平滑关闭——思悟项目技术2
目录 前言 直接关闭的缺陷 平滑关闭的使用场景 例子 思悟项目: golang qq邮件发送验证码——思悟项目技术1 前言 平滑关闭(graceful shutdown)是指在停止服务时,能够让现有的连接、任务或者操作优雅地完成,而不是…...

K8S flannel网络模式对比
K8S flannel网络模式对比 VXLAN 模式Host-GW 模式如何查看 Flannel 的网络模式?如何修改 Flannel 的网络模式?如何修改flannel vxlan端口?Flannel 是一个 Kubernetes 中常用的网络插件,用于在集群中的节点之间提供网络连接。Flannel 提供了多种后端实现方式,vxlan 和 host…...
Vue前端框架:Vue前端项目文件目录
文章目录 package.json 文件node_modulessrc(Source Code 的缩写)文件夹主要子文件夹及内容 publicdist package.json 文件 所在文件夹(通常是项目根目录) 虽然 package.json 本身不是一个文件夹,但它所在的文件夹&a…...
git回滚到指定的提交
如果你想回滚到特定的提交(例如 aa0ca72c),并且丢弃之后的所有更改,可以使用 git reset 命令。请注意,git reset 会改变你的提交历史,所以在多人协作项目中应谨慎使用。如果已经推送到远程仓库,…...

手机怎么玩森林之子?远程玩森林之子教程
你喜欢《森林之子》这款开放世界恐怖生存模拟游戏吗?玩家会被派到一座孤岛上,寻找一位失踪的亿万富翁,并深陷被食人生物占领的地方。你需要制作工具和武器、建造房屋,倾尽全力生存下去,无论独自一人还是与朋友一起。如…...

深度学习之网络与计算
1 网络操作与计算 1.1 前向传播与反向传播? 神经网络的计算主要有两种:前向传播(foward propagation, FP)作用于每一层的输入,通过逐层计算得到输出结果;反向传播(backward propagation, BP&a…...
《JVM第1课》Java 跨平台原理
无痛快速学习JVM,欢迎订阅本免费专栏 JVM Java的特性就是程序员一次编写,到处运行,意思是我们只需要写一份代码,就可以在不同的操作系统(windows、Linux、Mac OS等)中运行。但是不同的操作系统能看懂的指令…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30目录1. Step Guided Reasoning: Improving Mathematical Reasoning using Guidance Generation and Step Reasoning摘要研究背…...
加强版 第五节图像处理与视频分析
基本概念 图像轮廓 主要针对二值图像,轮廓是一系列点 vector<vector<Point>xxx用于存储多个点 vector<Vec4i>xxx包含四个整数,分别代表下一个轮廓的索引,上一个轮廓的索引,一个子轮廓的索引和父轮廓的索引 相…...

Orleans8.2入门测试
微软官方文档:快速入门:使用 ASP.NET Core 生成第一个 Orleans 应用 - .NET | Microsoft Learn 项目及引入的nuget库: 1、接口项目;2、接口实现项目;3、silo项目;4、客户端项目 其中Microsoft.Orleans.St…...

【Linux 25】网络套接字 socket 概念
文章目录 🌈 一、IP 地址概念⭐ 1. IP 地址的作用⭐ 2. 源 IP 地址和目的 IP 地址 🌈 二、端口号概念⭐ 1. 源端口号和目的端口号⭐ 2. 端口号范围划分⭐ 3. 端口号 VS 进程 ID⭐ 4. 套接字 socket 的概念 🌈 三、传输层的典型代表协议⭐ 1. …...
python openai 通过Function Call 创建自动化任务
目录 一、什么是Function Call(函数掉用) 1. 功能概述 2. 工作原理 二、如何实现函数调用 1、定义自己的get_weather 函数 2、给助手添加函数调用 3、写好instrction,指导assistant去掉用你定义的方法。 4、最后也是最重要的,捕获 Assistant 的 Function Call 三、…...
设计模式之责任链的通用实践思考
责任链模式通常一般用在方法的拦截、监控、统计方面,比较典型的就是Spring的AOP拦截。 但写一些小的基础能力框架的时候,用AOP比较中,所以一般都是自己针对特定的功能写一些定制的责任链工具类,不太喜欢总是做一些定制化的东西&am…...
前端用canvas绘图并支持下载
1.根据数据绘制饼图 /** 绘制环形图 */ const drawPieCharts () > {const {canWithdrawalPriceFront,noWithdrawalPriceFront,haveWithdrawalPriceFront,} this.state;const myCanvas this.cavasRef.current;// ts-ignoreconst ctx myCanvas.getContext(2d);if (ctx) {…...
【Mac】Homebrew
1、Homebrew 简介 官网地址:https://brew.sh Homebrew 是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。 Homebrew 主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。 源说明br…...
AI对软件工程的影响及未来发展路径分析报告
目录 第一部分:引言 研究背景与意义 报告框架与方法论 第二部分:AI对不同行业软件工程的影响分析 数字化行业 制造业 零售业 工业领域 第三部分:大厂AI软件工程实践案例分析 微软 谷歌 阿里巴巴 华为 第四部分:未来…...

pycharm终端遇不显示虚拟环境的问题
大部分我们用pycharm会配合我们的anaconda来使用,但是配置好后,可能会出现pycharm终端不显示虚拟环境的问题。 首先是确定不显示环境,下图中如果没有这个方框,就是不显示虚拟环境。此时用pip或者conda的命令是会提示不是 “不是内…...

微服务难题?Nacos服务发现来救场
文章目录 前言1.什么是服务发现2.Nacos 闪亮登场2.1 服务注册2.2 服务发现 3.Nacos 的优势3.1 简单易用3.2 高可用3.3 动态配置 4.实战演练4.1安装 Nacos4.2 服务注册与发现示例代码(以 Spring Boot 为例) 总结 前言 大家好,我是沛哥儿。今天…...

SQL查询——大厂面试真题
前言 本文总结了SQLite数据库的核心操作要点:1. 基础语法:SQL语句不区分大小写,多语句需用分号分隔,支持多种注释方式2. 表操作:包括创建表(定义主键、非空约束等)、插入/更新/删除数据、添加/…...

设计模式之结构型:桥接模式
桥接模式(Bridge Pattern) 定义 桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们可以独立变化。它通过组合代替继承,解决多层继承导致的类爆炸问题,适用于多维度变化的场景(如形状与颜…...

26 C 语言函数深度解析:定义与调用、返回值要点、参数机制(值传递)、原型声明、文档注释
1 函数基础概念 1.1 引入函数的必要性 在《街霸》这类游戏中,实现出拳、出脚、跳跃等动作,每项通常需编写 50 - 80 行代码。若每次调用都重复编写这些代码,程序会变得臃肿不堪,代码可读性与维护性也会大打折扣。 为解决这一问题&…...

<< C程序设计语言第2版 >> 练习 1-23 删除C语言程序中所有的注释语句
1. 前言 本篇文章介绍的是实现删除C语言源文件中所有注释的功能.希望可以给C语言初学者一点参考.代码测试并不充分, 所以肯定还有bug, 有兴趣的同学可以改进. 原题目是: 练习1-23 编写一个删除C语言程序中所有的注释语句. 要正确处理带引号的字符串与字符常量. 在C语言中, 注释…...

LangChain【3】之进阶内容
文章目录 说明一 LangChain Chat Model1.1 少量示例提示(Few-Shot Prompting)1.2 Few-Shot示例代码1.3 示例选择器(Eample selectors)1.4 ExampleSelector 类型1.5 ExampleSelector案例代码1.6 LangServe工具1.7 LangServe安装1.8 langchain项目结构1.9 …...

PyQt6基础_QtCharts绘制横向柱状图
前置: pip install PyQt6-Charts 结果: 代码: import sysfrom PyQt6.QtCharts import (QBarCategoryAxis, QBarSet, QChart,QChartView, QValueAxis,QHorizontalBarSeries) from PyQt6.QtCore import Qt,QSize from PyQt6.QtGui import QP…...

在React框架中使用Braft Editor集成Table表格的详细教程
简介:Braft Editor是一款基于draft-js开发的React富文本编辑器,支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构,适合需要数据展示的场景(如CMS系统、报表工具)。 1.安装依赖 yarn add…...