STM32H750 COMP模拟比较器

STM32H750 COMP模拟比较器


  • 🔖STM32H750内置两个超低功耗比较器通道(COMP1 和 COMP2).
  • 📄功能应用:
  • 在模拟信号的触发下从低功耗模式唤醒
  • 模拟信号调理
  • 与定时器的 PWM 输出结合使用时,构成逐周期电流控制环路.

📙COMP主要特性

  • 🌿可选反相模拟输入:
  • I/O 引脚(因通道而异)
  • DAC 通道 1 和通道 2 输出
  • 通过调节器(缓冲分压器)提供的内部参考电压和三个因数分压值(1/4、1/2、3/4)
  • 每个通道有两个 I/O 引脚可选作非反相模拟输入
  • 可编程迟滞
  • 可编程速度/功耗
  • 将输出映射到 I/O
  • 将输出重定向到用于触发以下事件的定时器输入:
  • 捕捉事件
  • OCREF_CLR 事件(用于逐周期电流控制)
  • 断路事件(用于快速 PWM 关断)
  • 消隐比较器输出
  • 窗口比较器
  • 可生成中断,用于使器件从睡眠模式和停止模式唤醒(通过 EXIT 控制器)
  • 将中断输出定向到 CPU
2路比较器功能框图

在这里插入图片描述

📚比较器功能描述

📗COMP 引脚和内部信号
  • 用作比较器输入的 I/O 必须在 GPIO 寄存器中配置为模拟模式。
  • 比较器输出可通过其复用功能连接到 I/O。
  • 输出也可以在内部重定向到用于以下用途的各种定时器输入:
  • 使用 BKIN 和 BKIN2 输入紧急关断 PWM 信号
  • 使用定时器的 ETR 输入进行逐周期电流控制
  • 用于时序测量的输入捕捉.

比较器输出可以在内部同时连接到 I/O 引脚。
在这里插入图片描述

在这里插入图片描述

COMP 复位和时钟

时钟控制器提供的时钟 comp_pclk 与 APB 时钟同步。

注: 重要提示:极性选择逻辑和到端口的输出重定向独立于 APB 时钟。因此,即使在停止模式下 ,比较器仍能正常工作。连接至 CPU 的 NVIC 的中断线需要 APB 时钟 (comp_pclk) 才能工 作。如果没有 APB 时钟,则无法生成中断信号 comp_it。

比较器锁定机制

这两个比较器可用于过流或热保护等安全用途。对于具有特定功能安全要求的应用,可对比较器配置进行保护,以防发生意外修改(例如,当程序计数器损坏时)。为此,可以对比较器配置寄存器进行写保护(只读)。一旦比较器通道配置完成,其 LOCK 位设置为 1。从而使得只能读取比较器通道的整个寄存 器组以及通用 COMP_OR 寄存器,包括 LOCK 位。
只能通过 MCU 复位来移除写保护。
COMP_OR 寄存器由 COMP_CFGR1 或 COMP_CFGR2 的 LOCK 位进行锁定。

窗口比较器

窗口比较器用于监视模拟电压并检查其是否处于阈值上下限所定义的特定电压范围内。
窗口比较器需要两个 COMP 通道。受监视的模拟电压连接至其非反相 (+) 输入,阈值上下限
电压分别连接至各比较器的反相 (-) 输入。通过使能 WINMODE 位,可使 COMP 通道 2 的
非反相输入在内部与 COMP 通道 1 的非反相输入相连。这可以节省 COMP 通道 2 的输入引
脚以用于其他用途。

迟滞

比较器具有可编程迟滞,可在有噪声信号时避免发生意外输出转换。迟滞可在不需要时(例如,退出低功耗模式时)禁止,以便使用外部组件强制迟滞值.
在这里插入图片描述

比较器输出消隐功能

消隐功能的目的是防止电流调节在 PWM 周期开始处出现短暂电流尖峰(通常为功率开关反向并联二极管中的恢复电流)时发生跳闸。该功能使用通过定时器输出比较信号定义的消隐窗口。有关可选消隐信号,请参见寄存器说明。消隐信号对内部比较器输出进行门控,以便能使 comp_out 免受因电流尖峰而导致的寄生脉冲的干扰,
在这里插入图片描述

GPIO 上的比较器输出

