HAL_OPA.h 7.3 KB

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