STM32F103xB HAL User Manual
stm32f1xx_hal_dac_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f1xx_hal_dac_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of DAC HAL Extended module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
00010   * All rights reserved.</center></h2>
00011   *
00012   * This software component is licensed by ST under BSD 3-Clause license,
00013   * the "License"; You may not use this file except in compliance with the
00014   * License. You may obtain a copy of the License at:
00015   *                        opensource.org/licenses/BSD-3-Clause
00016   *
00017   ******************************************************************************
00018   */
00019 
00020 /* Define to prevent recursive inclusion -------------------------------------*/
00021 #ifndef STM32F1xx_HAL_DAC_EX_H
00022 #define STM32F1xx_HAL_DAC_EX_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 /** @addtogroup STM32F1xx_HAL_Driver
00029   * @{
00030   */
00031 
00032 /* Includes ------------------------------------------------------------------*/
00033 #include "stm32f1xx_hal_def.h"
00034 
00035 #if defined(DAC)
00036 
00037 /** @addtogroup DACEx
00038   * @{
00039   */
00040 
00041 /* Exported types ------------------------------------------------------------*/
00042 
00043 /**
00044   * @brief  HAL State structures definition
00045   */
00046 
00047 /* Exported constants --------------------------------------------------------*/
00048 
00049 /** @defgroup DACEx_Exported_Constants DACEx Exported Constants
00050   * @{
00051   */
00052 
00053 /** @defgroup DACEx_lfsrunmask_triangleamplitude DACEx lfsrunmask triangle amplitude
00054   * @{
00055   */
00056 #define DAC_LFSRUNMASK_BIT0                0x00000000UL                                                        /*!< Unmask DAC channel LFSR bit0 for noise wave generation */
00057 #define DAC_LFSRUNMASK_BITS1_0             (                                                   DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
00058 #define DAC_LFSRUNMASK_BITS2_0             (                                  DAC_CR_MAMP1_1                 ) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
00059 #define DAC_LFSRUNMASK_BITS3_0             (                                  DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */
00060 #define DAC_LFSRUNMASK_BITS4_0             (                 DAC_CR_MAMP1_2                                  ) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */
00061 #define DAC_LFSRUNMASK_BITS5_0             (                 DAC_CR_MAMP1_2                  | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */
00062 #define DAC_LFSRUNMASK_BITS6_0             (                 DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1                 ) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
00063 #define DAC_LFSRUNMASK_BITS7_0             (                 DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
00064 #define DAC_LFSRUNMASK_BITS8_0             (DAC_CR_MAMP1_3                                                   ) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
00065 #define DAC_LFSRUNMASK_BITS9_0             (DAC_CR_MAMP1_3                                   | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */
00066 #define DAC_LFSRUNMASK_BITS10_0            (DAC_CR_MAMP1_3                  | DAC_CR_MAMP1_1                 ) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
00067 #define DAC_LFSRUNMASK_BITS11_0            (DAC_CR_MAMP1_3                  | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
00068 #define DAC_TRIANGLEAMPLITUDE_1            0x00000000UL                                                        /*!< Select max triangle amplitude of 1 */
00069 #define DAC_TRIANGLEAMPLITUDE_3            (                                                   DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 3 */
00070 #define DAC_TRIANGLEAMPLITUDE_7            (                                  DAC_CR_MAMP1_1                 ) /*!< Select max triangle amplitude of 7 */
00071 #define DAC_TRIANGLEAMPLITUDE_15           (                                  DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 15 */
00072 #define DAC_TRIANGLEAMPLITUDE_31           (                 DAC_CR_MAMP1_2                                  ) /*!< Select max triangle amplitude of 31 */
00073 #define DAC_TRIANGLEAMPLITUDE_63           (                 DAC_CR_MAMP1_2                  | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 63 */
00074 #define DAC_TRIANGLEAMPLITUDE_127          (                 DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1                 ) /*!< Select max triangle amplitude of 127 */
00075 #define DAC_TRIANGLEAMPLITUDE_255          (                 DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 255 */
00076 #define DAC_TRIANGLEAMPLITUDE_511          (DAC_CR_MAMP1_3                                                   ) /*!< Select max triangle amplitude of 511 */
00077 #define DAC_TRIANGLEAMPLITUDE_1023         (DAC_CR_MAMP1_3                                   | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 1023 */
00078 #define DAC_TRIANGLEAMPLITUDE_2047         (DAC_CR_MAMP1_3                  | DAC_CR_MAMP1_1                 ) /*!< Select max triangle amplitude of 2047 */
00079 #define DAC_TRIANGLEAMPLITUDE_4095         (DAC_CR_MAMP1_3                  | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Select max triangle amplitude of 4095 */
00080 
00081 /**
00082   * @}
00083   */
00084 
00085 /** @defgroup DACEx_trigger_selection DAC trigger selection
00086   * @{
00087   */
00088 #define DAC_TRIGGER_NONE                   0x00000000U            /*!< Conversion is automatic once the DAC1_DHRxxxx register 
00089                                                                        has been loaded, and not by external trigger */
00090 #define DAC_TRIGGER_T6_TRGO                ((uint32_t)                                                    DAC_CR_TEN1)  /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
00091 #define DAC_TRIGGER_T7_TRGO                ((uint32_t)(                 DAC_CR_TSEL1_1                  | DAC_CR_TEN1)) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
00092 #define DAC_TRIGGER_T2_TRGO                ((uint32_t)(DAC_CR_TSEL1_2                                   | DAC_CR_TEN1)) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
00093 #define DAC_TRIGGER_T4_TRGO                ((uint32_t)(DAC_CR_TSEL1_2                  | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */
00094 #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 */
00095 #define DAC_TRIGGER_SOFTWARE               ((uint32_t)(DAC_CR_TSEL1                                     | DAC_CR_TEN1)) /*!< Conversion started by software trigger for DAC channel */
00096 
00097 #if defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG)
00098 /* For STM32F10x high-density and XL-density devices: TIM8 */
00099 #define DAC_TRIGGER_T8_TRGO                ((uint32_t)                                   DAC_CR_TSEL1_0 | DAC_CR_TEN1)  /*!< TIM8 TRGO selected as external conversion trigger for DAC channel */
00100 #endif /* STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
00101    
00102 #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F105xC) || defined (STM32F107xC)
00103 /* For STM32F10x connectivity line devices and STM32F100x devices: TIM3 */
00104 #define DAC_TRIGGER_T3_TRGO                ((uint32_t)                                   DAC_CR_TSEL1_0 | DAC_CR_TEN1)  /*!< TIM3 TRGO selected as external conversion trigger for DAC channel */
00105 #endif /* STM32F100xB || STM32F100xE || STM32F105xC || STM32F107xC */
00106 
00107 /* Availability of trigger from TIM5 and TIM15:                               */
00108 /*  - For STM32F10x value line devices STM32F100xB:                           */
00109 /*    trigger from TIM15 is available, TIM5 not available.                    */
00110 /*  - For STM32F10x value line devices STM32F100xE:                           */
00111 /*    trigger from TIM15 and TIM5 are both available,                         */
00112 /*    selection depends on remap (with TIM5 as default configuration).        */
00113 /*  - Other STM32F1 devices:                                                  */
00114 /*    trigger from TIM5 is available, TIM15 not  available.                   */
00115 #if defined (STM32F100xB)
00116 #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 */
00117 #else
00118 
00119 #define DAC_TRIGGER_T5_TRGO                ((uint32_t)(                 DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
00120 
00121 #if defined (STM32F100xE)
00122 /*!< DAC trigger availability depending on STM32F1 devices:
00123      For STM32F100x high-density value line devices, the TIM15 TRGO event can be selected 
00124      as replacement of TIM5 TRGO if the MISC_REMAP bit in the AFIO_MAPR2 register is set.
00125      Refer to macro "__HAL_AFIO_REMAP_MISC_ENABLE()/__HAL_AFIO_REMAP_MISC_DISABLE()".
00126      Otherwise, TIM5 TRGO is used and TIM15 TRGO is not used (default case).
00127      For more details please refer to the AFIO section. */
00128 #define DAC_TRIGGER_T15_TRGO    DAC_TRIGGER_T5_TRGO
00129 #endif /* STM32F100xE */
00130    
00131 #endif /* STM32F100xB */
00132 /**
00133   * @}
00134   */
00135 
00136 /**
00137   * @}
00138   */
00139 
00140 /* Exported macro ------------------------------------------------------------*/
00141 
00142 
00143 /* Private macro -------------------------------------------------------------*/
00144 
00145 /** @defgroup DACEx_Private_Macros DACEx Private Macros
00146   * @{
00147   */
00148 #if defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG)
00149 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE)    || \
00150                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
00151                                  ((TRIGGER) == DAC_TRIGGER_T8_TRGO) || \
00152                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
00153                                  ((TRIGGER) == DAC_TRIGGER_T5_TRGO) || \
00154                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
00155                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO) || \
00156                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
00157                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
00158 #endif /* STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
00159 #if defined (STM32F100xE) || defined (STM32F105xC) || defined (STM32F107xC)
00160 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE)    || \
00161                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO) || \
00162                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO) || \
00163                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO) || \
00164                                  ((TRIGGER) == DAC_TRIGGER_T5_TRGO) || \
00165                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO) || \
00166                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO) || \
00167                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9) || \
00168                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
00169 #endif /* STM32F100xE || STM32F105xC || STM32F107xC */
00170 #if defined (STM32F100xB)
00171 #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_TRIGGER_NONE)     || \
00172                                  ((TRIGGER) == DAC_TRIGGER_T6_TRGO)  || \
00173                                  ((TRIGGER) == DAC_TRIGGER_T3_TRGO)  || \
00174                                  ((TRIGGER) == DAC_TRIGGER_T7_TRGO)  || \
00175                                  ((TRIGGER) == DAC_TRIGGER_T15_TRGO) || \
00176                                  ((TRIGGER) == DAC_TRIGGER_T2_TRGO)  || \
00177                                  ((TRIGGER) == DAC_TRIGGER_T4_TRGO)  || \
00178                                  ((TRIGGER) == DAC_TRIGGER_EXT_IT9)  || \
00179                                  ((TRIGGER) == DAC_TRIGGER_SOFTWARE))
00180 #endif /* STM32F100xB */
00181 
00182 #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUNMASK_BIT0) || \
00183                                                       ((VALUE) == DAC_LFSRUNMASK_BITS1_0) || \
00184                                                       ((VALUE) == DAC_LFSRUNMASK_BITS2_0) || \
00185                                                       ((VALUE) == DAC_LFSRUNMASK_BITS3_0) || \
00186                                                       ((VALUE) == DAC_LFSRUNMASK_BITS4_0) || \
00187                                                       ((VALUE) == DAC_LFSRUNMASK_BITS5_0) || \
00188                                                       ((VALUE) == DAC_LFSRUNMASK_BITS6_0) || \
00189                                                       ((VALUE) == DAC_LFSRUNMASK_BITS7_0) || \
00190                                                       ((VALUE) == DAC_LFSRUNMASK_BITS8_0) || \
00191                                                       ((VALUE) == DAC_LFSRUNMASK_BITS9_0) || \
00192                                                       ((VALUE) == DAC_LFSRUNMASK_BITS10_0) || \
00193                                                       ((VALUE) == DAC_LFSRUNMASK_BITS11_0) || \
00194                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1) || \
00195                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_3) || \
00196                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_7) || \
00197                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_15) || \
00198                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_31) || \
00199                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_63) || \
00200                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_127) || \
00201                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_255) || \
00202                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_511) || \
00203                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_1023) || \
00204                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_2047) || \
00205                                                       ((VALUE) == DAC_TRIANGLEAMPLITUDE_4095))
00206 /**
00207   * @}
00208   */
00209 
00210 /* Exported functions --------------------------------------------------------*/
00211 /* Extended features functions ***********************************************/
00212 
00213 /** @addtogroup DACEx_Exported_Functions
00214   * @{
00215   */
00216 
00217 /** @addtogroup DACEx_Exported_Functions_Group2
00218   * @{
00219   */
00220 /* IO operation functions *****************************************************/
00221 
00222 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude);
00223 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude);
00224 
00225 HAL_StatusTypeDef HAL_DACEx_DualStart(DAC_HandleTypeDef *hdac);
00226 HAL_StatusTypeDef HAL_DACEx_DualStop(DAC_HandleTypeDef *hdac);
00227 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef *hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
00228 uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef *hdac);
00229 
00230 void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef *hdac);
00231 void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef *hdac);
00232 void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac);
00233 void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac);
00234 
00235 
00236 /**
00237   * @}
00238   */
00239 
00240 /**
00241   * @}
00242   */
00243 
00244 /**
00245   * @}
00246   */
00247 
00248 /** @addtogroup DACEx_Private_Functions
00249   * @{
00250   */
00251 
00252 /* DAC_DMAConvCpltCh2 / DAC_DMAErrorCh2 / DAC_DMAHalfConvCpltCh2 */
00253 /* are called by HAL_DAC_Start_DMA */
00254 void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma);
00255 void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma);
00256 void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma);
00257 
00258 /**
00259   * @}
00260   */
00261 
00262 /**
00263   * @}
00264   */
00265 
00266 #endif /* DAC */
00267 
00268 /**
00269   * @}
00270   */
00271 
00272 #ifdef __cplusplus
00273 }
00274 #endif
00275 
00276 #endif /* STM32F1xx_HAL_DAC_EX_H */
00277 
00278 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/