STM32H750外设ADC之开始和结束数据转换功能

目录

概述

1 开始转换

1.1 使能ADSTART

1.2 使能JADSTART

1.3  ADSTART 通过硬件清零

2 转换时序

3 停止正在进行的转换( ADSTP、 JADSTP)

3.1 停止转换功能实现

3.2 停止转换流程图


概述

本文主要讲述了STM32H750外设ADC之开始和结束数据转换功能,包括ADC开始数据转换的流程和结束数据转换的流程。

1 开始转换

1.1 使能ADSTART

通过将 ADSTART 置 1 的方式开始进行 ADC 常规转换。


ADSTART 置 1 后, 会开始进行转换:
1) 立即开始转换: EXTEN = 0x0 时(软件触发)

2) 在所选常规硬件触发的下一有效边沿开始转换: EXTEN /= 0x0 时,软件通过将 JADSTART 置 1 的方式开始进行 ADC 注入转换。

ADC x 控制寄存器 (ADCx_CR)( x=1 到 3)
ADC x control register
偏移地址: 0x08
复位值: 0x2000 0000

ADC x 配置寄存器 (ADCx_CFGR)( x=1 到 3)
ADC x configuration register
偏移地址: 0x0C
复位值: 0x8000 0000 

1.2 使能JADSTART

JADSTART 置 1 后,会开始进行转换:
1) 立即开始转换: JEXTEN = 0x0 时(软件触发)

ADC x 注入序列寄存器 (ADCx_JSQR)( x=1 到 3)
ADC x injected sequence register
偏移地址: 0x4C
复位值: 0x0000 0000

2) 在所选注入硬件触发的下一有效边沿开始转换

JEXTEN /= 0x0 时ADSTART 位和 JADSTART 位还提供当前是否正在进行 ADC 操作的信息。可以在 ADSTART=0且 JADSTART=0(指示 ADC 处于空闲状态)时重新配置 ADC

ADC x 控制寄存器 (ADCx_CR)( x=1 到 3)
ADC x control register
偏移地址: 0x08
复位值: 0x2000 0000

位 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 必须保持清零)


位 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 必须保持清零)

注意: 在自动注入模式下 (JAUTO=1),使用 ADSTART 位开始常规转换,然后再进行自动注入转换( JADSTART 必须保持清零)。

1.3  ADSTART 通过硬件清零

1)在使用软件触发的单次模式下( CONT=0, EXTEN=0x0)


在该模式下,只要转换序列结束 (EOS=1) 就清零

2)在使用软件触发的不连续模式下( CONT=0、 DISCEN=1、 EXTEN=0x0)

在该模式下,转换结束时 (EOC=1) 清零

3)在所有其他情况下( CONT=x、 EXTEN=x)
  执行由软件调用的 ADSTP 程序之后清零

注意: 在连续模式下 (CONT=1),由于序列会自动重新启动,因此,当 EOS 置 1 时, ADSTART 位不会通过硬件清零。

4)单次模式下选择了硬件触发( CONT=0 且 EXTEN /=0x00)

当 EOS 置 1 时,ADSTART 位不会通过硬件清零,借此软件无需再次为下一个硬件触发事件复位 ADSTART。这样可确保不会错过任何后续的硬件触发。

JADSTART 通过硬件清零:
a) 在使用注入触发的单次模式下 (JEXTEN=0x0)

如果 JDISCEN=1,只要注入转换序列结束( JEOS 置 1)或子组处理结束就清零。

b) 在所有情况下 (JEXTEN=x)
执行由软件调用的 JADSTP 程序之后清零。


注意: 选择软件触发时,如果 EOC 标志仍为高电平,则不应将 ADSTAR

2 转换时序

从转换开始到转换结束所经过的时间是配置的采样时间与逐次逼近时间(具体取决于数据分辨率)的总和:

 模数转换时间

 模数时序图

3 停止正在进行的转换( ADSTP、 JADSTP)

3.1 停止转换功能实现

软件决定是否停止转换,要停止正在进行的常规转换,应将 ADSTP 置 1;要停止正在进行的注入转换,应将 JADSTP 置 1 。

位 5 JADSTP: ADC 停止注入转换命令 (ADC stop of injected conversion command)
该位由软件置 1,用于停止和丢弃正在进行的注入转换( JADSTP 命令)。当转换已有效丢弃、并且可重新配置 ADC 注入序列和触发时,会通过硬件将该位清零。随后, ADC会准备好接收新的开始注入转换命令( JADSTART 命令)。


