Subversion Repositories FuelGauge

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f0xx_hal_dac_ex.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of DAC HAL Extension module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 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 __STM32F0xx_HAL_DAC_EX_H
  22. #define __STM32F0xx_HAL_DAC_EX_H
  23.  
  24. #ifdef __cplusplus
  25.  extern "C" {
  26. #endif
  27.  
  28. /** @addtogroup STM32F0xx_HAL_Driver
  29.   * @{
  30.   */
  31.  
  32. #if defined(STM32F051x8) || defined(STM32F058xx) || \
  33.     defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
  34.     defined(STM32F091xC) || defined(STM32F098xx)
  35.  
  36. /* Includes ------------------------------------------------------------------*/
  37. #include "stm32f0xx_hal_def.h"
  38.            
  39. /** @addtogroup DACEx
  40.   * @{
  41.   */
  42.  
  43. /* Exported types ------------------------------------------------------------*/
  44.    
  45. /* Exported constants --------------------------------------------------------*/
  46.  
  47. /** @defgroup DACEx_Exported_Constants DACEx Exported Constants
  48.   * @{
  49.   */  
  50.  
  51. /** @defgroup DACEx_lfsrunmask_triangleamplitude DACEx lfsrunmask triangleamplitude
  52.   * @{
  53.   */
  54. #define DAC_LFSRUNMASK_BIT0                (0x00000000U) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
  55. #define DAC_LFSRUNMASK_BITS1_0             ((uint32_t)DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
  56. #define DAC_LFSRUNMASK_BITS2_0             ((uint32_t)DAC_CR_MAMP1_1) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
  57. #define DAC_LFSRUNMASK_BITS3_0             ((uint32_t)DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0)/*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */
  58. #define DAC_LFSRUNMASK_BITS4_0             ((uint32_t)DAC_CR_MAMP1_2) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
  59. #define DAC_LFSRUNMASK_BITS5_0             ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */
  60. #define DAC_LFSRUNMASK_BITS6_0             ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
  61. #define DAC_LFSRUNMASK_BITS7_0             ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
  62. #define DAC_LFSRUNMASK_BITS8_0             ((uint32_t)DAC_CR_MAMP1_3) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
  63. #define DAC_LFSRUNMASK_BITS9_0             ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */
  64. #define DAC_LFSRUNMASK_BITS10_0            ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
  65. #define DAC_LFSRUNMASK_BITS11_0            ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
  66. #define DAC_TRIANGLEAMPLITUDE_1            (0x00000000U) /*!< Select max triangle amplitude of 1 */
  67. #define DAC_TRIANGLEAMPLITUDE_3            ((uint32_t)DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 3 */
  68. #define DAC_TRIANGLEAMPLITUDE_7            ((uint32_t)DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 7 */
  69. #define DAC_TRIANGLEAMPLITUDE_15           ((uint32_t)DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 15 */
  70. #define DAC_TRIANGLEAMPLITUDE_31           ((uint32_t)DAC_CR_MAMP1_2) /*!< Select max triangle amplitude of 31 */
  71. #define DAC_TRIANGLEAMPLITUDE_63           ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 63 */
  72. #define DAC_TRIANGLEAMPLITUDE_127          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 127 */
  73. #define DAC_TRIANGLEAMPLITUDE_255          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 255 */
  74. #define DAC_TRIANGLEAMPLITUDE_511          ((uint32_t)DAC_CR_MAMP1_3) /*!< Select max triangle amplitude of 511 */
  75. #define DAC_TRIANGLEAMPLITUDE_1023         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 1023 */
  76. #define DAC_TRIANGLEAMPLITUDE_2047         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 2047 */
  77. #define DAC_TRIANGLEAMPLITUDE_4095         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 4095 */
  78.  
  79.  
  80. /**
  81.   * @}
  82.   */
  83.  
  84. /**
  85.   * @}
  86.   */
  87.  
  88. /* Exported macro ------------------------------------------------------------*/
  89.  
  90.  
  91. /** @defgroup DACEx_Exported_Macros DACEx Exported Macros
  92.   * @{
  93.   */
  94.  
  95. /** @defgroup DAC_trigger_selection DAC trigger selection
  96.   * @{
  97.   */
  98. #if defined(STM32F051x8) || defined(STM32F058xx)
  99.  
  100. #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
  101.                                                                        has been loaded, and not by external trigger */
  102. #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
  103. #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
  104. #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
  105. #define DAC_TRIGGER_T15_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM15 TRGO selected as external conversion trigger for DAC channel */
  106. #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
  107. #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
  108.  
  109. #endif /* STM32F051x8 || STM32F058xx */
  110.  
  111. #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
  112.     defined(STM32F091xC) || defined(STM32F098xx)
  113.  
  114. #define DAC_TRIGGER_NONE                   (0x00000000U) /*!< Conversion is automatic once the DAC1_DHRxxxx register
  115.                                                                        has been loaded, and not by external trigger */
  116. #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
  117. #define DAC_TRIGGER_T3_TRGO                ((uint32_t)(DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
  118. #define DAC_TRIGGER_T6_TRGO                ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
  119. #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
  120. #define DAC_TRIGGER_T15_TRGO                ((uint32_t)(DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM15 TRGO selected as external conversion trigger for DAC channel */
  121. #define DAC_TRIGGER_EXT_IT9                ((uint32_t)(DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
  122. #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1 | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
  123.  
  124. #endif /* STM32F071xB || STM32F072xB || STM32F078xx || */
  125.        /* STM32F091xC || STM32F098xx */
  126.  
  127. /**
  128.   * @}
  129.   */
  130.  
  131. /** @defgroup DAC_Channel_selection DAC Channel selection
  132.   * @{
  133.   */
  134.  
  135. #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
  136.     defined(STM32F091xC) || defined(STM32F098xx)
  137.  
  138. #define DAC_CHANNEL_1                      (0x00000000U)
  139. #define DAC_CHANNEL_2                      (0x00000010U)
  140.  
  141. #endif /* STM32F071xB || STM32F072xB || STM32F078xx || */
  142.        /* STM32F091xC || STM32F098xx */
  143.  
  144. #if defined(STM32F051x8) || defined(STM32F058xx)
  145.  
  146. #define DAC_CHANNEL_1                      (0x00000000U)
  147.  
  148. #endif  /* STM32F051x8 || STM32F058xx */
  149.  
  150. /**
  151.   * @}
  152.   */
  153.  
  154. /**
  155.   * @}
  156.   */
  157.  
  158. /* Private macro -------------------------------------------------------------*/
  159.  
  160. /** @addtogroup DACEx_Private_Macros
  161.   * @{
  162.   */
  163.  
  164. #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
  165.     defined(STM32F091xC) || defined(STM32F098xx)
  166.      
  167. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
  168.                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
  169.                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
  170.                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
  171.                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
  172.                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
  173.                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
  174.                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))      
  175.  
  176. #endif /* STM32F071xB || STM32F072xB || STM32F078xx || */
  177.        /* STM32F091xC || STM32F098xx */
  178.  
  179. #if defined(STM32F051x8) || defined(STM32F058xx)
  180.  
  181. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
  182.                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
  183.                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
  184.                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
  185.                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
  186.                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
  187.                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
  188.  
  189. #endif /* STM32F051x8 || STM32F058xx */
  190.  
  191. #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || \
  192.     defined(STM32F091xC) || defined(STM32F098xx)
  193.      
  194. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE) || \
  195.                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
  196.                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
  197.                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
  198.                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
  199.                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
  200.                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
  201.                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))      
  202.  
  203. #endif /* STM32F071xB || STM32F072xB || STM32F078xx || */
  204.        /* STM32F091xC || STM32F098xx */
  205.  
  206. #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUNMASK_BIT0) || \
  207.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS1_0) || \
  208.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS2_0) || \
  209.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS3_0) || \
  210.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS4_0) || \
  211.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS5_0) || \
  212.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS6_0) || \
  213.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS7_0) || \
  214.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS8_0) || \
  215.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS9_0) || \
  216.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS10_0) || \
  217.                                                       ((VALUE) == DAC_LFSRUNMASK_BITS11_0) || \
  218.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1) || \
  219.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_3) || \
  220.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_7) || \
  221.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_15) || \
  222.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_31) || \
  223.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_63) || \
  224.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_127) || \
  225.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_255) || \
  226.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_511) || \
  227.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1023) || \
  228.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_2047) || \
  229.                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_4095))
  230.  
  231. /**
  232.   * @}
  233.   */
  234.  
  235. /* Exported functions --------------------------------------------------------*/  
  236.  
  237. /** @addtogroup DACEx_Exported_Functions
  238.   * @{
  239.   */
  240.  
  241. /** @addtogroup DACEx_Exported_Functions_Group1
  242.  * @{
  243.  */    
  244. /* IO operation functions *****************************************************/
  245.  
  246. HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
  247. HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
  248. HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
  249.  
  250. void              HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac);
  251. void              HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac);
  252. void              HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef* hdac);
  253. void              HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef* hdac);
  254.  
  255. /**
  256.   * @}
  257.   */
  258.  
  259. /** @addtogroup DACEx_Exported_Functions_Group3
  260.   * @{
  261.   */
  262. /* Peripheral Control functions ***********************************************/
  263.  
  264. uint32_t          HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac);
  265.  
  266. /**
  267.   * @}
  268.   */
  269.  
  270. /**
  271.   * @}
  272.   */
  273.  
  274. /**
  275.   * @}
  276.   */
  277.  
  278. #endif   /* STM32F051x8 || STM32F058xx ||                */
  279.          /* STM32F071xB || STM32F072xB || STM32F078xx || */
  280.          /* STM32F091xC || STM32F098xx */
  281.  
  282. /**
  283.   * @}
  284.   */
  285.  
  286. #ifdef __cplusplus
  287. }
  288. #endif
  289.  
  290. #endif /*__STM32F0xx_HAL_DAC_EX_H */
  291.  
  292. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  293.