STM32H750外设ADC之模拟窗口看门狗

目录

概述

1 相关寄存器

2 功能描述

3  AWDx 标志和中断

4  模拟看门狗 1

4.1 模拟看门狗 1 说明

4.2 模拟看门狗通道选择

4.3 阀值选择

5 模拟看门狗 2和3

6 ADCx_AWDy_OUT 信号输出生成

6.1 功能介绍

6.2 输出信号案例

7 模拟看门狗 1、 2、 3 比较


概述

本文主要介绍STM32H750外设ADC之模拟窗口看门狗的功能,包括与之相关的寄存器配置、模拟窗口看门狗的实现,各类型看门狗的功能等内容。

1 相关寄存器

和模拟窗口看门狗相关有如下这些:( AWD1EN、 JAWD1EN、 AWD1SGL、 AWD1CH、
AWD2CH、 AWD3CH、 AWD_HTRy、 AWD_LTRy、 AWDy)。

2 功能描述

三个 AWD 模拟看门狗会监测一些通道是否保持在配置的电压范围(窗口)内。

3  AWDx 标志和中断

可通过将 ADCx_IER 寄存器( x=1、 2、 3)中的 AWDyIE 置 1 的方式分别为 3 个模拟看门狗使能中断。AWDy( y=1、 2、 3)标志可通过由软件向其写入 1 的方式来清零。在对齐之前,会将 ADC 转换结果与阈值上限和下限进行比较。

ADC x 中断使能寄存器 (ADCx_IER)( x=1 到 3)
ADC x interrupt enable register
偏移地址: 0x04
复位值: 0x0000 0000

