|
STM32G474xx HAL用户手册
|
OPAMP HAL模块驱动程序。本文件提供固件函数来管理运算放大器外设的以下功能:+ 初始化/去初始化函数+ I/O操作函数+ 外设控制函数+ 外设状态函数。 更多...
#include "stm32g4xx_hal.h"定义 | |
| #define | OPAMP_CSR_RESET_VALUE (0x00000000UL) |
| #define | OPAMP_CSR_RESET_CHECK_MASK (~(OPAMP_CSR_TRIMOFFSETN | OPAMP_CSR_TRIMOFFSETP)) |
| #define | OPAMP_CSR_UPDATE_PARAMETERS_INIT_MASK |
| #define | OPAMP_TCMR_UPDATE_PARAMETERS_INIT_MASK |
函数 | |
| HAL_StatusTypeDef | HAL_OPAMP_Init (OPAMP_HandleTypeDef *hopamp) |
| 根据OPAMP_InitTypeDef中指定的参数初始化OPAMP,并初始化关联的句柄。 | |
| HAL_StatusTypeDef | HAL_OPAMP_DeInit (OPAMP_HandleTypeDef *hopamp) |
| 去初始化OPAMP外设。 | |
| __weak void | HAL_OPAMP_MspInit (OPAMP_HandleTypeDef *hopamp) |
| 初始化OPAMP MSP。 | |
| __weak void | HAL_OPAMP_MspDeInit (OPAMP_HandleTypeDef *hopamp) |
| 去初始化OPAMP MSP。 | |
| HAL_StatusTypeDef | HAL_OPAMP_Start (OPAMP_HandleTypeDef *hopamp) |
| 启动运算放大器。 | |
| HAL_StatusTypeDef | HAL_OPAMP_Stop (OPAMP_HandleTypeDef *hopamp) |
| 停止运算放大器。 | |
| HAL_StatusTypeDef | HAL_OPAMP_SelfCalibrate (OPAMP_HandleTypeDef *hopamp) |
| 运行一个OPAMP的自校准。 | |
| HAL_StatusTypeDef | HAL_OPAMP_Lock (OPAMP_HandleTypeDef *hopamp) |
| 锁定选定的运算放大器配置。 | |
| HAL_StatusTypeDef | HAL_OPAMP_LockTimerMux (OPAMP_HandleTypeDef *hopamp) |
| 锁定选定的运算放大器定时器控制多路复用器配置。 | |
| HAL_OPAMP_StateTypeDef | HAL_OPAMP_GetState (OPAMP_HandleTypeDef *hopamp) |
| 返回OPAMP状态。 | |
| OPAMP_TrimmingValueTypeDef | HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset) |
| 返回OPAMP工厂校准值。 | |
| HAL_StatusTypeDef | HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackId, pOPAMP_CallbackTypeDef pCallback) |
| 注册用户OPAMP回调 用于替代弱(可重载的)预定义回调。 | |
| HAL_StatusTypeDef | HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackId) |
| 注销用户OPAMP回调 OPAMP回调重定向到弱(可重载的)预定义回调。 | |
OPAMP HAL模块驱动程序。本文件提供固件函数来管理运算放大器外设的以下功能:+ 初始化/去初始化函数+ I/O操作函数+ 外设控制函数+ 外设状态函数。
版权所有(c)2019 STMicroelectronics。保留所有权利。
本软件根据LICENSE文件中规定的条款获得许可。如果本软件未附带LICENSE文件,则按"原样"提供。
================================================================================
##### OPAMP外设特性 #####
================================================================================
[..] 该器件集成多达6个运算放大器OPAMP1、OPAMP2、
OPAMP3、OPAMP4、OPAMP5和OPAMP6:
(#) OPAMP提供多种独立运行模式。
(++) 独立模式
(++) 可编程增益放大器(PGA)模式(电阻反馈输出)
(++) 跟随器模式
(#) OPAMP提供校准功能。
(++) 校准旨在纠正某些运行模式下的偏移。
(++) OPAMP使用工厂校准设置或用户定义
校准(微调)设置(即微调模式)。
(++) 用户定义的设置可以通过自校准获得
由HAL_OPAMP_SelfCalibrate、HAL_OPAMPEx_SelfCalibrateAll
(++) HAL_OPAMP_SelfCalibrate:
(++) 自动运行两步校准。
(NMOS晶体管的90% VDDA,PMOS晶体管的10% VDDA)。
(由于OPAMP是轨到轨输入/输出,这两步校准在大多数情况下是
适当且足够的)。
(++) 启用用户微调模式
(++) 使用新的校准结果更新初始化结构。
用户可以存储校准结果以备后用
(例如监测微调值随温度的变化)
(++) 对于具有6个OPAMP的STM32G4器件
HAL_OPAMP_SelfCalibrateAll
并行运行6个OPAMP的校准。
(#) 对于任何运行模式,可以在顶层设置额外的定时器控制多路复用器(多路复用器)
模式。
(++) 定时器控制多路复用器模式允许自动切换输入
配置(反相和非反相)。
(++) 因此,除默认值(主)反相和非反相输入外,
用户应选择次级反相和非反相输入。
(++) TIM1 OC6、TIM8 OC6和TIM20 OC6提供主输入和次级输入之间的
交替切换节拍。
(++) 这3个定时器(TIM1、TIM8和TIM20)可以组合设计更复杂的
切换方案,使得任何选定的通道都可以启动配置切换。
(#) 运行模式:独立模式
(++) 增益由外部设置(增益取决于外部负载)。
(++) 也可以通过将反相输入连接到输出来实现外部跟随器模式。
(#) 运行模式:跟随器模式
(++) 反相输入未连接。
(#) 运行模式:可编程增益放大器(PGA)模式
(电阻反馈输出)
(++) OPAMP输出可以在内部连接到电阻反馈输出。
(++) OPAMP反相输入可以"不"连接,待放大的信号连接到
非反相输入,增益为正(2、4、8、16、32或64)。
(++) OPAMP反相输入可以连接到VINM0:
如果信号施加到非反相输入,增益为正(2、4、8、16、32或64)。
如果信号施加到反相输入,增益为负(-1、-3、-7、-15、-31或-63)。
在这两种情况下,另一个输入可以用作偏置。
##### 如何使用此驱动程序 #####
================================================================================
[..]
*** 高速/正常功耗模式 ***
============================================
[..] 要以高速模式运行:
(#) 使用HAL_OPAMP_Init()函数配置OPAMP:
(++) 选择OPAMP_POWERMODE_HIGHSPEED
(++) 否则选择OPAMP_POWERMODE_NORMALSPEED
*** 校准 ***
============================================
[..] 要运行OPAMP自校准:
(#) 使用HAL_OPAMP_SelfCalibrate开始校准。
存储校准结果。
*** 运行模式 ***
============================================
[..] 要使用OPAMP,请执行以下步骤:
(#) 在HAL_OPAMP_MspInit()中填写
(++) 使用HAL_GPIO_Init()将OPAMP输入和输出配置为模拟模式,
将OPAMP输出映射到GPIO引脚。
(#) 注册回调
(++) 当编译定义USE_HAL_OPAMP_REGISTER_CALLBACKS设置为1时,
允许用户动态配置驱动程序回调。
(++) 使用函数HAL_OPAMP_RegisterCallback()注册用户回调,
它允许注册以下回调:
(+++) MspInitCallback : OPAMP MspInit。
(+++) MspDeInitCallback : OPAMP MspDeInit。
此函数需要参数:HAL外设句柄、回调ID
和用户回调函数指针。
(++) 使用函数HAL_OPAMP_UnRegisterCallback()将回调重置为默认的
弱(可重载)函数。它允许重置以下回调:
(+++) MspInitCallback : OPAMP MspInit。
(+++) MspDeInitCallback : OPAMP MspDeInit。
(+++) 所有回调
(#) 使用HAL_OPAMP_Init()函数配置OPAMP:
(++) 选择模式
(++) 选择反相输入
(++) 选择非反相输入
(++) 选择是否启用/禁用内部输出(如果启用,常规I/O输出被禁用)
(++) 选择定时器控制多路复用器是禁用还是启用并由指定定时器控制
(++) 如果启用了定时器控制多路复用器模式,选择次级反相输入
(++) 如果启用了定时器控制多路复用器模式,选择次级非反相输入
(++) 如果启用了PGA模式,选择是否连接反相输入
(++) 如果启用了PGA模式,选择要使用的PGA增益。
(++) 选择工厂或用户定义的微调模式。
(++) 如果启用了用户定义的微调模式,选择PMOS和NMOS微调值
(典型设置为HAL_OPAMP_SelfCalibrate函数返回的值)。
(#) 使用HAL_OPAMP_Start()函数启用OPAMP。
(#) 使用HAL_OPAMP_Stop()函数禁用OPAMP。
(#) 使用HAL_OPAMP_Lock和HAL_OPAMP_TimerMuxLock函数锁定OPAMP运行模式。
从那时起,配置只能通过以下方式修改
(++) 硬件复位
(++) 或通过用户定义的HAL_OPAMP_MspDeInit从HAL_OPAMP_DeInit调用。
*** 运行模式:OPAMP开启时更改配置 ***
============================================
[..] 要在OPAMP开启时重新配置OPAMP(动态更改)
(#) 如有需要,在HAL_OPAMP_MspInit()中填写
(++) 例如,如果您想使用新的OPAMP I/O,这就是这种情况
(#) 使用HAL_OPAMP_Init()函数配置OPAMP:
(++) 与配置情况一样,首先选择您希望修改的参数。
(++) 如果OPAMP控制寄存器被锁定,则无法动态修改任何值
(即使是定时器控制多路复用器参数)。
(++) 如果OPAMP定时器控制多路复用器模式寄存器被锁定,则可以修改控制寄存器的任何值
但不能修改定时器控制多路复用器模式寄存器的值。
(#) 从高速模式切换到正常功耗模式(反之亦然)需要
首先调用HAL_OPAMP_DeInit()(强制OPAMP关闭)然后调用HAL_OPAMP_Init()。
换句话说,如果OPAMP开启,HAL_OPAMP_Init不能单独更改功耗模式。
定义于文件stm32g4xx_hal_opamp.c。
1.7.6.1