xref: /btstack/port/stm32-f4discovery-usb/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dac_ex.h (revision a8f7f3fcbcd51f8d2e92aca076b6a9f812db358c)
1 /**
2   ******************************************************************************
3   * @file    stm32f4xx_hal_dac.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) 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 __STM32F4xx_HAL_DAC_EX_H
22 #define __STM32F4xx_HAL_DAC_EX_H
23 
24 #ifdef __cplusplus
25  extern "C" {
26 #endif
27 
28 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
29     defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
30     defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F446xx) ||\
31     defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F413xx) || defined(STM32F423xx)
32 
33 /* Includes ------------------------------------------------------------------*/
34 #include "stm32f4xx_hal_def.h"
35 
36 /** @addtogroup STM32F4xx_HAL_Driver
37   * @{
38   */
39 
40 /** @addtogroup DACEx
41   * @{
42   */
43 
44 /* Exported types ------------------------------------------------------------*/
45 /* Exported constants --------------------------------------------------------*/
46 /** @defgroup DACEx_Exported_Constants DAC Exported Constants
47   * @{
48   */
49 
50 /** @defgroup DACEx_lfsrunmask_triangleamplitude DAC LFS Run Mask Triangle Amplitude
51   * @{
52   */
53 #define DAC_LFSRUNMASK_BIT0                0x00000000U /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
54 #define DAC_LFSRUNMASK_BITS1_0             ((uint32_t)DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
55 #define DAC_LFSRUNMASK_BITS2_0             ((uint32_t)DAC_CR_MAMP1_1) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
56 #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 */
57 #define DAC_LFSRUNMASK_BITS4_0             ((uint32_t)DAC_CR_MAMP1_2) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
58 #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 */
59 #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 */
60 #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 */
61 #define DAC_LFSRUNMASK_BITS8_0             ((uint32_t)DAC_CR_MAMP1_3) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
62 #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 */
63 #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 */
64 #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 */
65 #define DAC_TRIANGLEAMPLITUDE_1            0x00000000U /*!< Select max triangle amplitude of 1 */
66 #define DAC_TRIANGLEAMPLITUDE_3            ((uint32_t)DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 3 */
67 #define DAC_TRIANGLEAMPLITUDE_7            ((uint32_t)DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 7 */
68 #define DAC_TRIANGLEAMPLITUDE_15           ((uint32_t)DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 15 */
69 #define DAC_TRIANGLEAMPLITUDE_31           ((uint32_t)DAC_CR_MAMP1_2) /*!< Select max triangle amplitude of 31 */
70 #define DAC_TRIANGLEAMPLITUDE_63           ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 63 */
71 #define DAC_TRIANGLEAMPLITUDE_127          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 127 */
72 #define DAC_TRIANGLEAMPLITUDE_255          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 255 */
73 #define DAC_TRIANGLEAMPLITUDE_511          ((uint32_t)DAC_CR_MAMP1_3) /*!< Select max triangle amplitude of 511 */
74 #define DAC_TRIANGLEAMPLITUDE_1023         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 1023 */
75 #define DAC_TRIANGLEAMPLITUDE_2047         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 2047 */
76 #define DAC_TRIANGLEAMPLITUDE_4095         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 4095 */
77 /**
78   * @}
79   */
80 
81 /**
82   * @}
83   */
84 
85 /* Exported macro ------------------------------------------------------------*/
86 /* Exported functions --------------------------------------------------------*/
87 /** @addtogroup DACEx_Exported_Functions
88   * @{
89   */
90 
91 /** @addtogroup DACEx_Exported_Functions_Group1
92   * @{
93   */
94 /* Extension features functions ***********************************************/
95 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac);
96 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
97 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
98 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
99 
100 void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac);
101 void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac);
102 void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef* hdac);
103 void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef* hdac);
104 /**
105   * @}
106   */
107 
108 /**
109   * @}
110   */
111 /* Private types -------------------------------------------------------------*/
112 /* Private variables ---------------------------------------------------------*/
113 /* Private constants ---------------------------------------------------------*/
114 /** @defgroup DACEx_Private_Constants DAC Private Constants
115   * @{
116   */
117 
118 /**
119   * @}
120   */
121 
122 /* Private macros ------------------------------------------------------------*/
123 /** @defgroup DACEx_Private_Macros DAC Private Macros
124   * @{
125   */
126 #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUNMASK_BIT0) || \
127                                                       ((VALUE) == DAC_LFSRUNMASK_BITS1_0) || \
128                                                       ((VALUE) == DAC_LFSRUNMASK_BITS2_0) || \
129                                                       ((VALUE) == DAC_LFSRUNMASK_BITS3_0) || \
130                                                       ((VALUE) == DAC_LFSRUNMASK_BITS4_0) || \
131                                                       ((VALUE) == DAC_LFSRUNMASK_BITS5_0) || \
132                                                       ((VALUE) == DAC_LFSRUNMASK_BITS6_0) || \
133                                                       ((VALUE) == DAC_LFSRUNMASK_BITS7_0) || \
134                                                       ((VALUE) == DAC_LFSRUNMASK_BITS8_0) || \
135                                                       ((VALUE) == DAC_LFSRUNMASK_BITS9_0) || \
136                                                       ((VALUE) == DAC_LFSRUNMASK_BITS10_0) || \
137                                                       ((VALUE) == DAC_LFSRUNMASK_BITS11_0) || \
138                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1) || \
139                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_3) || \
140                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_7) || \
141                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_15) || \
142                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_31) || \
143                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_63) || \
144                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_127) || \
145                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_255) || \
146                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_511) || \
147                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1023) || \
148                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_2047) || \
149                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_4095))
150 /**
151   * @}
152   */
153 
154 /* Private functions ---------------------------------------------------------*/
155 /** @defgroup DACEx_Private_Functions DAC Private Functions
156   * @{
157   */
158 void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma);
159 void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma);
160 void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma);
161 /**
162   * @}
163   */
164 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx ||\
165           STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||\
166           STM32F410xx || STM32F446xx || STM32F469xx || STM32F479xx ||\
167 		  STM32F413xx || STM32F423xx */
168 
169 /**
170   * @}
171   */
172 
173 /**
174   * @}
175   */
176 
177 #ifdef __cplusplus
178 }
179 #endif
180 
181 #endif /*__STM32F4xx_HAL_DAC_EX_H */
182 
183 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
184