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

news2025/1/4 5:33:48

目录

概述

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.coloradmin.cn/o/1624606.html

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

相关文章

JavaScript-Vue入门

本文主要测分享Vue的一些基础 Vue简介 Vue.js 是一个构建数据驱动的 web 界面的渐进式框架。它的主要目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 下是一些 Vue 的主要特点和概念: 1. 响应式数据绑定:Vue 使用基于 HTML 的模板语法…

Android --- SharedPreferences

SharedPreferences 对应sp文件的接口 使用 SharedPreferences API可以保存的相对较小键值对集合。SharedPreferences 对象指向包含键值对的文件,并提供读写这些键值对的简单方法。每个 SharedPreferences 文件均由框架进行管理,可以是私有文件&#xff…

李沐66_使用注意力机制的seq2seq——自学笔记

加入注意力 1.编码器对每次词的输出作为key和value 2.解码器RNN对上一个词的输出是query 3.注意力的输出和下一个词的词嵌入合并进入RNN 一个带有Bahdanau注意力的循环神经网络编码器-解码器模型 总结 1.seq2seq通过隐状态在编码器和解码器中传递信息 2.注意力机制可以根…

stable diffusion 的controlNet 安装和使用

stable diffusion 安装controlNet需要先下载扩展 扩展地址 下载了扩展以后,需要下载相应的模型,每个模型大约1.45G,可以按需下载。 模型地址 如果下载速度太慢,可以考虑去liblib下载,但是是全量模型 liblib 模型下载完后&#…

使用windows端MySQL创建数据库

1.命令行登录数据库 命令:mysql -u用户名 -p密码; 切记命令后面要以分号结尾 2. 查看和创建数据库 查看数据库命令:show database; 创建数据库命令:mysql> create database db_classes; 创建一个名为db_classes的…

通配符HTTPS安全证书

众多类型的SSL证书,要说适用或者说省钱肯定是通配符了,因为谁都想一本SSL证书包括了整条域名,而且也不用一条一条单独管理。 通配符HTTPS安全证书,其实就是通配符SSL证书,SSL证书主流CA的参数都一样,通配符…

使用riscv-tests进行指令测试(二)

使用riscv-tests进行指令测试(二) 1 测试用例命名规则2 测试用例dump文件介绍 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。 1 测试用例命名规则 用例名称 TVM Name “-” Target Environment Name “-” “指令”…

【论文浅尝】Phi-3-mini:A Highly Capable Language Model Locally on Your Phone

Phi-3-mini phi-3-mini,一个3.8亿个参数的语言模型,训练了3.3万亿个token,其总体性能,通过学术基准和内部测试进行衡量,可以与Mixtral 8x7B和GPT-3.5等模型相媲美(在MMLU上达到69%,在MT-bench上达到8.38)&…

python_django农产品物流信息服务系统6m344

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 Flask 是一个轻量级的 Web 框架,使用 Python 语言编写,较其他同类型框…

13 如何利用缓存实现万级并发扣减

在上一讲的实现方案里我们讨论了采用纯数据库的扣减实现方案,如果以常规的机器或者 Docker 来进行评估,此方案较难实现单机过万的 TPS。之所以介绍,是想告诉你,架构是面向业务功能、成本、实现难度、时间等因素的取舍,…

广工电工与电子技术实验报告-8路彩灯循环控制电路

实验代码 module LED_water (clk,led); input clk; output [7:0] led; reg [7:0] led; integer p; reg clk_1Hz; reg [7:0] current_state, next_state; always (posedge clk) begin if(p25000000-1)begin …

对2023年图灵奖揭晓看法

2023年图灵奖揭晓,你怎么看? 2023年图灵奖,最近刚刚颁给普林斯顿数学教授 Avi Wigderson!作为理论计算机科学领域的领军人物,他对于理解计算中的随机性和伪随机性的作用,作出了开创性贡献。这些贡献不仅推…

C++修炼之路之多态---多态的原理(虚函数表)

目录 一:多态的原理 1.虚函数表 2.原理分析 3.对于虚表存在哪里的探讨 4.对于是不是所有的虚函数都要存进虚函数表的探讨 二:多继承中的虚函数表 三:常见的问答题 接下来的日子会顺顺利利,万事胜意,生活明朗--…

PPSSPPSDL for Mac v1.17.1 PSP游戏模拟器(附500款游戏) 激活版

PPSSPPSDL for Mac是一款模拟器软件,它允许用户在Mac上运行PSP(PlayStation Portable)游戏。通过这款模拟器,用户可以体验到高清甚至更高的分辨率的游戏画面,同时还能够升级纹理以提升清晰度,并启用后处理着…

安卓手机连接电脑实用技巧:实现文件传输与共享

在手机使用过程中,我们常常需要将手机中的文件传输到电脑,或者将手机与电脑进行共享。为了实现这一需求,掌握一些实用的安卓手机连接电脑技巧就显得尤为重要。本文将为您详细介绍2种简单、高效且安全的方法,让您轻松实现安卓手机与…

【网络安全】安全事件管理处置 — 事件分级分类

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、安全事件分级 二、应急事件分级 三、安全事件分类 四、常见安全事件原因分析 1.web入侵 2.漏洞攻击 3.网络攻击 一、安全事件分级 在对安全事件的应急响应过程中&#xf…

如何最大程度使用AWS?

随着云计算技术的不断发展,AWS已经成为众多企业的首选,为其提供了强大的基础设施和服务。那么如何最大程度地、灵活地利用AWS,成为许多企业专注的焦点。九河云作为AWS的合作伙伴,为读者们提供一些技巧和策略,帮助读者充…

物联网鸿蒙实训解决方案

一、建设背景 在数字化浪潮汹涌的时代,华为鸿蒙系统以其前瞻的技术视野和创新的开发理念,成为了引领行业发展的风向标。 据华为开发者大会2023(HDC. Together)公布的数据,鸿蒙生态系统展现出了强劲的发展动力&#x…

Qt : 禁用控件默认的鼠标滚轮事件

最近在写一个模拟器,在item中添加了很多的控件,这些控件默认是支持鼠标滚动事件的。在数据量特别大的时候,及容易不小心就把数据给修改了而不自知。所有,我们这里需要禁用掉这些控件的鼠标滚轮事件。 实现的思想很简单&#xff0c…

[Swift]组件化开发

一、组件化开发基础 1.组件定义 在软件开发中,一个组件是指一个独立的、可替换的软件单元,它封装了一组相关的功能。组件通过定义的接口与外界交互,并且这些接口隔离了组件内部的实现细节。在Swift语言中,组件可以是一个模块、一…