0:当前未执行 ADC 停止注入转换命令
1:写入 1 可停止正在进行的注入转换。读取值为 1 表示正在执行 ADSTP 命令。

注意:

仅当 JADSTART=1 且 ADDIS=0 时( ADC 已使能、最终会进行注入转换、并且没有任何待处理的禁止 ADC 的请求),才允许通过软件将 JADSTP 置 1。
在自动注入模式下 (JAUTO=1),将 ADSTP 位置 1 会中止常规转换和注入转换(不要使用
JADSTP)


位 4 ADSTP: ADC 停止常规转换命令 (ADC stop of regular conversion command)
该位由软件置 1,用于停止和丢弃正在进行的常规转换( ADSTP 命令)。当转换已有效丢弃、并且可重新配置 ADC 常规序列和触发时,会通过硬件将该位清零。随后, ADC会准备好接收新的开始常规转换命令( ADSTART 命令)。


0:当前未执行 ADC 停止常规转换命令
1:写入 1 可停止正在进行的常规转换。读取值为 1 表示正在执行 ADSTP 命令。

停止转换将复位正在进行的 ADC 操作。随后可重新配置 ADC(例如:更改通道选择或触发),为新操作做好准备。

请注意,不能在常规转换仍在执行时停止注入转换,反之亦然。这样便可在常规转换仍在进行时重新配置注入转换序列和触发(反之亦然)。

如果 ADSTP 位由软件置 1,则会中止任何正在进行的常规转换,并会丢弃部分转换结果( ADCx_DR 寄存器不会更新为当前转换结果)。

如果 JADSTP 位由软件置 1,则会中止任何正在进行的注入转换,并会丢弃部分转换结果( ADCx_JDRy 寄存器不会更新为当前转换结果)。扫描序列也会中止并会复位(这意味着重启 ADC 将重新开始新的序列)。

该程序执行完毕后, ADSTP/ADSTART 位(常规转换时)或 ADSTP/JADSTART 位(注入转换时)会由硬件清零,软件必须轮询 ADSTART(或 JADSTART)直至其复位,然后才能判定 ADC 已完全停止运行。

3.2 停止转换流程图

1)停止正在进行的常规转换

2) 停止正在进行的常规转换和注入转换

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏 第一步 确认有添加静态库第二步 验证第三步 修改源码在合适的地方配置 ro.product.is_support_SettingsSplitEnabled 即可。第一步 确认有添加静态库 --- a/packages/apps/Settings/Android.bp +++ b/packages/apps/Set…

[集群聊天项目] muduo网络库

目录 网络服务器编程常用模型什么是muduo网络库什么是epoll muduo网络库服务器编程 网络服务器编程常用模型 【方案1】 : accept read/write 不是并发服务器 【方案2】 : accept fork - process-pre-connection 适合并发连接数不大,计算任…

Centos的一些基础命令

CentOS是一个基于开源代码构建的免费Linux发行版,它由Red Hat Enterprise Linux (RHEL) 的源代码重新编译而成。由于 CentOS是基于RHEL构建的,因此它与RHEL具有非常类似的特性和功能,包括稳定性、安全性和可靠性。并且大部分的 Linux 命令在C…

Apache Doris 2.x 版本【保姆级】安装+使用教程

Doris简介 Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于…

COOIS 生产订单显示系统增强

需求说明:订单系统显示页面新增批量打印功能 增强点:CL_COIS_DISP_LIST_NAVIGATION -->TOOLBAR方法中新增隐式增强添加自定义打印按钮 增强点:BADI-->WORKORDER_INFOSYSTEM新增增强实施 实现位置:IF_EX_WORKORDER_INFOSYS…

频裂变加群推广强制分享引流源码

视频裂变加群推广强制分享引流源码,用户达到观看次数后需要分享给好友或者群,好友必须点击推广链接后才会增加观看次数。 引导用户转发QV分享,达到快速裂变引流的效果! 视频裂变推广程序,强制分享链接,引导用户转发,…

数据库MySQL的初级基础操作

文章目录 1. 介绍2. 数据库相关概念3. 启动4. 数据模型5. SQL6. DDL数据库DDL-表操作DDL-表操作-数据类型DDL-表操作-修改DDL-表操作-删除 7. 图形化界面工具DataGrip8. DML(数据操作语言)DML-添加数据DML-修改数据 9. DQL(数据查询语言)基本查询条件查询…

MemFire案例-政务应急物联网实时监测预警项目

