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