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) 停止正在进行的常规转换和注入转换

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

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

相关文章

CentOS8/RHEL8 root密码破解

我们知道root是CentOS8/RHEL8系统的管理员用户,一般情况下,我们是不会把其密码忘记的,如果万一忘记了,如果破解root密码呢,今天就为大家详细讲讲。 1.CentOS8/RHEL8 root密码破解 1.默认安装及默认配置情况下&#x…

实践遥感场景目标检测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建遥感场景下MSTAR数据基础上的目标检测识别系统

遥感相关的实践在我们前面的系列博文中也有相关的一些实践,基于MASTAR数据集开发构建对应的目标检测系统在前文也有一些介绍,感兴趣的话可以自行移步阅读即可: 《基于YOLOv7开发构建MSTAR雷达影像目标检测系统》 《基于yolov5n的轻量级MSTA…

前端开发攻略---用原生JS在网页中也能实现语音识别

1、语音识别的过程 语音识别涉及三个过程:首先,需要设备的麦克风接收这段语音;其次,语音识别服务器会根据一系列语法 (基本上,语法是你希望在具体的应用中能够识别出来的词汇) 来检查这段语音;最后&#xf…

Git操作与异常处理

文章目录 常用操作1、代码拉取2、代码提交3、暂存区状态4、提交代码5、推送远程仓库 异常处理【1】报错信息:Cannot pull into a repository with state: MERGING【2】报错信息:You have not concluded your merge (MERGE_HEAD exists)【3】报错信息&…

【网络编程】网络编程概念 | TCP和UDP的区别 | UDP数据报套接字编程 | Socket

文章目录 网络编程一、什么是网络编程1.TCP和UDP的区别 二、UDP数据报套接字编程DatagramSocketDatagramPacket回显服务器(echo server) 网络编程 一、什么是网络编程 通过网络,让两个主机之间能够进行通信。基于通信来完成一定的功能。 ​…

2.7设计模式——Proxy 代理模式(结构型)

意图 为其它对象提供一种代理以控制这个对象的访问。 结构 Proxy保存一个引用使得代理可以访问实体;提供一个与Subject的接口相同的接口,使代理可以用来替代实体;控制实体的存取,并可能负责创建和删除它;其他功能依赖…

[实验]Keil 4下仿真三星2440A芯片的汇编及CPIO控制实验

一、安装Keil uVision4 (详细安装过程忽略) 点击finish完成安装 二、新建项目,导入项目文件 选择对应的芯片,此处我们选择三星的S3C2440A,点击OK 在Source Group 1处右键,点击Add Files to "Sourcce Group 1’…将下图…

Linux之ebpf(1)基础使用

Linux之ebpf(1)基础使用 Author: Once Day Date: 2024年4月20日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可以参考专栏:Linux基础知识_Once-D…

非对称渐开线齿轮学习笔记分享

最近有小伙伴遇到了非对称渐开线齿轮的加工问题,花了些时间学习了解一下,下面是总结的学习笔记,有兴趣的朋友可以瞅瞅: 目录: 为什么要采用非对称? 非对称有什么优点? 非对称齿形如何加工? 非对称齿轮怎么测量? 非对称齿轮建模 为什么要采用非对称? 现在的传动要求…

关于浏览器360导航无法更改

当前环境场景: 浏览器:Microsoft Edge 版本 121.0.2277.106 (正式版本) (64 位) 系统:Windows 11 家庭中文版 23H2 问题描述 首先出现这种情况会让我们非常的气愤但是又束手无策,看到这个页面简直就恨的牙根痒痒,但是…

14.MMD导入Blender及贴图步骤

MMD导出.abc文件 在MMD十周年桥版本导入一个人物模型,这里导入仆人 注意MMD的路径不能有中文 点击上面的MMDBridge 设定 第一个选择blender by 第二个选择实行 这里是选择帧数范围和帧率 帧率一定要是30,不然后面可能会出问题 点击文件导出视频…

C/C++开发,opencv-ml库学习,支持向量机(SVM)应用

目录 一、OpenCV支持向量机(SVM)模块 1.1 openCV的机器学习库 1.2 SVM(支持向量机)模块 1.3 支持向量机(SVM)应用步骤 二、支持向量机(SVM)应用示例 2.1 训练及验证数据获取 2…

Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程

文章目录 仓库地址项目简介如何使用 仓库地址 Github:https://github.com/palp1tate/WebsocketDemo 欢迎star!😎 项目简介 利用 GinWebSocket 实现的在线聊天室Demo项目,支持加入/离开聊天室广播、给其他用户发送消息等。 如何…

STL——List常用接口模拟实现及其使用

认识list list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素…

系统思考—心智模式

如果你总是做你过去一直做的事,你将永远得到你一直得到的结果。——托尼罗宾斯 在1980年代早期,美国汽车公司的高层主管定期前往日本参观,想要了解日本汽车行业为何能超越美国。这些主管返回后常说:“他们没有让我们看到真正的工…

工作任务管理平台作品集源文件 figma格式UX/UI设计师作品集

交付文件:作品集源文件项目源文件包装样机源文件字体文件 交付格式:figma、psd 作品集文件页数:28页 项目文件页数:12页(Web)12页(App) 以下重点哦,请认真阅读&#…

Halcon 3D 使用3D ROI截取模型

Halcon 3D 使用3D ROI截取模型 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取图片 ****************

《R语言与农业数据统计分析及建模》学习——方差分析

方差分析是研究一种或多种因素的变化对试验结果的观测值是否有显著影响,从而找到较优试验条件或生产条件的一种常用数理统计方法。 方差分析根据平方和的加和原理,利用F检验,进而判断试验因素对试验结果的影响是否显著。 分为:单因…

CMake+qt+Visual Studio

#使用qt Creator 创建Cmake 项目,使用Cmake Gui 生成sln 工程,使用Visual Studio 开发 ##使用qt Creator 创建CMake项目 和创建pro工程的步骤一致,只是在选择构建系统的步骤上选择CMake,接下来步骤完全相同 工程新建完成之后,构建cmake 项…

公司服务器中的kafka消息中间件挂了,我是如何修复的?

今天的公司的system系统服务在运行过程中,提示连接不上kafuka的消息中间件。但是负责kafka的同事已经离职了,询问公司开发也不知道如何处理,我是如何重启kafka消息中间件使system系统服务正常运行? 查看kafka的安装位置 在下面的…