1 /* 2 ****************************************************************************** 3 * @file HAL_OPA.h 4 * @version V1.0.0 5 * @date 2020 6 * @brief Header file of OPA HAL module. 7 ****************************************************************************** 8 */ 9 #ifndef __HAL_OPA_H__ 10 #define __HAL_OPA_H__ 11 12 #include "ACM32Fxx_HAL.h" 13 14 /** @defgroup OPAx Index 15 * @{ 16 */ 17 #define OPA1 (0x01) 18 #define OPA2 (0x02) 19 #define OPA3 (0x03) 20 21 /**************** Bit definition for OPA_CR1 and OPA_CR2 register **************************/ 22 #define OPA_CSR_VINPSEL_POS (20U) 23 #define OPA_CSR_VINPSEL_MASK (BIT23|BIT22|BIT21|BIT20) 24 #define OPA_CSR_VINMSEL_POS (16U) 25 #define OPA_CSR_VINMSEL_MASK (BIT19|BIT18|BIT17|BIT16) 26 #define OPA_CSR_TRIM_HIGH_POS (9U) 27 #define OPA_CSR_TRIM_HIGH_MASK (BIT13|BIT12|BIT11|BIT10|BIT9) 28 #define OPA_CSR_TRIM_LOW_POS (4U) 29 #define OPA_CSR_TRIM_LOW_MASK (BIT8|BIT7|BIT6|BIT5|BIT4) 30 #define OPA_CSR_CAL_OUT (BIT3) 31 #define OPA_CSR_CAL_H (BIT2) 32 #define OPA_CSR_CAL_L (BIT1) 33 #define OPA_CSR_EN (BIT0) 34 35 /** 36 * @brief OPA Configuration Structure definition 37 */ 38 typedef struct 39 { 40 uint8_t OpaX; /*!< Specify witch opa be selected */ 41 uint8_t VinPSel; /*!< Specify the opa VINP vin p select */ 42 uint8_t VinMSel; /*!< Specify the opa VINM vin m select */ 43 uint8_t TrimEn; /*!< Specify if the opa auto trim */ 44 }OPA_InitTypeDef; 45 46 /** 47 * @brief OPA handle Structure definition 48 */ 49 typedef struct 50 { 51 OPA_TypeDef *Instance; /*!< Register base address */ 52 OPA_InitTypeDef Init; /*!< OPA required parameters */ 53 } OPA_HandleTypeDef; 54 55 56 #define OPA_CSR_VINPSEL_0 (0U) 57 #define OPA_CSR_VINPSEL_1 (1U) 58 59 #define OPA_CSR_VINMSEL_0 (0U) 60 #define OPA_CSR_VINMSEL_1 (1U) 61 62 #define OPA_CSR1_VINPSEL_PA4 (0U) 63 #define OPA_CSR1_VINPSEL_PB6 (1U) 64 65 #define OPA_CSR1_VINMSEL_PB5 (0U) 66 #define OPA_CSR1_VINMSEL_PD5 (1U) 67 68 #define OPA_CSR2_VINPSEL_PB3 (0U) 69 #define OPA_CSR2_VINPSEL_PB4 (1U) 70 71 #define OPA_CSR2_VINMSEL_PB1 (0U) 72 #define OPA_CSR2_VINMSEL_PD4 (1U) 73 74 #define OPA_CSR3_VINPSEL_PA7 (0U) 75 #define OPA_CSR3_VINPSEL_PB2 (1U) 76 77 #define OPA_CSR3_VINMSEL_PA5 (0U) 78 #define OPA_CSR3_VINMSEL_PC4 (1U) 79 80 #define OPA_CSR_TRIM_DISABLE (0U) 81 #define OPA_CSR_TRIM_ENABLE (1U) 82 83 /******************************** OPA Instances *******************************/ 84 #define IS_OPA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OPA)) 85 86 /******************************** OPA OPAX definition*******************************/ 87 #define IS_OPA_ALL_OPAX(_OPAX) (((_OPAX) == OPA1) || \ 88 ((_OPAX) == OPA2) || \ 89 ((_OPAX) == OPA3)) 90 91 /******************************** OPA VINP select definition*******************************/ 92 #define IS_OPA_ALL_VINP(VINPSEL) (((VINPSEL) == OPA_CSR_VINPSEL_0) || \ 93 ((VINPSEL) == OPA_CSR_VINPSEL_1)) 94 95 /******************************** OPA VINM select definition*******************************/ 96 #define IS_OPA_ALL_VINM(VINMSEL) (((VINMSEL) == OPA_CSR_VINMSEL_0) || \ 97 ((VINMSEL) == OPA_CSR_VINMSEL_1)) 98 99 /******************************** OPA trim enable definition*******************************/ 100 #define IS_OPA_ALL_TRIM(_TRIM) (((_TRIM) == OPA_CSR_TRIM_DISABLE) || \ 101 ((_TRIM) == OPA_CSR_TRIM_ENABLE)) 102 103 /* Function : HAL_OPA */ 104 void HAL_OPA_MspInit(OPA_HandleTypeDef* hopa); 105 void HAL_OPA_MspDeInit(OPA_HandleTypeDef* hopa); 106 HAL_StatusTypeDef HAL_OPA_Init(OPA_HandleTypeDef* hopa); 107 HAL_StatusTypeDef HAL_OPA_DeInit(OPA_HandleTypeDef* hopa); 108 HAL_StatusTypeDef HAL_OPA_Enable(OPA_HandleTypeDef* hopa); 109 HAL_StatusTypeDef HAL_OPA_Disable(OPA_HandleTypeDef* hopa); 110 111 #endif 112 113 114 115 116 117