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