stm32l1xx_hal_opamp_ex.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. /**
  2. ******************************************************************************
  3. * @file stm32l1xx_hal_opamp_ex.h
  4. * @author MCD Application Team
  5. * @version V1.0.0
  6. * @date 5-September-2014
  7. * @brief Header file of OPAMP HAL Extension module.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
  12. *
  13. * Redistribution and use in source and binary forms, with or without modification,
  14. * are permitted provided that the following conditions are met:
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. * 2. Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the following disclaimer in the documentation
  19. * and/or other materials provided with the distribution.
  20. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  21. * may be used to endorse or promote products derived from this software
  22. * without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. *
  35. ******************************************************************************
  36. */
  37. /* Define to prevent recursive inclusion -------------------------------------*/
  38. #ifndef __STM32L1xx_HAL_OPAMP_EX_H
  39. #define __STM32L1xx_HAL_OPAMP_EX_H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L152xE) || defined (STM32L162xE) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC)
  44. /* Includes ------------------------------------------------------------------*/
  45. #include "stm32l1xx_hal_def.h"
  46. /** @addtogroup STM32L1xx_HAL_Driver
  47. * @{
  48. */
  49. /** @addtogroup OPAMPEx
  50. * @{
  51. */
  52. /* Exported types ------------------------------------------------------------*/
  53. /* Exported constants ---------------------------------------------------------*/
  54. /** @defgroup OPAMPEx_Exported_Constants OPAMPEx Exported Constants
  55. * @{
  56. */
  57. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  58. #define OPAMP_CSR_OPAXPD_ALL \
  59. (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD | OPAMP_CSR_OPA3PD)
  60. #define OPAMP_CSR_OPAXCAL_L_ALL \
  61. (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L | OPAMP_CSR_OPA3CAL_L)
  62. #define OPAMP_CSR_OPAXCAL_H_ALL \
  63. (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H | OPAMP_CSR_OPA3CAL_H)
  64. #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \
  65. (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \
  66. OPAMP_CSR_ANAWSEL1 | \
  67. OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \
  68. OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 | \
  69. OPAMP_CSR_S3SEL3 | OPAMP_CSR_S4SEL3 | OPAMP_CSR_S5SEL3 | OPAMP_CSR_S6SEL3 | \
  70. OPAMP_CSR_ANAWSEL3 )
  71. #else
  72. #define OPAMP_CSR_OPAXPD_ALL \
  73. (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD)
  74. #define OPAMP_CSR_OPAXCAL_L_ALL \
  75. (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L)
  76. #define OPAMP_CSR_OPAXCAL_H_ALL \
  77. (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H)
  78. #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS \
  79. (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \
  80. OPAMP_CSR_ANAWSEL1 | \
  81. OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \
  82. OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2 )
  83. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  84. /**
  85. * @}
  86. */
  87. /* Exported macro ------------------------------------------------------------*/
  88. /** @defgroup OPAMPEx_Exported_Macro OPAMPEx Exported Macro
  89. * @{
  90. */
  91. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  92. /**
  93. * @brief Enable internal analog switch SW1 to connect OPAMP3 ouput to ADC
  94. * switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting input
  95. * (OPAMP3 available on STM32L1 devices Cat.4 only).
  96. * @retval None
  97. */
  98. #define __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_CLOSE()
  99. /**
  100. * @brief Disable internal analog switch SW1 to disconnect OPAMP3 ouput from
  101. * ADC switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting
  102. * input.
  103. * @retval None
  104. */
  105. #define __HAL_OPAMP_OPAMP3OUT_DISCONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_OPEN()
  106. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  107. /**
  108. * @}
  109. */
  110. /* Private macro -------------------------------------------------------------*/
  111. /** @defgroup OPAMPEx_Private_Macro OPAMPEx Private Macro
  112. * @{
  113. */
  114. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  115. /**
  116. * @brief Get the OPAMP instance in decimal number for further
  117. * processing needs by HAL OPAMP driver functions.
  118. * @param __HANDLE__: OPAMP handle
  119. * @retval "0" for OPAMP1, "1" for OPAMP2, "2" for OPAMP3
  120. */
  121. #define __OPAMP_INSTANCE_DECIMAL__(__HANDLE__) \
  122. ( ( ((__HANDLE__)->Instance == OPAMP1) \
  123. )? \
  124. ((uint32_t)0) \
  125. : \
  126. ( ( ((__HANDLE__)->Instance == OPAMP2) \
  127. )? \
  128. ((uint32_t)1) \
  129. : \
  130. ((uint32_t)2) \
  131. ) \
  132. )
  133. #else
  134. /**
  135. * @brief Get the OPAMP instance in decimal number for further
  136. * processing needs by HAL OPAMP driver functions.
  137. * @param __HANDLE__: OPAMP handle
  138. * @retval "0" for OPAMP1, "1" for OPAMP2
  139. */
  140. #define __OPAMP_INSTANCE_DECIMAL__(__HANDLE__) \
  141. ( ( ((__HANDLE__)->Instance == OPAMP1) \
  142. )? \
  143. ((uint32_t)0) \
  144. : \
  145. ((uint32_t)1) \
  146. )
  147. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  148. /**
  149. * @}
  150. */
  151. /* Exported functions --------------------------------------------------------*/
  152. /** @addtogroup OPAMPEx_Exported_Functions
  153. * @{
  154. */
  155. /* I/O operation functions *****************************************************/
  156. /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended IO operation functions
  157. * @{
  158. */
  159. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  160. HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, OPAMP_HandleTypeDef *hopamp3);
  161. #else
  162. HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2);
  163. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  164. /**
  165. * @}
  166. */
  167. /* Peripheral Control functions ************************************************/
  168. /** @addtogroup OPAMPEx_Exported_Functions_Group2
  169. * @{
  170. */
  171. HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp);
  172. /**
  173. * @}
  174. */
  175. /**
  176. * @}
  177. */
  178. /**
  179. * @}
  180. */
  181. /**
  182. * @}
  183. */
  184. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L152xE || STM32L162xE || STM32L162xC || STM32L152xC || STM32L151xC */
  185. #ifdef __cplusplus
  186. }
  187. #endif
  188. #endif /* __STM32L1xx_HAL_OPAMP_EX_H */
  189. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/