比较器通道的 COMP1_OUT 和 COMP2_OUT 输出通过 COMP_OR 寄存器的 AFOP 字段 (位 [10:0])以及通过 GPIO 复用功能映射到 GPIO。
在这里插入图片描述
在这里插入图片描述
两种比较器通道输出的 GPIO 分配都必须在锁定任一通道的寄存器之前完成,因为在锁定任一比较器通道的寄存器时会锁定通用 COMP_OR 寄存器。

比较器输出重定向

任一 COMP 通道的输出均可重定向到定时器刹车输入(TIMx_BKIN 或 TIMx_BKIN2)可将 COMP 通道输出连接至其中一个 GPIO(可在复用功能中进行编程),作为定时器刹车输入。见表 218 和表 219。所选 GPIO 必须被设置为开漏模式。
COMP 输出通过 GPIO 传递至定时器刹车输入。通过上拉电阻,所选 GPIO 可用作定时器刹
车输入(与比较器输出进行逻辑 OR 运算)。

在这里插入图片描述

COMP 功耗和速度模式

对于给定的应用,可调节 COMP 通道功耗与传播延迟以获得最佳平衡。
COMP_CFGRx 寄存器的位 PWRMODE[1:0] 可编程为如下值:
00:高速/全功耗
01:中速/中等功耗
10:中速/中等功耗
11:极低速/超低功耗

COMP 低功耗模式

在这里插入图片描述
注: 当内部参考电压关闭时,不能使用比较器将器件从休眠或停止模式退出。

COMP 中断

可通过两种方式将比较器用作中断源。
比较器输出从内部连接到扩展中断和事件控制器。每个比较器都具有其各自的 EXTI 线,能
够产生中断或事件,可使器件退出低功耗模式。
比较器还提供有连接至 CPU 的 NVIC 的中断线。在 CPU 激活时使用该功能处理低延迟中
断。这需要 APB 时钟处于运行状态。

通过 EXTI 模块实现的中断

更多详细信息,请参见中断和事件部分。通过 EXTI 模块实现 COMPx 中断的程序:

  1. 将 EXTI 线(用于接收 comp_wkup 信号)配置为中断模式,选择上升沿、下降沿或任
    一边沿有效,然后使能 EXTI 线。
  2. 配置并使能映射到相应 EXTI 线的 NVIC IRQ 通道。
  3. 使能 COMPx。
    在这里插入图片描述
通过 CPU 的 NVIC 实现中断

通过 CPU 的 NVIC 实现 COMPx 中断的程序:

  1. 配置并使能映射到 comp_it 线的 NVIC IRQ 通道。
  2. 在 COMP_CFGRx 中配置并使能 ITEN。
  3. 使能 COMPx。
    在这里插入图片描述
    注: 要使用该中断,需要使能 APB 时钟。如果未使能该时钟,则不会生成中断。
SCALER 功能

调节器模块用于为各个比较器输入提供不同的参考电压。其基于一个驱动电阻桥的放大器。
放大器输入连接至内部参考电压。
放大器和电阻桥可单独使能。放大器由 COMP_CFGRx 寄存器的 SCALEN 位使能。电阻桥由 COMP_CFGRx 寄存器的 BRGEN 位使能。
如果未使用电阻分压,则可断开电阻桥,以降低功耗。断开后,1/4 VREF_COMP、1/2 VREF_COMP和 3/4 VREF_COMP 值等于 VREF_COMP。
在这里插入图片描述

📘作为模拟信号的触发源,从低功耗模式唤醒

模拟比较器用作信号触发源,从低功耗模式中唤醒。此应用例程可以在.pack包中找到相关例程:COMP_Interrupt

  • 从低功耗模式中唤醒例程配置:使用内部1.2V参考电压,作为反向端(INM),正向端(INP):PB0引脚作为信号输入端。
    在这里插入图片描述
/**
  * @brief  COMP configuration
  * @param  None
  * @retval None
  */
