Subversion Repositories DashDisplay

Rev

Rev 56 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32l1xx_hal_opamp_ex.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of OPAMP HAL Extension module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * Copyright (c) 2017 STMicroelectronics.
  10.   * All rights reserved.
  11.   *
  12.   * This software is licensed under terms that can be found in the LICENSE file
  13.   * in the root directory of this software component.
  14.   * If no LICENSE file comes with this software, it is provided AS-IS.
  15.   *
  16.   ******************************************************************************
  17.   */
  18.  
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32L1xx_HAL_OPAMP_EX_H
  21. #define STM32L1xx_HAL_OPAMP_EX_H
  22.  
  23. #ifdef __cplusplus
  24.  extern "C" {
  25. #endif
  26.  
  27. #if defined (STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined (STM32L151xE) || defined (STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX) || defined (STM32L162xC) || defined (STM32L152xC) || defined (STM32L151xC)
  28.    
  29. /* Includes ------------------------------------------------------------------*/
  30. #include "stm32l1xx_hal_def.h"
  31.  
  32. /** @addtogroup STM32L1xx_HAL_Driver
  33.   * @{
  34.   */
  35.  
  36. /** @addtogroup OPAMPEx
  37.   * @{
  38.   */
  39. /* Exported types ------------------------------------------------------------*/
  40. /* Exported constants ---------------------------------------------------------*/
  41. /** @defgroup OPAMPEx_Exported_Constants OPAMPEx Exported Constants
  42.   * @{
  43.   */
  44. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  45. #define OPAMP_CSR_OPAXPD_ALL                                                   \
  46.   (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD | OPAMP_CSR_OPA3PD)
  47.    
  48. #define OPAMP_CSR_OPAXCAL_L_ALL                                                \
  49.   (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L | OPAMP_CSR_OPA3CAL_L)
  50.  
  51. #define OPAMP_CSR_OPAXCAL_H_ALL                                                \
  52.   (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H | OPAMP_CSR_OPA3CAL_H)
  53.    
  54. #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS                                      \
  55.   (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \
  56.    OPAMP_CSR_ANAWSEL1                                                        | \
  57.    OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \
  58.    OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2                                     | \
  59.    OPAMP_CSR_S3SEL3 | OPAMP_CSR_S4SEL3 | OPAMP_CSR_S5SEL3 | OPAMP_CSR_S6SEL3 | \
  60.    OPAMP_CSR_ANAWSEL3                                                         )
  61. #else
  62. #define OPAMP_CSR_OPAXPD_ALL                                                   \
  63.   (OPAMP_CSR_OPA1PD | OPAMP_CSR_OPA2PD)
  64.    
  65. #define OPAMP_CSR_OPAXCAL_L_ALL                                                \
  66.   (OPAMP_CSR_OPA1CAL_L | OPAMP_CSR_OPA2CAL_L)
  67.  
  68. #define OPAMP_CSR_OPAXCAL_H_ALL                                                \
  69.   (OPAMP_CSR_OPA1CAL_H | OPAMP_CSR_OPA2CAL_H)
  70.    
  71. #define OPAMP_CSR_ALL_SWITCHES_ALL_OPAMPS                                      \
  72.   (OPAMP_CSR_S3SEL1 | OPAMP_CSR_S4SEL1 | OPAMP_CSR_S5SEL1 | OPAMP_CSR_S6SEL1 | \
  73.    OPAMP_CSR_ANAWSEL1                                                        | \
  74.    OPAMP_CSR_S3SEL2 | OPAMP_CSR_S4SEL2 | OPAMP_CSR_S5SEL2 | OPAMP_CSR_S6SEL2 | \
  75.    OPAMP_CSR_ANAWSEL2 | OPAMP_CSR_S7SEL2                                      )
  76. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  77.  
  78. /**
  79.   * @}
  80.   */
  81.  
  82. /* Exported macro ------------------------------------------------------------*/
  83.    
  84. /** @defgroup OPAMPEx_Exported_Macro OPAMPEx Exported Macro
  85.   * @{
  86.   */
  87.    
  88. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  89. /**
  90.   * @brief Enable internal analog switch SW1 to connect OPAMP3 output to ADC
  91.   * switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting input
  92.   * (OPAMP3 available on STM32L1 devices Cat.4 only).
  93.   * @retval None
  94.   */
  95. #define __HAL_OPAMP_OPAMP3OUT_CONNECT_ADC_COMP1()    __HAL_RI_SWITCH_COMP1_SW1_CLOSE()
  96.  
  97. /**
  98.   * @brief Disable internal analog switch SW1 to disconnect OPAMP3 output from
  99.   * ADC switch matrix (ADC channel VCOMP, channel 26) and COMP1 non-inverting
  100.   * input.
  101.   * @retval None
  102.   */
  103. #define __HAL_OPAMP_OPAMP3OUT_DISCONNECT_ADC_COMP1() __HAL_RI_SWITCH_COMP1_SW1_OPEN()
  104. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  105.    
  106. /**
  107.   * @}
  108.   */
  109.      
  110. /* Private macro -------------------------------------------------------------*/
  111.  
  112. /** @defgroup OPAMPEx_Private_Macro OPAMPEx Private Macro
  113.   * @{
  114.   */
  115.    
  116. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  117. /**
  118.   * @brief Get the OPAMP instance in decimal number for further
  119.   * processing needs by HAL OPAMP driver functions.
  120.   * @param __HANDLE__: OPAMP handle
  121.   * @retval "0" for OPAMP1, "1" for OPAMP2, "2" for OPAMP3
  122.   */
  123. #define OPAMP_INSTANCE_DECIMAL(__HANDLE__)                                     \
  124.   ( ( ((__HANDLE__)->Instance == OPAMP1)                                       \
  125.     )?                                                                         \
  126.      ((uint32_t)0UL)                                                             \
  127.      :                                                                         \
  128.      ( ( ((__HANDLE__)->Instance == OPAMP2)                                    \
  129.        )?                                                                      \
  130.         ((uint32_t)1UL)                                                          \
  131.         :                                                                      \
  132.         ((uint32_t)2UL)                                                          \
  133.      )                                                                         \
  134.   )
  135. #else
  136. /**
  137.   * @brief Get the OPAMP instance in decimal number for further
  138.   * processing needs by HAL OPAMP driver functions.
  139.   * @param __HANDLE__: OPAMP handle
  140.   * @retval "0" for OPAMP1, "1" for OPAMP2
  141.   */
  142. #define OPAMP_INSTANCE_DECIMAL(__HANDLE__)                                     \
  143.   ( ( ((__HANDLE__)->Instance == OPAMP1)                                       \
  144.     )?                                                                         \
  145.      ((uint32_t)0UL)                                                             \
  146.      :                                                                         \
  147.      ((uint32_t)1UL)                                                             \
  148.   )
  149. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  150.  
  151. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  152.  
  153. /**
  154.   * @brief Check OPAMP non-inverting input in function of OPAMPx instance
  155.   * @param __HANDLE__: OPAMP handle
  156.   * @param INPUT: OPAMP non-inverting input                                        
  157.   * @retval None
  158.   */
  159. #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT)          \
  160.   ( ( ((__HANDLE__)->Instance == OPAMP1)                                       \
  161.     )?                                                                         \
  162.      (                                                                         \
  163.       ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)     ||                          \
  164.       ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1)                             \
  165.      )                                                                         \
  166.      :                                                                         \
  167.      ( ( ((__HANDLE__)->Instance == OPAMP2)                                    \
  168.        )?                                                                      \
  169.         (                                                                      \
  170.          ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)     ||                       \
  171.          ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) ||                       \
  172.          ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2)                          \
  173.         )                                                                      \
  174.         :                                                                      \
  175.         (                                                                      \
  176.          ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)     ||                       \
  177.          ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2)                          \
  178.         )                                                                      \
  179.      )                                                                         \
  180.   )
  181. #else
  182. /**
  183.   * @brief Check OPAMP non-inverting input in function of OPAMPx instance
  184.   * @param __HANDLE__: OPAMP handle
  185.   * @param INPUT: OPAMP non-inverting input                                        
  186.   * @retval None
  187.   */
  188. #define IS_OPAMP_NONINVERTING_INPUT_CHECK_INSTANCE(__HANDLE__, INPUT)          \
  189.   ( ( ((__HANDLE__)->Instance == OPAMP1)                                       \
  190.     )?                                                                         \
  191.      (                                                                         \
  192.       ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)     ||                          \
  193.       ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1)                             \
  194.      )                                                                         \
  195.      :                                                                         \
  196.      (                                                                         \
  197.       ((INPUT) == OPAMP_NONINVERTINGINPUT_IO0)     ||                          \
  198.       ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH1) ||                          \
  199.       ((INPUT) == OPAMP_NONINVERTINGINPUT_DAC_CH2)                             \
  200.      )                                                                         \
  201.   )
  202. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  203.  
  204. /**
  205.   * @}
  206.   */
  207.    
  208. /* Exported functions --------------------------------------------------------*/
  209. /** @addtogroup OPAMPEx_Exported_Functions
  210.   * @{
  211.   */
  212.  
  213. /* I/O operation functions  *****************************************************/
  214. /** @defgroup OPAMPEx_Exported_Functions_Group1 Extended Input and Output operation functions
  215.   * @{
  216.   */
  217. #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
  218. HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2, OPAMP_HandleTypeDef *hopamp3);
  219. #else
  220. HAL_StatusTypeDef HAL_OPAMPEx_SelfCalibrateAll(OPAMP_HandleTypeDef *hopamp1, OPAMP_HandleTypeDef *hopamp2);
  221. #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
  222. /**
  223.   * @}
  224.   */
  225. /* Peripheral Control functions  ************************************************/
  226. /** @addtogroup OPAMPEx_Exported_Functions_Group2
  227.   * @{
  228.   */
  229. HAL_StatusTypeDef HAL_OPAMPEx_Unlock(OPAMP_HandleTypeDef *hopamp);
  230. /**
  231.   * @}
  232.   */
  233.  
  234. /**
  235.   * @}
  236.   */
  237.  
  238. /**
  239.   * @}
  240.   */
  241.  
  242. /**
  243.   * @}
  244.   */
  245.  
  246. #endif /* STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX || STM32L162xC || STM32L152xC || STM32L151xC */
  247.  
  248. #ifdef __cplusplus
  249. }
  250. #endif
  251.  
  252.  
  253. #endif /* STM32L1xx_HAL_OPAMP_EX_H */
  254.  
  255.  
  256.