位 9 AWD3IE:模拟看门狗 3 中断使能 (Analog watchdog 3 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 2 中断。
0:禁止模拟看门狗 3 中断
1:使能模拟看门狗 3 中断
注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。

位 8 AWD2IE:模拟看门狗 2 中断使能 (Analog watchdog 2 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 2 中断。
0:禁止模拟看门狗 2 中断
1:使能模拟看门狗 2 中断

注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。

位 7 AWD1IE:模拟看门狗 1 中断使能 (Analog watchdog 1 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 1 中断。
0:禁止模拟看门狗 1 中断
1:使能模拟看门狗 1 中断

注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。

4  模拟看门狗 1

4.1 模拟看门狗 1 说明

ADCx_CFGR 寄存器中的 AWD1EN 位置 1,可使能 AWD 模拟看门狗 1。该看门狗监测一条已选通道或所有已使能通道(1) 是否仍在配置的电压范围(窗口)内。

 位 23 AWD1EN:常规通道上的模拟看门狗 1 使能 (Analog watchdog 1 enable on regular channels)
此位由软件置 1 和清零
0:在常规通道上禁止模拟看门狗 1
1:在常规通道上使能模拟看门狗 1

4.2 模拟看门狗通道选择

应如何配置 ADCx_CFGRy 寄存器才能在一条或多个通道上使能模拟看门狗

 位 24 JAWD1EN:注入通道上的模拟看门狗 1 使能 (Analog watchdog 1 enable on injected channels)
此位由软件置 1 和清零
0:在注入通道上禁止模拟看门狗 1
1:在注入通道上使能模拟看门狗 1

位 22 AWD1SGL:在单一通道或所有通道上使能看门狗 1 (Enable the watchdog 1 on a single channel or onall channels)
此位由软件置 1 和清零,用于在通过 AWD1CH[4:0] 位确定的通道或所有通道上使能模拟看门狗。
0:在所有通道上使能模拟看门狗 1
1:在单一通道上使能模拟看门狗 1
 

4.3 阀值选择

如果 ADC 转换的模拟电压低于阈值下限或高于阈值上限,则 AWD1 模拟看门狗状态位会
置 1。这些阈值编程到模拟看门狗 1 的 ADCx_HTR1 寄存器的 HTR1[25:0] 位和 ADCx_LTR1 寄存器的 LTR1[25:0] 位。

ADC x 看门狗阈值寄存器 1 (ADCx_LTR1)( x=1 到 3)
ADC x watchdog threshold register 1
偏移地址: 0x20
复位值: 0x0000 0000


 位 25:0 LTR1[25:0]: 模拟看门狗 1 阈值下限 (Analog watchdog 1 lower threshold)
这些位由软件写入,用于定义模拟看门狗 1 的阈值下限。

ADC x 看门狗阈值寄存器 1 (ADCx_HTR1)( x=1 到 3)
ADC x watchdog threshold register 1
偏移地址: 0x24
复位值: 0x03FF FFFF
 

位 25:0 HTR1[25:0]: 模拟看门狗 1 阈值上限 (Analog watchdog 1 higher threshold)
这些位由软件写入,用于定义模拟看门狗的阈值上限。
 

阈值最高可达到 26 位( 16 位分辨率,过采样, OSR=1024)。如果转换的数据分辨率小于 16 位(取决于 RES[2:0] 位),编程阈值的 LSB 必须保持清零状态,并且会在内部对完整的 16 位转换数据进行比较(左对齐到半字边界)。

ADC x 配置寄存器 2 (ADCx_CFGR2)( x=1 到 3)
ADC x configuration register 2
偏移地址: 0x10
复位值: 0x0000 0000
 

位 25:16 OSR[9:0]:过采样率 (Oversampling ratio)
此位域由软件置 1 和清零,用于定义过采样率。
0: 1x(不进行过采样)
1: 2x
2: 3x
...
1023: 1024x
 

5 模拟看门狗 2和3

第二个和第三个模拟看门狗更加灵活,可通过编程 AWDCHy[19:0]( y=2、 3)中的相应位来保护多条已选通道。

以模拟看门狗 2为例,介绍寄存器配置:

ADC x 模拟看门狗 2 配置寄存器 (ADCx_AWD2CR)( x=1 到 3)
ADC x Analog Watchdog 2 Configuration Register
偏移地址: 0xA0
复位值: 0x0000 0000
 

位 19:0 AWD2CH[19:0]:模拟看门狗 2 通道选择 (Analog watchdog 2 channel selection)
这些位将由软件置 1 和清零。它们用于使能和选择由模拟看门狗 2 监控的输入通道。
AWD2CH[i] = 0:不通过 AWD2 监控 ADC 模拟输入通道 i
AWD2CH[i] = 1:通过 AWD2 监控 ADC 模拟输入通道 i
当 AWD2CH[19:0] = 000..0 时,会禁止模拟看门狗 2

AWDCHy[19:0]( y=2、 3)的任何位置 1 时,会使能相应的看门狗。阈值最高可达到 26 位(16 位分辨率,过采样, OSR=1024) ,通过 ADCx_HTR2、 ADCx_LTR2、ADCx_LTR3 和 ADCx_HTR3 寄存器进行编程。

如果转换的数据分辨率小于 16 位(取决于 RES[2:0] 位),编程阈值的 LSB 必须保持清零
状态,并且会在内部对完整的 16 位转换数据进行比较(左对齐到半字边界)。

6 ADCx_AWDy_OUT 信号输出生成

6.1 功能介绍

每个模拟看门狗都关联到一个内部硬件信号 ADCx_AWDy_OUT( x = ADC 编号, y = 看门狗编号),该信号直接连接到一些片上定时器的 ETR 输入(外部触发)。请参见片上定时器部分以了解如何选择 ADCx_AWDy_OUT 信号作为 ETR。

当关联的模拟看门狗使能时, ADCx_AWDy_OUT 会激活:
1)当受保护的转换超出编程阈值时, ADCx_AWDy_OUT 会置 1。


2)在编程阈值范围内的下一受保护转换结束后, ADCx_AWDy_OUT 会复位(如果下一受保护转换仍超出编程阈值范围,该位仍保持置 1)。


3)禁止 ADC 时(将 ADDIS 置 1 时), ADCx_AWDy_OUT 也保持复位状态。请注意,停止常规转换或注入转换(将 ADSTP 或 JADSTP 置 1)对 ADCy_AWDx_OUT 的生成没有任何影响。

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