void COMP_Config(void)
{
  /*##-1- Configure the COMP1 peripheral ###################################*/
  Comp1Handle.Instance = COMP1;
  
  Comp1Handle.Init.InvertingInput    = COMP_INPUT_MINUS_VREFINT;//内部参考电压作为VINP:1.2V±02
  Comp1Handle.Init.NonInvertingInput = COMP_INPUT_PLUS_IO1; /* PB.00 */
  Comp1Handle.Init.OutputPol         = COMP_OUTPUTPOL_NONINVERTED;
  Comp1Handle.Init.Mode              = COMP_POWERMODE_HIGHSPEED;
  Comp1Handle.Init.Hysteresis        = COMP_HYSTERESIS_NONE;
  Comp1Handle.Init.BlankingSrce      = COMP_BLANKINGSRC_NONE;
  Comp1Handle.Init.WindowMode        = COMP_WINDOWMODE_DISABLE;
  Comp1Handle.Init.TriggerMode       = COMP_TRIGGERMODE_IT_RISING;
  
  if(HAL_COMP_Init(&Comp1Handle) != HAL_OK)
  {
    /* Initialization Error */
    Error_Handler();
  }
}

/**
  * @brief COMP MSP Initialization 
  *        This function configures the hardware resources used in this example:
  *           - Peripheral's clock enable
  *           - Peripheral's GPIO Configuration  
  *           - NVIC configuration for COMP interrupt request enable
  * @param hcomp: COMP handle pointer
  * @retval None
  */
void HAL_COMP_MspInit(COMP_HandleTypeDef *hcomp)
{
  GPIO_InitTypeDef      GPIO_InitStruct;

  /*##-1- Enable peripherals and GPIO Clocks #################################*/
  /* Enable GPIO clock ***************************************************/
  COMPx_GPIO_CLK_ENABLE();
  
  /* Enable COMP peripheral clock ****************************************/
  __HAL_RCC_COMP12_CLK_ENABLE();
  /*##-2- Configure peripheral GPIO ##########################################*/
  /* COMP GPIO pin configuration */
  GPIO_InitStruct.Pin = COMPx_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(COMPx_GPIO_PORT, &GPIO_InitStruct);

  /*##-3- Configure the NVIC for COMPx #######################################*/
   /* Enable the COMPx IRQ Channel */
  HAL_NVIC_SetPriority(COMPx_IRQn, 3, 0);
  HAL_NVIC_EnableIRQ(COMPx_IRQn);
}
  • 🌿main:
/* Configure the COMP1 peripheral */
  COMP_Config();
  
  /*## Enable peripherals ####################################################*/
  /* Start COMP1 */
  if(HAL_COMP_Start_IT(&Comp1Handle) != HAL_OK)
  {
    /* Initialization Error */
    Error_Handler(); 
  }
/* Enter STOP mode */
    HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);//进入停机模式

    /* ... STOP mode ... */
  
    /* at that point, MCU has been awoken */
    //当PB0引脚电压信号大于1.2V时,停机模式会被唤醒,继续执行下面的代码,需要重新初始化时钟和其他需要使用到的外设。
    /* Re-configure the system clock  */
    SystemClock_Config();
  • 🌿比较器中断回调:
void HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp)
{
	if (hcomp->Instance==COMP1)
    {
        // 执行相应的操作
			COMP_TRG_FLG =1;
    }
	
}

当比较器输入引脚PB0,输入电压在超过1.2V时,会响应中断。如果开启了停机模式,则会唤醒,继续执行HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);之后的代码。

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

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

相关文章

5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗

在当今这个快速发展的数字化时代,5G技术的广泛应用正以前所未有的速度推动着各行各业的变革。作为这一技术浪潮中的重要一环,5G智能终端QM630D凭借其卓越的性能和多样化的功能,在林业、渔业、安保、电力、交通等多个领域展现出了巨大的应用潜…

动态规划习题其七【力扣】【算法学习day.29】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

Selenium+Pytest自动化测试框架 ------ 禅道实战

前言 有人问我登录携带登录的测试框架该怎么处理,今天就对框架做一点小升级吧,加入登录的测试功能。 选用的测试网址为我电脑本地搭建的禅道 更改了以下的一些文件,框架为原文章框架主体 conftest.py更改 conftest.py #!/usr/bin/env python3 # -*…

DICOM图像知识:深入讲解DICOM彩色图像的处理

目录 引言 1. DICOM彩色图像概述 1.1 什么是DICOM彩色图像? 1.2 DICOM中的彩色图像表示 2. CT值(Hounsfield Units)与RGB色彩空间 2.1 CT值(Hounsfield Units, HU)简介 2.2 RGB色彩空间简介 3. CT值转换为RGB显示 3.1 为什么需要转换? 3.2 转换方法概述 3.3 色…

使用wordpress搭建简易的信息查询系统

