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 /**************** Bit definition for OPA_CR1 and OPA_CR2 register **************************/ 15 #define OPA_CSR_LOCK (BIT31) 16 #define OPA_CSR_HSM (BIT28) 17 #define OPA_CSR_GAIN_SEL_POS (23U) 18 #define OPA_CSR_GAIN_SEL_MASK (BIT27|BIT26|BIT25|BIT24|BIT23) 19 #define OPA_CSR_POL_SEL_POS (21U) 20 #define OPA_CSR_POL_SEL_MASK (BIT22|BIT21) 21 #define OPA_CSR_VINM0_SEL_POS (BIT20) 22 #define OPA_CSR_MODE_SEL_POS (18U) 23 #define OPA_CSR_MODE_SEL_MASK (BIT19|BIT18) 24 #define OPA_CSR_VINP_SEL_POS (16U) 25 #define OPA_CSR_VINP_SEL_MASK (BIT17|BIT16) 26 #define OPA_CSR_OUT_SEL_POS (14U) 27 #define OPA_CSR_OUT_SEL_MASK (BIT14|BIT15) 28 #define OPA_CSR_TRIM_OSN_POS (9U) 29 #define OPA_CSR_TRIM_OSN_MASK (BIT13|BIT12|BIT11|BIT10|BIT9) 30 #define OPA_CSR_TRIM_OSP_POS (4U) 31 #define OPA_CSR_TRIM_OSP_MASK (BIT8|BIT7|BIT6|BIT5|BIT4) 32 #define OPA_CSR_CAL_OUT (BIT3) 33 #define OPA_CSR_CAL_NEN (BIT2) 34 #define OPA_CSR_CAL_PEN (BIT1) 35 #define OPA_CSR_EN (BIT0) 36 37 /** @defgroup OPAx Index 38 * @{ 39 */ 40 #define OPA1 (0x01) 41 #define OPA2 (0x02) 42 #define OPA3 (0x03) 43 44 /** @defgroup HSM driver mode 45 * @{ 46 */ 47 #define OPA_HSM_LOW (0u) 48 #define OPA_HSM_HIGH (1u) 49 50 /** @defgroup OPA Gain select. 51 * @{ 52 */ 53 #define OPA_GAIN_64_63 (0u) 54 #define OPA_GAIN_32_31 (1u) 55 #define OPA_GAIN_16_15 (2u) 56 #define OPA_GAIN_8_7 (4u) 57 #define OPA_GAIN_4_3 (8u) 58 #define OPA_GAIN_2_1 (16u) 59 60 /** @defgroup Polarity select. 61 * @{ 62 */ 63 #define OPA_POL_NONINVERT (0u) 64 #define OPA_POL_INVERT (1u) 65 66 /** @defgroup OPA work mode select. 67 * @{ 68 */ 69 #define OPA_MODE_SA (0u) 70 #define OPA_MODE_UG (1u) 71 #define OPA_MODE_PGA (2u) 72 #define OPA_MODE_SA1 (3u) 73 74 /** @defgroup OPA VINP vin p select. 75 * @{ 76 */ 77 #define OPA_VINP_0 (0u) 78 #define OPA_VINP_1 (1u) 79 #define OPA_VINP_2 (2u) 80 #define OPA_VINP_3 (3u) 81 82 /** @defgroup OPA output select. 83 * @{ 84 */ 85 #define OPA_OUT_GPIO (0u) 86 #define OPA_OUT_INTERNAL (1u) 87 88 /** @defgroup OPA VINM0 enable. 89 * @{ 90 */ 91 #define OPA_CSR_VINM0_DISABLE (0U) 92 #define OPA_CSR_VINM0_ENABLE (1U) 93 94 /** @defgroup OPA trim enable. 95 * @{ 96 */ 97 #define OPA_CSR_TRIM_DISABLE (0U) 98 #define OPA_CSR_TRIM_ENABLE (1U) 99 100 /** 101 * @brief OPA Configuration Structure definition 102 */ 103 typedef struct 104 { 105 uint8_t OpaX; /*!< Specify witch opa be selected */ 106 uint8_t Hsm; /*!< Specify the opa HSM driver mode:OPA_HSM_LOW or OPA_HSM_HIGH */ 107 uint8_t Gain; /*!< Specify the opa gain select */ 108 uint8_t PolSel; /*!< Specify the opa Polarity select */ 109 uint8_t VinM0En; /*!< Specify the opa VinM0 enable */ 110 uint8_t OpaMode; /*!< Specify the opa work mode select */ 111 uint8_t VinPSel; /*!< Specify the opa VINP vin p select */ 112 uint8_t OutSel; /*!< Specify the opa output select */ 113 uint8_t TrimEn; /*!< Specify if the opa auto trim */ 114 }OPA_InitTypeDef; 115 116 /** 117 * @brief OPA handle Structure definition 118 */ 119 typedef struct 120 { 121 OPA_TypeDef *Instance; /*!< Register base address */ 122 OPA_InitTypeDef Init; /*!< OPA required parameters */ 123 } OPA_HandleTypeDef; 124 125 /******************************** OPA Instances *******************************/ 126 #define IS_OPA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OPA)) 127 128 /******************************** OPA OPAX definition*******************************/ 129 #define IS_OPA_ALL_OPAX(_OPAX) (((_OPAX) == OPA1) || \ 130 ((_OPAX) == OPA2) || \ 131 ((_OPAX) == OPA3)) 132 133 /******************************** OPA HSM definition*******************************/ 134 #define IS_OPA_ALL_HSM(_HSM) (((_HSM) == OPA_HSM_LOW) || \ 135 ((_HSM) == OPA_HSM_HIGH)) 136 137 /******************************** OPA GAIN definition*******************************/ 138 #define IS_OPA_ALL_GAIN(_GAIN) (((_GAIN) == OPA_GAIN_64_63) || \ 139 ((_GAIN) == OPA_GAIN_32_31) || \ 140 ((_GAIN) == OPA_GAIN_16_15) || \ 141 ((_GAIN) == OPA_GAIN_8_7) || \ 142 ((_GAIN) == OPA_GAIN_4_3) || \ 143 ((_GAIN) == OPA_GAIN_2_1)) 144 145 /******************************** OPA Polarity definition*******************************/ 146 #define IS_OPA_ALL_POL(_POL) (((_POL) == OPA_POL_NONINVERT) || \ 147 ((_POL) == OPA_POL_INVERT)) 148 149 /******************************** OPA work mode definition*******************************/ 150 #define IS_OPA_ALL_MODE(_MODE) (((_MODE) == OPA_MODE_SA) || \ 151 ((_MODE) == OPA_MODE_UG) || \ 152 ((_MODE) == OPA_MODE_PGA) || \ 153 ((_MODE) == OPA_MODE_SA1)) 154 155 /******************************** OPA VINP select definition*******************************/ 156 #define IS_OPA_ALL_VINP(_VINP) (((_VINP) == OPA_VINP_0) || \ 157 ((_VINP) == OPA_VINP_1) || \ 158 ((_VINP) == OPA_VINP_2) || \ 159 ((_VINP) == OPA_VINP_3)) 160 161 /******************************** OPA OUT select definition*******************************/ 162 #define IS_OPA_ALL_OUT(_OUT) (((_OUT) == OPA_OUT_GPIO) || \ 163 ((_OUT) == OPA_OUT_INTERNAL)) 164 165 /******************************** OPA VINM0 enable definition*******************************/ 166 #define IS_OPA_ALL_VINM0(_VINM0) (((_VINM0) == OPA_CSR_VINM0_DISABLE) || \ 167 ((_VINM0) == OPA_CSR_VINM0_ENABLE)) 168 169 /******************************** OPA trim enable definition*******************************/ 170 #define IS_OPA_ALL_TRIM(_TRIM) (((_TRIM) == OPA_CSR_TRIM_DISABLE) || \ 171 ((_TRIM) == OPA_CSR_TRIM_ENABLE)) 172 173 /* Function : HAL_OPA */ 174 void HAL_OPA_MspInit(OPA_HandleTypeDef* hopa); 175 void HAL_OPA_MspDeInit(OPA_HandleTypeDef* hopa); 176 HAL_StatusTypeDef HAL_OPA_Init(OPA_HandleTypeDef* hopa); 177 HAL_StatusTypeDef HAL_OPA_DeInit(OPA_HandleTypeDef* hopa); 178 HAL_StatusTypeDef HAL_OPA_Enable(OPA_HandleTypeDef* hopa); 179 HAL_StatusTypeDef HAL_OPA_Disable(OPA_HandleTypeDef* hopa); 180 HAL_StatusTypeDef HAL_OPA_Lock(OPA_HandleTypeDef* hopa); 181 182 #endif 183 184 185 186 187 188