STM32F439xx HAL User Manual
stm32f4xx_hal_dac_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f4xx_hal_dac.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of DAC HAL Extension module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __STM32F4xx_HAL_DAC_EX_H
00038 #define __STM32F4xx_HAL_DAC_EX_H
00039 
00040 #ifdef __cplusplus
00041  extern "C" {
00042 #endif
00043 
00044 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
00045     defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
00046     defined(STM32F410Tx) || defined(STM32F410Cx) || defined(STM32F410Rx) || defined(STM32F446xx) ||\
00047     defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F413xx) || defined(STM32F423xx)
00048 
00049 /* Includes ------------------------------------------------------------------*/
00050 #include "stm32f4xx_hal_def.h"
00051 
00052 /** @addtogroup STM32F4xx_HAL_Driver
00053   * @{
00054   */
00055 
00056 /** @addtogroup DACEx
00057   * @{
00058   */
00059 
00060 /* Exported types ------------------------------------------------------------*/
00061 /* Exported constants --------------------------------------------------------*/
00062 /** @defgroup DACEx_Exported_Constants DAC Exported Constants
00063   * @{
00064   */
00065 
00066 /** @defgroup DACEx_lfsrunmask_triangleamplitude DAC LFS Run Mask Triangle Amplitude
00067   * @{
00068   */
00069 #define DAC_LFSRUNMASK_BIT0                0x00000000U /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
00070 #define DAC_LFSRUNMASK_BITS1_0             ((uint32_t)DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
00071 #define DAC_LFSRUNMASK_BITS2_0             ((uint32_t)DAC_CR_MAMP1_1) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
00072 #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 */
00073 #define DAC_LFSRUNMASK_BITS4_0             ((uint32_t)DAC_CR_MAMP1_2) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
00074 #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 */
00075 #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 */
00076 #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 */
00077 #define DAC_LFSRUNMASK_BITS8_0             ((uint32_t)DAC_CR_MAMP1_3) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
00078 #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 */
00079 #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 */
00080 #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 */
00081 #define DAC_TRIANGLEAMPLITUDE_1            0x00000000U /*!< Select max triangle amplitude of 1 */
00082 #define DAC_TRIANGLEAMPLITUDE_3            ((uint32_t)DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 3 */
00083 #define DAC_TRIANGLEAMPLITUDE_7            ((uint32_t)DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 7 */
00084 #define DAC_TRIANGLEAMPLITUDE_15           ((uint32_t)DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 15 */
00085 #define DAC_TRIANGLEAMPLITUDE_31           ((uint32_t)DAC_CR_MAMP1_2) /*!< Select max triangle amplitude of 31 */
00086 #define DAC_TRIANGLEAMPLITUDE_63           ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 63 */
00087 #define DAC_TRIANGLEAMPLITUDE_127          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 127 */
00088 #define DAC_TRIANGLEAMPLITUDE_255          ((uint32_t)DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 255 */
00089 #define DAC_TRIANGLEAMPLITUDE_511          ((uint32_t)DAC_CR_MAMP1_3) /*!< Select max triangle amplitude of 511 */
00090 #define DAC_TRIANGLEAMPLITUDE_1023         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 1023 */
00091 #define DAC_TRIANGLEAMPLITUDE_2047         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1) /*!< Select max triangle amplitude of 2047 */
00092 #define DAC_TRIANGLEAMPLITUDE_4095         ((uint32_t)DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 4095 */
00093 /**
00094   * @}
00095   */
00096 
00097 /**
00098   * @}
00099   */
00100 
00101 /* Exported macro ------------------------------------------------------------*/
00102 /* Exported functions --------------------------------------------------------*/
00103 /** @addtogroup DACEx_Exported_Functions
00104   * @{
00105   */
00106 
00107 /** @addtogroup DACEx_Exported_Functions_Group1
00108   * @{
00109   */
00110 /* Extension features functions ***********************************************/
00111 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef* hdac);
00112 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
00113 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Amplitude);
00114 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef* hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
00115 
00116 void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac);
00117 void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac);
00118 void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef* hdac);
00119 void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef* hdac);
00120 /**
00121   * @}
00122   */
00123 
00124 /**
00125   * @}
00126   */
00127 /* Private types -------------------------------------------------------------*/
00128 /* Private variables ---------------------------------------------------------*/
00129 /* Private constants ---------------------------------------------------------*/
00130 /** @defgroup DACEx_Private_Constants DAC Private Constants
00131   * @{
00132   */
00133 
00134 /**
00135   * @}
00136   */
00137 
00138 /* Private macros ------------------------------------------------------------*/
00139 /** @defgroup DACEx_Private_Macros DAC Private Macros
00140   * @{
00141   */
00142 #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUNMASK_BIT0) || \
00143                                                       ((VALUE) == DAC_LFSRUNMASK_BITS1_0) || \
00144                                                       ((VALUE) == DAC_LFSRUNMASK_BITS2_0) || \
00145                                                       ((VALUE) == DAC_LFSRUNMASK_BITS3_0) || \
00146                                                       ((VALUE) == DAC_LFSRUNMASK_BITS4_0) || \
00147                                                       ((VALUE) == DAC_LFSRUNMASK_BITS5_0) || \
00148                                                       ((VALUE) == DAC_LFSRUNMASK_BITS6_0) || \
00149                                                       ((VALUE) == DAC_LFSRUNMASK_BITS7_0) || \
00150                                                       ((VALUE) == DAC_LFSRUNMASK_BITS8_0) || \
00151                                                       ((VALUE) == DAC_LFSRUNMASK_BITS9_0) || \
00152                                                       ((VALUE) == DAC_LFSRUNMASK_BITS10_0) || \
00153                                                       ((VALUE) == DAC_LFSRUNMASK_BITS11_0) || \
00154                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1) || \
00155                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_3) || \
00156                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_7) || \
00157                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_15) || \
00158                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_31) || \
00159                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_63) || \
00160                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_127) || \
00161                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_255) || \
00162                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_511) || \
00163                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1023) || \
00164                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_2047) || \
00165                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_4095))
00166 /**
00167   * @}
00168   */
00169 
00170 /* Private functions ---------------------------------------------------------*/
00171 /** @defgroup DACEx_Private_Functions DAC Private Functions
00172   * @{
00173   */
00174 void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma);
00175 void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma);
00176 void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma); 
00177 /**
00178   * @}
00179   */
00180 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx ||\
00181           STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx ||\
00182           STM32F410xx || STM32F446xx || STM32F469xx || STM32F479xx ||\
00183                   STM32F413xx || STM32F423xx */
00184 
00185 /**
00186   * @}
00187   */
00188 
00189 /**
00190   * @}
00191   */
00192   
00193 #ifdef __cplusplus
00194 }
00195 #endif
00196 
00197 #endif /*__STM32F4xx_HAL_DAC_EX_H */
00198 
00199 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/