背景 当前有这样的一个需求,要实现让客户能够自助登录系统查询一些个人的信息,市面上没有特别符合我的需求的产品,经过一段时间的研究,想出了一个用wordpress实现简易信息查询系统,有两种方式。 方式一:使…

O-RAN简介

O-RAN简介 概览 如今,全球蜂窝数据使用量持续增长,因此,电信系统必须随之进行革新,才能满足这一需求量。虽然5G标准能够满足更高的蜂窝吞吐量需求,且有望实现各种新的应用场景,但如果网络没有进行相应的改进,许多拟定的5G应用只能是纸上谈兵。以高可靠低延时通信(URLL…

ssm100医学生在线学习交流平台+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,医学生在线学习交流平台当然也不能排除在外,随着医学生在线学习交流平台的不断成熟,它彻底改变了过去传统的管理方式&a…

Fortinet Security Fabric安全平台

Fortinet Security Fabric安全平台 Fortinet Security Fabric 是由 FortiOS 支持的业内出类拔萃的网络安全平台,具有丰富的开放式生态系统。它覆盖了更广阔的的数字化攻击表面和周期,提供自我修复的安全性和网络连接,从而保护设备、数据和应…

【1】虚拟机安装

1.安装VMware WorkStation Pro VMware下载地址: 密钥:YF390-0HF8P-M81RQ-2DXQE-M2UT6 2.新建虚拟机 centos7下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云

硬件---1电路设计安全要点以及欧姆定律

前言: 一直搞的东西都偏软件,硬件也一直在学,元器件、基础电路知识、PCB设计、模电运放都学的马马虎虎,因此决定进行系统性学习,内容基本来源于手里的视频和书本以及自己的感悟。 一电路安全 1电路安全 在初期基础…

docker compose - 设置名字

只使用 docker compose up 启动容器,默认名字为当前文件夹的名字 设置 project-name,docker 客户端会显示设置的名字,方便区分 docker compose --project-name webtest up错误: docker compose up --project-name webtest 效果…

原创:使用Qt Creator作为Linux IDE,实现CMake编译和gdb单步调试

1.前期简单步骤参考http://blog.csdn.net/libaineu2004/article/details/78448392 2.Linux下CMake简明教程 http://原文地址:https://blog.csdn.net/whahu1989/article/details/82078563 CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置…

透明显示屏在企业展览中如何应用

透明显示屏在企业展览中的应用多种多样,以下是一些具体的应用方式及效果: 一、产品展示 透明显示屏可以被用于展示高端产品的设计和功能,突出其独特之处。通过将产品放置在透明屏后方,观众可以同时欣赏产品的外观和内部构造&…

兰空图床配置域名访问

图床已经创建完毕并且可以访问了,但是使用IP地址多少还是差点意思,而且不方便记忆,而NAT模式又没法直接像普通服务器一样DNS解析完就可以访问。 尝试了很多办法,nginx配置了半天也没配好,索性直接重定向,反…

LeetCode 力扣 热题 100道(一)两数之和(C++)

两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案…

Redis经典面试题-深度剖析

redis是单线程架构还是多线程架构 Redis 的核心操作是单线程架构,但在某些场景中也会使用多线程。 Redis 的大部分操作(如键值存储、查询、更新等)是通过单线程完成的,即所有客户端的请求在 Redis 中按顺序执行。这种设计主要出…

【贪心算法】贪心算法三

贪心算法三 1.买卖股票的最佳时机2.买卖股票的最佳时机 II3.K 次取反后最大化的数组和4.按身高排序5.优势洗牌(田忌赛马) 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励&#…

基于LlamaIndex的应用开发中可选择的向量数据库分析

🎓作者简介:全栈领域优质创作者 🌐个人主页:百锦再新空间代码工作室 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[15045666310163.com] &#…

软考知识备忘

数据库设计 分布透明性指用户不必关心教据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。 分片透明性是分布透明性的最高层次。 位置透明性指用户或应用程序应当了解分片情况,但不必了解片段的存储…

【OceanBase 诊断调优】—— OceanBase 数据库统计信息被禁用,状态为 broken 的原因和解决方法

问题现象 因为人为因素导致部分统计信息函数未安装,自动统计信息触发执行长期失败。重新安装统计信息相关函数后,发现仍然无法正常自动统计信息收集,统计信息状态为 broken。 问题原因 统计信息 JOB 收集失败次数达到 16 次会直接禁用 JOB …