位 1 ADDIS: ADC 禁止命令 (ADC disable command)
该位由软件置 1,用于禁止 ADC( ADDIS 命令)并使其进入掉电状态( OFF 状态)。
ADC 已有效禁止后,会立即通过硬件将该位清零(此时也会通过硬件将 ADEN 清零)。
0:当前未执行 ADDIS 命令。
1:写入 1 可禁止 ADC。读取值为 1 表示正在执行 ADDIS 命令
 

6.2 输出信号案例

1)ADCy_AWDx_OUT 信号生成(所有常规通道上)

2)ADCy_AWDx_OUT 信号生成( AWDx 标志未通过软件清零)

3)ADCy_AWDx_OUT 信号生成(单条常规通道上)

 4)ADCy_AWDx_OUT 信号生成(所有注入通道上)

7 模拟看门狗 1、 2、 3 比较

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

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

相关文章

Opencv_3_图像对象的创建与赋值

ColorInvert.h 如下&#xff1a; #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void mat_creation(); }; ColorInvert.cpp 文件如下&#xff1a; #include &q…

解决宝塔面板无法访问(无法访问或拒绝链接)

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;Linux ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 问题如下&#xff1a; 本人设置了授权IP&#xff0c;但是有些问题&#xff0c;所以是打算取消授权IP 重…

Spring Boot 自动装配执行流程

Spring Boot 自动装配执行流程 Spring Boot 自动装配执行流程如下&#xff1a; Spring Boot 启动时会创建一个 SpringApplication实例&#xff0c;该实例存储了应用相关信息&#xff0c;它负责启动并运行应用。实例化 SpringApplication 时&#xff0c;会自动装载META-INF/spr…

Linux文件chattr/lsattr/Linux权限(搭建权限测试环境实战)引申到内部原理及Linux删除系统文件原理-7539字详谈

企业高薪思维: 每一个阶段什么时候是最重要的&#xff1f;&#xff08;快速定位&#xff09; 1.学习最重要的事情 &#xff08;学生阶段&#xff0c;找工作前阶段&#xff09; 2.家庭&#xff0c;女朋友 &#xff08;工作阶段/学生阶段&#xff0c;学习不受到影响&#xff09; …

修改Ubuntu22.04系统图标

在Ubuntu 22.04中更改开机时显示的Ubuntu图标需要修改的设置。 主要思路是用自己图片替换系统图片&#xff0c;保持系统图片同名&#xff0c;同格式。 以下是一般的步骤&#xff1a; 修改启动界面的logo&#xff1a; sudo cp 新logo.png /usr/share/plymouth/themes/spinn…

@NameBinding注解名称绑定过滤器/拦截器

NameBinding注解名称绑定过滤器/拦截器&#xff0c;只针对某一些资源方法执行处理逻辑 一、为什么要用名称绑定 一般情况下&#xff0c;借助Spring的过滤器或者拦截器等对Http请求或响应进行处理就能满足需求。但是在有些场景下若只需对特定的xxxResource做拦截处理&#xff0…

项目大集成

一 keeplived 高可用 192.168.11.11nginx keeplived192.168.11.12nginx keeplived 两台均编译安装服务器 1 主服务器修改文件&#xff1a; 2 备服务器修改文本 scp keepalived.conf 192.168.11.12:/etc/keepalived/ 3 给主服务器添加虚拟ip ifconfig ens33:0 192.168…