客户背景 党的十八大以来,中央多次就应急管理工作做出重要指示:要求坚持以防为主、防抗救相结合,全面提升综合防灾能力;坚持生命至上、安全第一,完善安全生产责任制,坚决遏制重特大安全事故。 面对新形势…

小白学习SpringCloud之Eureka

前言 需要搭建springcloud项目,eureka是其中的一个模块,依赖主要继承父依赖 学习视频:b站狂神说 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.comEureka入门案例 eureka…

Maven的仓库、周期和插件

一、简介 随着各公司的Java项目入库方式由老的Ant改为Maven后,相信大家对Maven已经有了个基本的熟悉。但是在实际的使用、入库过程中,笔者发现挺多人对Maven的一些基本知识还缺乏了解,因此在此处跟大家简单地聊下Maven的相关内容&#xff0c…

如何把经验变成可以销售的“知识产品”?

知识付费,很多人想做,但是不知道如何把自己在某方面的“经验”,变成一个“知识产品”,那么这篇文章,我们就来聊聊如何从0打造一个知识产品 非常简单,一共六个步骤: 第一步:取名字&…

【深度学习】StabelDiffusion,Lora训练过程,秋叶包,Linux,SDXL Lora训练

文章目录 一、环境搭建指南二、个性化安装流程三、启动应用四、打开web五、开始训练 19.27服务器 一、环境搭建指南 打造一个高效且友好的开发环境,我们推荐使用以下简洁明了的中文资源: 项目源码获取: 通过以下命令轻松克隆项目及所有子模…

(一)Dataframes安装与类型 #Julia数据分析 #CDA学习打卡

目录 一. Julia简介 二. Dataframe构造方法 1)访问列的方式 (a)判断严格相等 i. 切片严格相等是true ii. 复制严格相等是false (b)判断相等 i. 切片相等是true ii. 复制相等是true 2)获取列名称 …

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ③

DRQ什么时候调度Node去填写dependency ::Pipeline调度Node的sequenceId 0执行 Pipeline::ProcessRequest() { for (UINT nodeIndex 0; nodeIndex < m_orderedNodeCount ; nodeIndex) m_pDeferredRequestQueue->AddDef…

ROM修改进阶教程------如何去除安卓机型系统的开机向导 几种操作步骤解析

在和很多工作室定制化系统中。手机在第一次启动的时候系统都会进入设置向导,虽然可以设置手机的基本配置。但有很多客户需要去除手机的开机向导来缩短开机时间。确保手机直接进入工作状态。那么今天的教程针去除对开机向导的几种方法做个解析。机型很多版本不同。操作也有不同…

JS实现对用户名、密码进行正则表达式判断,网页跳转

目标&#xff1a;使用JS实现对用户名和密码进行正则表达式判断&#xff0c;用户名和密码正确时&#xff0c;进行网页跳转。 用户名、密码的正则表达式检验 HTML代码&#xff1a; <button type"submit" id"login-btn" /*onclick"login();alidate…

四川易点慧电子商务:抖音小店引领潮流,先进模式打造电商新标杆

在当下数字化浪潮中&#xff0c;电子商务行业如日中天&#xff0c;四川易点慧电子商务有限公司以其独特的视角和前瞻性的战略布局&#xff0c;成功在抖音小店领域崭露头角&#xff0c;成为行业内的佼佼者。本文将深入剖析四川易点慧电子商务的成功秘诀&#xff0c;以及其在抖音…

【openLooKeng-1.10.0集群环境安装部署】

openLooKeng-1.10.0集群环境安装部署 一、摘要二、正文1. 环境说明2. 集群拓扑图3. 安装过程(以root用户安装)3.1 在Coordinator和Worker两个节点都需要安装jdk1.8+3.2 在Coordinator上安装配置openLooKeng3.3 在Worker节点上进行配置openLooKeng3.4 在Coordinator节点上先启…

Spring Boot集成Redisson实现延迟队列

项目场景&#xff1a; 在电商、支付等领域&#xff0c;往往会有这样的场景&#xff0c;用户下单后放弃支付了&#xff0c;那这笔订单会在指定的时间段后进行关闭操作&#xff0c;细心的你一定发现了像某宝、某东都有这样的逻辑&#xff0c;而且时间很准确&#xff0c;误差在1s内…

OceanBase单机版安装体验

前情提要 上周OceanBase开发者大会过后&#xff0c;作为观察员也来体验一下OB的安装。业内有某个国产安装用了两周&#xff0c;这种其实有点劝退了。话说就是10年前&#xff0c;没搞过Oracle的人也不用两周安装一个数据库啊。今天看看OB的&#xff08;一体化&#xff09;安装。…