硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2868|回复: 0
收起左侧

[HAL学习笔记] HAL库源文件stm32h7xx_hal_opamp.c学习笔记,研究自带的两个运放(2018-09-13 V1.0)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2018-9-13 12:43:54 | 显示全部楼层 |阅读模式
说明:
H7带两个运放,轨到轨输入输出,支持出厂校准和自校准,最大带宽7MHz。


==============================================================================
                                                                  ##### 运放规格特性  #####
==============================================================================  


1、运放的输入和输出支持的互联
QQ截图20180913165410.png

2、支持的几种可执行模式:
(1)独立模式
(2)可以编程增益模式(PGA)
(3)支持跟随器

3、每个运放可配置工作在正常和高速模式

4、运放支持校准
(1)校准功能用于修正一些输入偏移
(2)支持出厂校准和用户校准两种
(3)用户校准可通过调用函数HAL_OPAMP_SelfCalibrate, HAL_OPAMPEx_SelfCalibrateAll实现
(4)函数HAL_OPAMP_SelfCalibrate
        具体实现有好几部,后面再研究
(5)运行在跟随器模式,反向输入在内部已经连接。
(6)可编程增益模式
        同相输入增益支持
         x2, x4, x8 or x16

        反相输入增益支持
        x-1, x-3, x-7 or x-15

==============================================================================
                                                                  ##### 驱动如何使用  #####
==============================================================================  

1、高速和正常模式配置,使用函数HAL_OPAMP_Init,使用的形参OPAMP_POWERMODE_HIGHSPEED和OPAMP_POWERMODE_NORMAL

2、函数HAL_OPAMP_SelfCalibrate用于实现自校准

3、函数HAL_OPAMP_MspInit配置底层
(1)__HAL_RCC_OPAMP_CLK_ENABLE使能时钟
(2)HAL_GPIO_Init配置IO

4、函数HAL_OPAMP_Init配置运放
(1)选择模式
(2)配置同相输入
(3)配置反相输入
(4)如果选择PGA模式,选择反相输入是否连接
(5)选择出厂校准还是用户自校准
(6)如果是用户自校准,需要调用函数HAL_OPAMP_SelfCalibrate实现

5、启动和停止是通过调用函数HAL_OPAMP_Start和HAL_OPAMP_Stop实现。

6、特别注意,H7的配置锁函数HAL_OPAMP_Lock和解锁函数HAL_OPAMPEx_Unlock是基于软件实现的。

7、运行中修改配置
(1)如果需要更换使用的IO,需要再次调用函数HAL_OPAMP_MspInit配置
(2)通过函数HAL_OPAMP_Init更改参数
(3)从高速模式到正常模式切换,务必是先调用函数HAL_OPAMP_DeInit,然后调用函数HAL_OPAMP_Init,否则无法更改成功



函数比较少:

  1. /* Initialization/de-initialization functions  **********************************/
  2. HAL_StatusTypeDef HAL_OPAMP_Init(OPAMP_HandleTypeDef *hopamp);
  3. HAL_StatusTypeDef HAL_OPAMP_DeInit (OPAMP_HandleTypeDef *hopamp);
  4. void HAL_OPAMP_MspInit(OPAMP_HandleTypeDef *hopamp);
  5. void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *hopamp);
  6. /**
  7.   * @}
  8.   */

  9. /** @addtogroup OPAMP_Exported_Functions_Group2
  10.   * @{
  11.   */

  12. /* I/O operation functions  *****************************************************/
  13. HAL_StatusTypeDef HAL_OPAMP_Start(OPAMP_HandleTypeDef *hopamp);
  14. HAL_StatusTypeDef HAL_OPAMP_Stop(OPAMP_HandleTypeDef *hopamp);
  15. HAL_StatusTypeDef HAL_OPAMP_SelfCalibrate(OPAMP_HandleTypeDef *hopamp);

  16. /**
  17.   * @}
  18.   */

  19. /** @addtogroup OPAMP_Exported_Functions_Group3
  20.   * @{
  21.   */

  22. /* Peripheral Control functions  ************************************************/
  23. HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp);
  24. HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset);

  25. /**
  26.   * @}
  27.   */

  28. /** @addtogroup OPAMP_Exported_Functions_Group4
  29.   * @{
  30.   */

  31. /* Peripheral State functions  **************************************************/
  32. HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp);
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 17:49 , Processed in 0.154324 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表