【多态】底层原理

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C进阶 本篇文章主要讲解 多态底层原理 的相关内容 1. 多态原理 1.1 虚函数表 先看一下这段代码&#xff0c;计算一下sizeof(Base)是多少&#xff1a; class Base { public:virtual void Func1(){cout << &quo…

Oracle 21 C 安装详细操作手册,并配置客户端连接

Oracle 21 C 安装详细操作手册 Win 11 Oracle 21C 下载&#xff1a; Database Software Downloads | Oracle 中国 云盘共享 链接&#xff1a;https://pan.baidu.com/s/12XCilnFYyLFnSVoU_ShaSA 提取码&#xff1a;nfwc Oracle 21C 配置与登陆&#xff1a; 开始菜单 NetMa…

Git下载安装

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

华为认证云计算前景如何

互联网/移动互联网经历了高速发展的二十年&#xff0c;我们有幸一起见证了华为、阿里、腾讯、百度、字节跳动、京东、滴滴、拼多多等互联网公司的崛起&#xff0c;让普通技术人实现逆袭拿到高薪&#xff0c;也让小镇做题家们有了阶层跨越的机会。 但机会都是留给有准备的人&…

C++:特殊成员函数

构造函数、析构函数和拷贝构造函数是C类中的三种特殊成员函数&#xff0c;它们分别用于对象的初始化、清理和拷贝操作。 1.构造函数&#xff08;Constructor&#xff09;&#xff1a;构造函数在对象创建时自动调用&#xff0c;用于初始化对象的成员变量。它的名称与类名相同&a…

React Router 6 + Ant Design:构建基于角色的动态路由和菜单

要根据用户的角色生成不同的路由菜单并实现权限控制,你可以采取以下步骤: 定义路由配置 首先,你需要定义一个包含所有可能路由的配置文件,例如: const routes [{path: /dashboard,element: <DashboardPage />,roles: [admin, manager, user]},{path: /users,element:…

Node.js 基础学习

文章目录 1. Node.js1.1 是什么&#xff1f;1.2 作用 2. 命令行工具2.1 命令的结构2.2 常用命令 3. Node.js 注意点3.1 Node.js 中不能使用DOM 和BOM 的API3.2 Node.js 中顶级对象叫做global 4. Buffer4.1 Buffer 特点4.2 Buffer 创建方式4.3 Buffer 操作与注意点 5. 计算机基础…

CSS基础:浮动(float)的3种方式,清除浮动3种方式的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

【报错】ModuleNotFoundError: No module named ‘einops‘

1 报错 💔💔💔 ModuleNotFoundError: No module named einops 解决方法 💚 💚 💚 pip --default-timeout=100 install einops -i https://pypi.tuna.tsinghua.edu.cn/simple 问题解决啦!!!🌺🌺🌺 2 报错 💔💔💔 ModuleNotFoundError: No module

iOS OC项目中引入SwiftUI文件

iOS OC项目中引入SwiftUI文件 1、创建SwiftUI文件 2、第一次创建时&#xff0c;Xcode会提示桥接&#xff0c;选择 Creat Bridging Header即可。 3、创建swift管理类 /**在UIKit中使用SwiftUI&#xff0c;需要使用UIHostingController对SwiftUI进行包装&#xff0c;返回的是U…

C++11 数据结构7 队列的链式存储,实现,测试

前期考虑 队列是两边都有开口&#xff0c;那么在链式情况下&#xff0c;线性表的链式那一边作为对头好呢&#xff1f; 从线性表的核心的插入和删除算法来看&#xff0c;如果在线性表链表的头部插入&#xff0c;每次循环都不会走&#xff0c;但是删除的时候&#xff0c;要删除线…

echarts 双堆叠柱状图(数据整理)

1.后台返回的数据格式 {"code": "0000","message": "","messageCode": "操作成功","sign": null,"detail": null,"data": {"pieChart": [{"key": "产品…

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置&#xff1a; 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期&#xff1a; 当函数执行完毕时&#xff0c;普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…