added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Mon Mar 07 10:00:14 2016 +0000
Revision:
83:a036322b8637
Parent:
0:9b334a45a8ff
Child:
144:ef7eb2e8f9f7
Synchronized with git revision ee20d03969aa5c570152f88e8f3d8a4739eed40b

Full URL: https://github.com/mbedmicro/mbed/commit/ee20d03969aa5c570152f88e8f3d8a4739eed40b/

[STM32F7] Update STM32F7Cube_FW version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:9b334a45a8ff 1 /**
bogdanm 0:9b334a45a8ff 2 ******************************************************************************
bogdanm 0:9b334a45a8ff 3 * @file stm32f7xx_hal_dac.c
bogdanm 0:9b334a45a8ff 4 * @author MCD Application Team
mbed_official 83:a036322b8637 5 * @version V1.0.4
mbed_official 83:a036322b8637 6 * @date 09-December-2015
bogdanm 0:9b334a45a8ff 7 * @brief DAC HAL module driver.
bogdanm 0:9b334a45a8ff 8 * This file provides firmware functions to manage the following
bogdanm 0:9b334a45a8ff 9 * functionalities of the Digital to Analog Converter (DAC) peripheral:
bogdanm 0:9b334a45a8ff 10 * + Initialization and de-initialization functions
bogdanm 0:9b334a45a8ff 11 * + IO operation functions
bogdanm 0:9b334a45a8ff 12 * + Peripheral Control functions
bogdanm 0:9b334a45a8ff 13 * + Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 14 *
bogdanm 0:9b334a45a8ff 15 *
bogdanm 0:9b334a45a8ff 16 @verbatim
bogdanm 0:9b334a45a8ff 17 ==============================================================================
bogdanm 0:9b334a45a8ff 18 ##### DAC Peripheral features #####
bogdanm 0:9b334a45a8ff 19 ==============================================================================
bogdanm 0:9b334a45a8ff 20 [..]
bogdanm 0:9b334a45a8ff 21 *** DAC Channels ***
bogdanm 0:9b334a45a8ff 22 ====================
bogdanm 0:9b334a45a8ff 23 [..]
bogdanm 0:9b334a45a8ff 24 The device integrates two 12-bit Digital Analog Converters that can
bogdanm 0:9b334a45a8ff 25 be used independently or simultaneously (dual mode):
bogdanm 0:9b334a45a8ff 26 (#) DAC channel1 with DAC_OUT1 (PA4) as output
bogdanm 0:9b334a45a8ff 27 (#) DAC channel2 with DAC_OUT2 (PA5) as output
bogdanm 0:9b334a45a8ff 28
bogdanm 0:9b334a45a8ff 29 *** DAC Triggers ***
bogdanm 0:9b334a45a8ff 30 ====================
bogdanm 0:9b334a45a8ff 31 [..]
bogdanm 0:9b334a45a8ff 32 Digital to Analog conversion can be non-triggered using DAC_TRIGGER_NONE
bogdanm 0:9b334a45a8ff 33 and DAC_OUT1/DAC_OUT2 is available once writing to DHRx register.
bogdanm 0:9b334a45a8ff 34 [..]
bogdanm 0:9b334a45a8ff 35 Digital to Analog conversion can be triggered by:
bogdanm 0:9b334a45a8ff 36 (#) External event: EXTI Line 9 (any GPIOx_Pin9) using DAC_TRIGGER_EXT_IT9.
bogdanm 0:9b334a45a8ff 37 The used pin (GPIOx_Pin9) must be configured in input mode.
bogdanm 0:9b334a45a8ff 38
bogdanm 0:9b334a45a8ff 39 (#) Timers TRGO: TIM2, TIM4, TIM5, TIM6, TIM7 and TIM8
bogdanm 0:9b334a45a8ff 40 (DAC_TRIGGER_T2_TRGO, DAC_TRIGGER_T4_TRGO...)
bogdanm 0:9b334a45a8ff 41
bogdanm 0:9b334a45a8ff 42 (#) Software using DAC_TRIGGER_SOFTWARE
bogdanm 0:9b334a45a8ff 43
bogdanm 0:9b334a45a8ff 44 *** DAC Buffer mode feature ***
bogdanm 0:9b334a45a8ff 45 ===============================
bogdanm 0:9b334a45a8ff 46 [..]
bogdanm 0:9b334a45a8ff 47 Each DAC channel integrates an output buffer that can be used to
bogdanm 0:9b334a45a8ff 48 reduce the output impedance, and to drive external loads directly
bogdanm 0:9b334a45a8ff 49 without having to add an external operational amplifier.
bogdanm 0:9b334a45a8ff 50 To enable, the output buffer use
bogdanm 0:9b334a45a8ff 51 sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
bogdanm 0:9b334a45a8ff 52 [..]
bogdanm 0:9b334a45a8ff 53 (@) Refer to the device datasheet for more details about output
bogdanm 0:9b334a45a8ff 54 impedance value with and without output buffer.
bogdanm 0:9b334a45a8ff 55
bogdanm 0:9b334a45a8ff 56 *** DAC wave generation feature ***
bogdanm 0:9b334a45a8ff 57 ===================================
bogdanm 0:9b334a45a8ff 58 [..]
bogdanm 0:9b334a45a8ff 59 Both DAC channels can be used to generate
bogdanm 0:9b334a45a8ff 60 (#) Noise wave using HAL_DACEx_NoiseWaveGenerate()
bogdanm 0:9b334a45a8ff 61 (#) Triangle wave using HAL_DACEx_TriangleWaveGenerate()
bogdanm 0:9b334a45a8ff 62
bogdanm 0:9b334a45a8ff 63 *** DAC data format ***
bogdanm 0:9b334a45a8ff 64 =======================
bogdanm 0:9b334a45a8ff 65 [..]
bogdanm 0:9b334a45a8ff 66 The DAC data format can be:
bogdanm 0:9b334a45a8ff 67 (#) 8-bit right alignment using DAC_ALIGN_8B_R
bogdanm 0:9b334a45a8ff 68 (#) 12-bit left alignment using DAC_ALIGN_12B_L
bogdanm 0:9b334a45a8ff 69 (#) 12-bit right alignment using DAC_ALIGN_12B_R
bogdanm 0:9b334a45a8ff 70
bogdanm 0:9b334a45a8ff 71 *** DAC data value to voltage correspondence ***
bogdanm 0:9b334a45a8ff 72 ================================================
bogdanm 0:9b334a45a8ff 73 [..]
bogdanm 0:9b334a45a8ff 74 The analog output voltage on each DAC channel pin is determined
bogdanm 0:9b334a45a8ff 75 by the following equation:
bogdanm 0:9b334a45a8ff 76 DAC_OUTx = VREF+ * DOR / 4095
bogdanm 0:9b334a45a8ff 77 with DOR is the Data Output Register
bogdanm 0:9b334a45a8ff 78 VEF+ is the input voltage reference (refer to the device datasheet)
bogdanm 0:9b334a45a8ff 79 e.g. To set DAC_OUT1 to 0.7V, use
bogdanm 0:9b334a45a8ff 80 Assuming that VREF+ = 3.3V, DAC_OUT1 = (3.3 * 868) / 4095 = 0.7V
bogdanm 0:9b334a45a8ff 81
bogdanm 0:9b334a45a8ff 82 *** DMA requests ***
bogdanm 0:9b334a45a8ff 83 =====================
bogdanm 0:9b334a45a8ff 84 [..]
bogdanm 0:9b334a45a8ff 85 A DMA1 request can be generated when an external trigger (but not
bogdanm 0:9b334a45a8ff 86 a software trigger) occurs if DMA1 requests are enabled using
bogdanm 0:9b334a45a8ff 87 HAL_DAC_Start_DMA()
bogdanm 0:9b334a45a8ff 88 [..]
bogdanm 0:9b334a45a8ff 89 DMA1 requests are mapped as following:
bogdanm 0:9b334a45a8ff 90 (#) DAC channel1 : mapped on DMA1 Stream5 channel7 which must be
bogdanm 0:9b334a45a8ff 91 already configured
bogdanm 0:9b334a45a8ff 92 (#) DAC channel2 : mapped on DMA1 Stream6 channel7 which must be
bogdanm 0:9b334a45a8ff 93 already configured
bogdanm 0:9b334a45a8ff 94
bogdanm 0:9b334a45a8ff 95 -@- For Dual mode and specific signal (Triangle and noise) generation please
bogdanm 0:9b334a45a8ff 96 refer to Extension Features Driver description
bogdanm 0:9b334a45a8ff 97
bogdanm 0:9b334a45a8ff 98
bogdanm 0:9b334a45a8ff 99 ##### How to use this driver #####
bogdanm 0:9b334a45a8ff 100 ==============================================================================
bogdanm 0:9b334a45a8ff 101 [..]
bogdanm 0:9b334a45a8ff 102 (+) DAC APB clock must be enabled to get write access to DAC
bogdanm 0:9b334a45a8ff 103 registers using HAL_DAC_Init()
bogdanm 0:9b334a45a8ff 104 (+) Configure DAC_OUTx (DAC_OUT1: PA4, DAC_OUT2: PA5) in analog mode.
bogdanm 0:9b334a45a8ff 105 (+) Configure the DAC channel using HAL_DAC_ConfigChannel() function.
bogdanm 0:9b334a45a8ff 106 (+) Enable the DAC channel using HAL_DAC_Start() or HAL_DAC_Start_DMA functions
bogdanm 0:9b334a45a8ff 107
bogdanm 0:9b334a45a8ff 108 *** Polling mode IO operation ***
bogdanm 0:9b334a45a8ff 109 =================================
bogdanm 0:9b334a45a8ff 110 [..]
bogdanm 0:9b334a45a8ff 111 (+) Start the DAC peripheral using HAL_DAC_Start()
bogdanm 0:9b334a45a8ff 112 (+) To read the DAC last data output value, use the HAL_DAC_GetValue() function.
bogdanm 0:9b334a45a8ff 113 (+) Stop the DAC peripheral using HAL_DAC_Stop()
bogdanm 0:9b334a45a8ff 114
bogdanm 0:9b334a45a8ff 115
bogdanm 0:9b334a45a8ff 116 *** DMA mode IO operation ***
bogdanm 0:9b334a45a8ff 117 ==============================
bogdanm 0:9b334a45a8ff 118 [..]
bogdanm 0:9b334a45a8ff 119 (+) Start the DAC peripheral using HAL_DAC_Start_DMA(), at this stage the user specify the length
bogdanm 0:9b334a45a8ff 120 of data to be transferred at each end of conversion
bogdanm 0:9b334a45a8ff 121 (+) At The end of data transfer HAL_DAC_ConvCpltCallbackCh1()or HAL_DAC_ConvCpltCallbackCh2()
bogdanm 0:9b334a45a8ff 122 function is executed and user can add his own code by customization of function pointer
bogdanm 0:9b334a45a8ff 123 HAL_DAC_ConvCpltCallbackCh1 or HAL_DAC_ConvCpltCallbackCh2
bogdanm 0:9b334a45a8ff 124 (+) In case of transfer Error, HAL_DAC_ErrorCallbackCh1() function is executed and user can
bogdanm 0:9b334a45a8ff 125 add his own code by customization of function pointer HAL_DAC_ErrorCallbackCh1
bogdanm 0:9b334a45a8ff 126 (+) Stop the DAC peripheral using HAL_DAC_Stop_DMA()
bogdanm 0:9b334a45a8ff 127
bogdanm 0:9b334a45a8ff 128
bogdanm 0:9b334a45a8ff 129 *** DAC HAL driver macros list ***
bogdanm 0:9b334a45a8ff 130 =============================================
bogdanm 0:9b334a45a8ff 131 [..]
bogdanm 0:9b334a45a8ff 132 Below the list of most used macros in DAC HAL driver.
bogdanm 0:9b334a45a8ff 133
bogdanm 0:9b334a45a8ff 134 (+) __HAL_DAC_ENABLE : Enable the DAC peripheral
bogdanm 0:9b334a45a8ff 135 (+) __HAL_DAC_DISABLE : Disable the DAC peripheral
bogdanm 0:9b334a45a8ff 136 (+) __HAL_DAC_CLEAR_FLAG: Clear the DAC's pending flags
bogdanm 0:9b334a45a8ff 137 (+) __HAL_DAC_GET_FLAG: Get the selected DAC's flag status
bogdanm 0:9b334a45a8ff 138
bogdanm 0:9b334a45a8ff 139 [..]
bogdanm 0:9b334a45a8ff 140 (@) You can refer to the DAC HAL driver header file for more useful macros
bogdanm 0:9b334a45a8ff 141
bogdanm 0:9b334a45a8ff 142 @endverbatim
bogdanm 0:9b334a45a8ff 143 ******************************************************************************
bogdanm 0:9b334a45a8ff 144 * @attention
bogdanm 0:9b334a45a8ff 145 *
bogdanm 0:9b334a45a8ff 146 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
bogdanm 0:9b334a45a8ff 147 *
bogdanm 0:9b334a45a8ff 148 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 0:9b334a45a8ff 149 * are permitted provided that the following conditions are met:
bogdanm 0:9b334a45a8ff 150 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 0:9b334a45a8ff 151 * this list of conditions and the following disclaimer.
bogdanm 0:9b334a45a8ff 152 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 0:9b334a45a8ff 153 * this list of conditions and the following disclaimer in the documentation
bogdanm 0:9b334a45a8ff 154 * and/or other materials provided with the distribution.
bogdanm 0:9b334a45a8ff 155 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 0:9b334a45a8ff 156 * may be used to endorse or promote products derived from this software
bogdanm 0:9b334a45a8ff 157 * without specific prior written permission.
bogdanm 0:9b334a45a8ff 158 *
bogdanm 0:9b334a45a8ff 159 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 0:9b334a45a8ff 160 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 0:9b334a45a8ff 161 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 0:9b334a45a8ff 162 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 0:9b334a45a8ff 163 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 0:9b334a45a8ff 164 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 0:9b334a45a8ff 165 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 0:9b334a45a8ff 166 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 0:9b334a45a8ff 167 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 0:9b334a45a8ff 168 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 0:9b334a45a8ff 169 *
bogdanm 0:9b334a45a8ff 170 ******************************************************************************
bogdanm 0:9b334a45a8ff 171 */
bogdanm 0:9b334a45a8ff 172
bogdanm 0:9b334a45a8ff 173
bogdanm 0:9b334a45a8ff 174 /* Includes ------------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 175 #include "stm32f7xx_hal.h"
bogdanm 0:9b334a45a8ff 176
bogdanm 0:9b334a45a8ff 177 /** @addtogroup STM32F7xx_HAL_Driver
bogdanm 0:9b334a45a8ff 178 * @{
bogdanm 0:9b334a45a8ff 179 */
bogdanm 0:9b334a45a8ff 180
bogdanm 0:9b334a45a8ff 181 /** @defgroup DAC DAC
bogdanm 0:9b334a45a8ff 182 * @brief DAC driver modules
bogdanm 0:9b334a45a8ff 183 * @{
bogdanm 0:9b334a45a8ff 184 */
bogdanm 0:9b334a45a8ff 185
bogdanm 0:9b334a45a8ff 186 #ifdef HAL_DAC_MODULE_ENABLED
bogdanm 0:9b334a45a8ff 187
bogdanm 0:9b334a45a8ff 188 /* Private typedef -----------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 189 /* Private define ------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 190 /* Private macro -------------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 191 /* Private variables ---------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 192 /** @addtogroup DAC_Private_Functions
bogdanm 0:9b334a45a8ff 193 * @{
bogdanm 0:9b334a45a8ff 194 */
bogdanm 0:9b334a45a8ff 195 /* Private function prototypes -----------------------------------------------*/
bogdanm 0:9b334a45a8ff 196 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
bogdanm 0:9b334a45a8ff 197 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
bogdanm 0:9b334a45a8ff 198 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
bogdanm 0:9b334a45a8ff 199 /**
bogdanm 0:9b334a45a8ff 200 * @}
bogdanm 0:9b334a45a8ff 201 */
bogdanm 0:9b334a45a8ff 202
bogdanm 0:9b334a45a8ff 203 /* Exported functions --------------------------------------------------------*/
bogdanm 0:9b334a45a8ff 204 /** @defgroup DAC_Exported_Functions DAC Exported Functions
bogdanm 0:9b334a45a8ff 205 * @{
bogdanm 0:9b334a45a8ff 206 */
bogdanm 0:9b334a45a8ff 207
bogdanm 0:9b334a45a8ff 208 /** @defgroup DAC_Exported_Functions_Group1 Initialization and de-initialization functions
bogdanm 0:9b334a45a8ff 209 * @brief Initialization and Configuration functions
bogdanm 0:9b334a45a8ff 210 *
bogdanm 0:9b334a45a8ff 211 @verbatim
bogdanm 0:9b334a45a8ff 212 ==============================================================================
bogdanm 0:9b334a45a8ff 213 ##### Initialization and de-initialization functions #####
bogdanm 0:9b334a45a8ff 214 ==============================================================================
bogdanm 0:9b334a45a8ff 215 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 216 (+) Initialize and configure the DAC.
bogdanm 0:9b334a45a8ff 217 (+) De-initialize the DAC.
bogdanm 0:9b334a45a8ff 218
bogdanm 0:9b334a45a8ff 219 @endverbatim
bogdanm 0:9b334a45a8ff 220 * @{
bogdanm 0:9b334a45a8ff 221 */
bogdanm 0:9b334a45a8ff 222
bogdanm 0:9b334a45a8ff 223 /**
bogdanm 0:9b334a45a8ff 224 * @brief Initializes the DAC peripheral according to the specified parameters
bogdanm 0:9b334a45a8ff 225 * in the DAC_InitStruct.
bogdanm 0:9b334a45a8ff 226 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 227 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 228 * @retval HAL status
bogdanm 0:9b334a45a8ff 229 */
bogdanm 0:9b334a45a8ff 230 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 231 {
bogdanm 0:9b334a45a8ff 232 /* Check DAC handle */
bogdanm 0:9b334a45a8ff 233 if(hdac == NULL)
bogdanm 0:9b334a45a8ff 234 {
bogdanm 0:9b334a45a8ff 235 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 236 }
bogdanm 0:9b334a45a8ff 237 /* Check the parameters */
bogdanm 0:9b334a45a8ff 238 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
bogdanm 0:9b334a45a8ff 239
bogdanm 0:9b334a45a8ff 240 if(hdac->State == HAL_DAC_STATE_RESET)
bogdanm 0:9b334a45a8ff 241 {
bogdanm 0:9b334a45a8ff 242 /* Allocate lock resource and initialize it */
bogdanm 0:9b334a45a8ff 243 hdac->Lock = HAL_UNLOCKED;
bogdanm 0:9b334a45a8ff 244 /* Init the low level hardware */
bogdanm 0:9b334a45a8ff 245 HAL_DAC_MspInit(hdac);
bogdanm 0:9b334a45a8ff 246 }
bogdanm 0:9b334a45a8ff 247
bogdanm 0:9b334a45a8ff 248 /* Initialize the DAC state*/
bogdanm 0:9b334a45a8ff 249 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 250
bogdanm 0:9b334a45a8ff 251 /* Set DAC error code to none */
bogdanm 0:9b334a45a8ff 252 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
bogdanm 0:9b334a45a8ff 253
bogdanm 0:9b334a45a8ff 254 /* Initialize the DAC state*/
bogdanm 0:9b334a45a8ff 255 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 256
bogdanm 0:9b334a45a8ff 257 /* Return function status */
bogdanm 0:9b334a45a8ff 258 return HAL_OK;
bogdanm 0:9b334a45a8ff 259 }
bogdanm 0:9b334a45a8ff 260
bogdanm 0:9b334a45a8ff 261 /**
bogdanm 0:9b334a45a8ff 262 * @brief Deinitializes the DAC peripheral registers to their default reset values.
bogdanm 0:9b334a45a8ff 263 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 264 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 265 * @retval HAL status
bogdanm 0:9b334a45a8ff 266 */
bogdanm 0:9b334a45a8ff 267 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 268 {
bogdanm 0:9b334a45a8ff 269 /* Check DAC handle */
bogdanm 0:9b334a45a8ff 270 if(hdac == NULL)
bogdanm 0:9b334a45a8ff 271 {
bogdanm 0:9b334a45a8ff 272 return HAL_ERROR;
bogdanm 0:9b334a45a8ff 273 }
bogdanm 0:9b334a45a8ff 274
bogdanm 0:9b334a45a8ff 275 /* Check the parameters */
bogdanm 0:9b334a45a8ff 276 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
bogdanm 0:9b334a45a8ff 277
bogdanm 0:9b334a45a8ff 278 /* Change DAC state */
bogdanm 0:9b334a45a8ff 279 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 280
bogdanm 0:9b334a45a8ff 281 /* DeInit the low level hardware */
bogdanm 0:9b334a45a8ff 282 HAL_DAC_MspDeInit(hdac);
bogdanm 0:9b334a45a8ff 283
bogdanm 0:9b334a45a8ff 284 /* Set DAC error code to none */
bogdanm 0:9b334a45a8ff 285 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
bogdanm 0:9b334a45a8ff 286
bogdanm 0:9b334a45a8ff 287 /* Change DAC state */
bogdanm 0:9b334a45a8ff 288 hdac->State = HAL_DAC_STATE_RESET;
bogdanm 0:9b334a45a8ff 289
bogdanm 0:9b334a45a8ff 290 /* Release Lock */
bogdanm 0:9b334a45a8ff 291 __HAL_UNLOCK(hdac);
bogdanm 0:9b334a45a8ff 292
bogdanm 0:9b334a45a8ff 293 /* Return function status */
bogdanm 0:9b334a45a8ff 294 return HAL_OK;
bogdanm 0:9b334a45a8ff 295 }
bogdanm 0:9b334a45a8ff 296
bogdanm 0:9b334a45a8ff 297 /**
bogdanm 0:9b334a45a8ff 298 * @brief Initializes the DAC MSP.
bogdanm 0:9b334a45a8ff 299 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 300 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 301 * @retval None
bogdanm 0:9b334a45a8ff 302 */
bogdanm 0:9b334a45a8ff 303 __weak void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 304 {
mbed_official 83:a036322b8637 305 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 306 UNUSED(hdac);
mbed_official 83:a036322b8637 307
bogdanm 0:9b334a45a8ff 308 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 309 the HAL_DAC_MspInit could be implemented in the user file
bogdanm 0:9b334a45a8ff 310 */
bogdanm 0:9b334a45a8ff 311 }
bogdanm 0:9b334a45a8ff 312
bogdanm 0:9b334a45a8ff 313 /**
bogdanm 0:9b334a45a8ff 314 * @brief DeInitializes the DAC MSP.
bogdanm 0:9b334a45a8ff 315 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 316 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 317 * @retval None
bogdanm 0:9b334a45a8ff 318 */
bogdanm 0:9b334a45a8ff 319 __weak void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 320 {
mbed_official 83:a036322b8637 321 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 322 UNUSED(hdac);
mbed_official 83:a036322b8637 323
bogdanm 0:9b334a45a8ff 324 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 325 the HAL_DAC_MspDeInit could be implemented in the user file
bogdanm 0:9b334a45a8ff 326 */
bogdanm 0:9b334a45a8ff 327 }
bogdanm 0:9b334a45a8ff 328
bogdanm 0:9b334a45a8ff 329 /**
bogdanm 0:9b334a45a8ff 330 * @}
bogdanm 0:9b334a45a8ff 331 */
bogdanm 0:9b334a45a8ff 332
bogdanm 0:9b334a45a8ff 333 /** @defgroup DAC_Exported_Functions_Group2 IO operation functions
bogdanm 0:9b334a45a8ff 334 * @brief IO operation functions
bogdanm 0:9b334a45a8ff 335 *
bogdanm 0:9b334a45a8ff 336 @verbatim
bogdanm 0:9b334a45a8ff 337 ==============================================================================
bogdanm 0:9b334a45a8ff 338 ##### IO operation functions #####
bogdanm 0:9b334a45a8ff 339 ==============================================================================
bogdanm 0:9b334a45a8ff 340 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 341 (+) Start conversion.
bogdanm 0:9b334a45a8ff 342 (+) Stop conversion.
bogdanm 0:9b334a45a8ff 343 (+) Start conversion and enable DMA transfer.
bogdanm 0:9b334a45a8ff 344 (+) Stop conversion and disable DMA transfer.
bogdanm 0:9b334a45a8ff 345 (+) Get result of conversion.
bogdanm 0:9b334a45a8ff 346
bogdanm 0:9b334a45a8ff 347 @endverbatim
bogdanm 0:9b334a45a8ff 348 * @{
bogdanm 0:9b334a45a8ff 349 */
bogdanm 0:9b334a45a8ff 350
bogdanm 0:9b334a45a8ff 351 /**
bogdanm 0:9b334a45a8ff 352 * @brief Enables DAC and starts conversion of channel.
bogdanm 0:9b334a45a8ff 353 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 354 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 355 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 356 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 357 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 358 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 359 * @retval HAL status
bogdanm 0:9b334a45a8ff 360 */
bogdanm 0:9b334a45a8ff 361 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 362 {
bogdanm 0:9b334a45a8ff 363 uint32_t tmp1 = 0, tmp2 = 0;
bogdanm 0:9b334a45a8ff 364
bogdanm 0:9b334a45a8ff 365 /* Check the parameters */
bogdanm 0:9b334a45a8ff 366 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 367
bogdanm 0:9b334a45a8ff 368 /* Process locked */
bogdanm 0:9b334a45a8ff 369 __HAL_LOCK(hdac);
bogdanm 0:9b334a45a8ff 370
bogdanm 0:9b334a45a8ff 371 /* Change DAC state */
bogdanm 0:9b334a45a8ff 372 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 373
bogdanm 0:9b334a45a8ff 374 /* Enable the Peripheral */
bogdanm 0:9b334a45a8ff 375 __HAL_DAC_ENABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 376
bogdanm 0:9b334a45a8ff 377 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 378 {
bogdanm 0:9b334a45a8ff 379 tmp1 = hdac->Instance->CR & DAC_CR_TEN1;
bogdanm 0:9b334a45a8ff 380 tmp2 = hdac->Instance->CR & DAC_CR_TSEL1;
bogdanm 0:9b334a45a8ff 381 /* Check if software trigger enabled */
bogdanm 0:9b334a45a8ff 382 if((tmp1 == DAC_CR_TEN1) && (tmp2 == DAC_CR_TSEL1))
bogdanm 0:9b334a45a8ff 383 {
bogdanm 0:9b334a45a8ff 384 /* Enable the selected DAC software conversion */
bogdanm 0:9b334a45a8ff 385 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG1;
bogdanm 0:9b334a45a8ff 386 }
bogdanm 0:9b334a45a8ff 387 }
bogdanm 0:9b334a45a8ff 388 else
bogdanm 0:9b334a45a8ff 389 {
bogdanm 0:9b334a45a8ff 390 tmp1 = hdac->Instance->CR & DAC_CR_TEN2;
bogdanm 0:9b334a45a8ff 391 tmp2 = hdac->Instance->CR & DAC_CR_TSEL2;
bogdanm 0:9b334a45a8ff 392 /* Check if software trigger enabled */
bogdanm 0:9b334a45a8ff 393 if((tmp1 == DAC_CR_TEN2) && (tmp2 == DAC_CR_TSEL2))
bogdanm 0:9b334a45a8ff 394 {
bogdanm 0:9b334a45a8ff 395 /* Enable the selected DAC software conversion*/
bogdanm 0:9b334a45a8ff 396 hdac->Instance->SWTRIGR |= (uint32_t)DAC_SWTRIGR_SWTRIG2;
bogdanm 0:9b334a45a8ff 397 }
bogdanm 0:9b334a45a8ff 398 }
bogdanm 0:9b334a45a8ff 399
bogdanm 0:9b334a45a8ff 400 /* Change DAC state */
bogdanm 0:9b334a45a8ff 401 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 402
bogdanm 0:9b334a45a8ff 403 /* Process unlocked */
bogdanm 0:9b334a45a8ff 404 __HAL_UNLOCK(hdac);
bogdanm 0:9b334a45a8ff 405
bogdanm 0:9b334a45a8ff 406 /* Return function status */
bogdanm 0:9b334a45a8ff 407 return HAL_OK;
bogdanm 0:9b334a45a8ff 408 }
bogdanm 0:9b334a45a8ff 409
bogdanm 0:9b334a45a8ff 410 /**
bogdanm 0:9b334a45a8ff 411 * @brief Disables DAC and stop conversion of channel.
bogdanm 0:9b334a45a8ff 412 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 413 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 414 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 415 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 416 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 417 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 418 * @retval HAL status
bogdanm 0:9b334a45a8ff 419 */
bogdanm 0:9b334a45a8ff 420 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 421 {
bogdanm 0:9b334a45a8ff 422 /* Check the parameters */
bogdanm 0:9b334a45a8ff 423 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 424
bogdanm 0:9b334a45a8ff 425 /* Disable the Peripheral */
bogdanm 0:9b334a45a8ff 426 __HAL_DAC_DISABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 427
bogdanm 0:9b334a45a8ff 428 /* Change DAC state */
bogdanm 0:9b334a45a8ff 429 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 430
bogdanm 0:9b334a45a8ff 431 /* Return function status */
bogdanm 0:9b334a45a8ff 432 return HAL_OK;
bogdanm 0:9b334a45a8ff 433 }
bogdanm 0:9b334a45a8ff 434
bogdanm 0:9b334a45a8ff 435 /**
bogdanm 0:9b334a45a8ff 436 * @brief Enables DAC and starts conversion of channel.
bogdanm 0:9b334a45a8ff 437 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 438 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 439 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 440 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 441 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 442 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 443 * @param pData: The destination peripheral Buffer address.
bogdanm 0:9b334a45a8ff 444 * @param Length: The length of data to be transferred from memory to DAC peripheral
bogdanm 0:9b334a45a8ff 445 * @param Alignment: Specifies the data alignment for DAC channel.
bogdanm 0:9b334a45a8ff 446 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 447 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
bogdanm 0:9b334a45a8ff 448 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
bogdanm 0:9b334a45a8ff 449 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
bogdanm 0:9b334a45a8ff 450 * @retval HAL status
bogdanm 0:9b334a45a8ff 451 */
bogdanm 0:9b334a45a8ff 452 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t* pData, uint32_t Length, uint32_t Alignment)
bogdanm 0:9b334a45a8ff 453 {
bogdanm 0:9b334a45a8ff 454 uint32_t tmpreg = 0;
bogdanm 0:9b334a45a8ff 455
bogdanm 0:9b334a45a8ff 456 /* Check the parameters */
bogdanm 0:9b334a45a8ff 457 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 458 assert_param(IS_DAC_ALIGN(Alignment));
bogdanm 0:9b334a45a8ff 459
bogdanm 0:9b334a45a8ff 460 /* Process locked */
bogdanm 0:9b334a45a8ff 461 __HAL_LOCK(hdac);
bogdanm 0:9b334a45a8ff 462
bogdanm 0:9b334a45a8ff 463 /* Change DAC state */
bogdanm 0:9b334a45a8ff 464 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 465
bogdanm 0:9b334a45a8ff 466 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 467 {
bogdanm 0:9b334a45a8ff 468 /* Set the DMA transfer complete callback for channel1 */
bogdanm 0:9b334a45a8ff 469 hdac->DMA_Handle1->XferCpltCallback = DAC_DMAConvCpltCh1;
bogdanm 0:9b334a45a8ff 470
bogdanm 0:9b334a45a8ff 471 /* Set the DMA half transfer complete callback for channel1 */
bogdanm 0:9b334a45a8ff 472 hdac->DMA_Handle1->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh1;
bogdanm 0:9b334a45a8ff 473
bogdanm 0:9b334a45a8ff 474 /* Set the DMA error callback for channel1 */
bogdanm 0:9b334a45a8ff 475 hdac->DMA_Handle1->XferErrorCallback = DAC_DMAErrorCh1;
bogdanm 0:9b334a45a8ff 476
bogdanm 0:9b334a45a8ff 477 /* Enable the selected DAC channel1 DMA request */
bogdanm 0:9b334a45a8ff 478 hdac->Instance->CR |= DAC_CR_DMAEN1;
bogdanm 0:9b334a45a8ff 479
bogdanm 0:9b334a45a8ff 480 /* Case of use of channel 1 */
bogdanm 0:9b334a45a8ff 481 switch(Alignment)
bogdanm 0:9b334a45a8ff 482 {
bogdanm 0:9b334a45a8ff 483 case DAC_ALIGN_12B_R:
bogdanm 0:9b334a45a8ff 484 /* Get DHR12R1 address */
bogdanm 0:9b334a45a8ff 485 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
bogdanm 0:9b334a45a8ff 486 break;
bogdanm 0:9b334a45a8ff 487 case DAC_ALIGN_12B_L:
bogdanm 0:9b334a45a8ff 488 /* Get DHR12L1 address */
bogdanm 0:9b334a45a8ff 489 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
bogdanm 0:9b334a45a8ff 490 break;
bogdanm 0:9b334a45a8ff 491 case DAC_ALIGN_8B_R:
bogdanm 0:9b334a45a8ff 492 /* Get DHR8R1 address */
bogdanm 0:9b334a45a8ff 493 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
bogdanm 0:9b334a45a8ff 494 break;
bogdanm 0:9b334a45a8ff 495 default:
bogdanm 0:9b334a45a8ff 496 break;
bogdanm 0:9b334a45a8ff 497 }
bogdanm 0:9b334a45a8ff 498 }
bogdanm 0:9b334a45a8ff 499 else
bogdanm 0:9b334a45a8ff 500 {
bogdanm 0:9b334a45a8ff 501 /* Set the DMA transfer complete callback for channel2 */
bogdanm 0:9b334a45a8ff 502 hdac->DMA_Handle2->XferCpltCallback = DAC_DMAConvCpltCh2;
bogdanm 0:9b334a45a8ff 503
bogdanm 0:9b334a45a8ff 504 /* Set the DMA half transfer complete callback for channel2 */
bogdanm 0:9b334a45a8ff 505 hdac->DMA_Handle2->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh2;
bogdanm 0:9b334a45a8ff 506
bogdanm 0:9b334a45a8ff 507 /* Set the DMA error callback for channel2 */
bogdanm 0:9b334a45a8ff 508 hdac->DMA_Handle2->XferErrorCallback = DAC_DMAErrorCh2;
bogdanm 0:9b334a45a8ff 509
bogdanm 0:9b334a45a8ff 510 /* Enable the selected DAC channel2 DMA request */
bogdanm 0:9b334a45a8ff 511 hdac->Instance->CR |= DAC_CR_DMAEN2;
bogdanm 0:9b334a45a8ff 512
bogdanm 0:9b334a45a8ff 513 /* Case of use of channel 2 */
bogdanm 0:9b334a45a8ff 514 switch(Alignment)
bogdanm 0:9b334a45a8ff 515 {
bogdanm 0:9b334a45a8ff 516 case DAC_ALIGN_12B_R:
bogdanm 0:9b334a45a8ff 517 /* Get DHR12R2 address */
bogdanm 0:9b334a45a8ff 518 tmpreg = (uint32_t)&hdac->Instance->DHR12R2;
bogdanm 0:9b334a45a8ff 519 break;
bogdanm 0:9b334a45a8ff 520 case DAC_ALIGN_12B_L:
bogdanm 0:9b334a45a8ff 521 /* Get DHR12L2 address */
bogdanm 0:9b334a45a8ff 522 tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
bogdanm 0:9b334a45a8ff 523 break;
bogdanm 0:9b334a45a8ff 524 case DAC_ALIGN_8B_R:
bogdanm 0:9b334a45a8ff 525 /* Get DHR8R2 address */
bogdanm 0:9b334a45a8ff 526 tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
bogdanm 0:9b334a45a8ff 527 break;
bogdanm 0:9b334a45a8ff 528 default:
bogdanm 0:9b334a45a8ff 529 break;
bogdanm 0:9b334a45a8ff 530 }
bogdanm 0:9b334a45a8ff 531 }
bogdanm 0:9b334a45a8ff 532
bogdanm 0:9b334a45a8ff 533 /* Enable the DMA Stream */
bogdanm 0:9b334a45a8ff 534 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 535 {
bogdanm 0:9b334a45a8ff 536 /* Enable the DAC DMA underrun interrupt */
bogdanm 0:9b334a45a8ff 537 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
bogdanm 0:9b334a45a8ff 538
bogdanm 0:9b334a45a8ff 539 /* Enable the DMA Stream */
bogdanm 0:9b334a45a8ff 540 HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
bogdanm 0:9b334a45a8ff 541 }
bogdanm 0:9b334a45a8ff 542 else
bogdanm 0:9b334a45a8ff 543 {
bogdanm 0:9b334a45a8ff 544 /* Enable the DAC DMA underrun interrupt */
bogdanm 0:9b334a45a8ff 545 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR2);
bogdanm 0:9b334a45a8ff 546
bogdanm 0:9b334a45a8ff 547 /* Enable the DMA Stream */
bogdanm 0:9b334a45a8ff 548 HAL_DMA_Start_IT(hdac->DMA_Handle2, (uint32_t)pData, tmpreg, Length);
bogdanm 0:9b334a45a8ff 549 }
bogdanm 0:9b334a45a8ff 550
bogdanm 0:9b334a45a8ff 551 /* Enable the Peripheral */
bogdanm 0:9b334a45a8ff 552 __HAL_DAC_ENABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 553
bogdanm 0:9b334a45a8ff 554 /* Process Unlocked */
bogdanm 0:9b334a45a8ff 555 __HAL_UNLOCK(hdac);
bogdanm 0:9b334a45a8ff 556
bogdanm 0:9b334a45a8ff 557 /* Return function status */
bogdanm 0:9b334a45a8ff 558 return HAL_OK;
bogdanm 0:9b334a45a8ff 559 }
bogdanm 0:9b334a45a8ff 560
bogdanm 0:9b334a45a8ff 561 /**
bogdanm 0:9b334a45a8ff 562 * @brief Disables DAC and stop conversion of channel.
bogdanm 0:9b334a45a8ff 563 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 564 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 565 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 566 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 567 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 568 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 569 * @retval HAL status
bogdanm 0:9b334a45a8ff 570 */
bogdanm 0:9b334a45a8ff 571 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 572 {
bogdanm 0:9b334a45a8ff 573 HAL_StatusTypeDef status = HAL_OK;
bogdanm 0:9b334a45a8ff 574
bogdanm 0:9b334a45a8ff 575 /* Check the parameters */
bogdanm 0:9b334a45a8ff 576 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 577
bogdanm 0:9b334a45a8ff 578 /* Disable the selected DAC channel DMA request */
bogdanm 0:9b334a45a8ff 579 hdac->Instance->CR &= ~(DAC_CR_DMAEN1 << Channel);
bogdanm 0:9b334a45a8ff 580
bogdanm 0:9b334a45a8ff 581 /* Disable the Peripheral */
bogdanm 0:9b334a45a8ff 582 __HAL_DAC_DISABLE(hdac, Channel);
bogdanm 0:9b334a45a8ff 583
bogdanm 0:9b334a45a8ff 584 /* Disable the DMA Channel */
bogdanm 0:9b334a45a8ff 585 /* Channel1 is used */
bogdanm 0:9b334a45a8ff 586 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 587 {
bogdanm 0:9b334a45a8ff 588 status = HAL_DMA_Abort(hdac->DMA_Handle1);
bogdanm 0:9b334a45a8ff 589 }
bogdanm 0:9b334a45a8ff 590 else /* Channel2 is used for */
bogdanm 0:9b334a45a8ff 591 {
bogdanm 0:9b334a45a8ff 592 status = HAL_DMA_Abort(hdac->DMA_Handle2);
bogdanm 0:9b334a45a8ff 593 }
bogdanm 0:9b334a45a8ff 594
bogdanm 0:9b334a45a8ff 595 /* Check if DMA Channel effectively disabled */
bogdanm 0:9b334a45a8ff 596 if(status != HAL_OK)
bogdanm 0:9b334a45a8ff 597 {
bogdanm 0:9b334a45a8ff 598 /* Update DAC state machine to error */
bogdanm 0:9b334a45a8ff 599 hdac->State = HAL_DAC_STATE_ERROR;
bogdanm 0:9b334a45a8ff 600 }
bogdanm 0:9b334a45a8ff 601 else
bogdanm 0:9b334a45a8ff 602 {
bogdanm 0:9b334a45a8ff 603 /* Change DAC state */
bogdanm 0:9b334a45a8ff 604 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 605 }
bogdanm 0:9b334a45a8ff 606
bogdanm 0:9b334a45a8ff 607 /* Return function status */
bogdanm 0:9b334a45a8ff 608 return status;
bogdanm 0:9b334a45a8ff 609 }
bogdanm 0:9b334a45a8ff 610
bogdanm 0:9b334a45a8ff 611 /**
bogdanm 0:9b334a45a8ff 612 * @brief Returns the last data output value of the selected DAC channel.
bogdanm 0:9b334a45a8ff 613 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 614 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 615 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 616 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 617 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 618 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 619 * @retval The selected DAC channel data output value.
bogdanm 0:9b334a45a8ff 620 */
bogdanm 0:9b334a45a8ff 621 uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef* hdac, uint32_t Channel)
bogdanm 0:9b334a45a8ff 622 {
bogdanm 0:9b334a45a8ff 623 /* Check the parameters */
bogdanm 0:9b334a45a8ff 624 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 625
bogdanm 0:9b334a45a8ff 626 /* Returns the DAC channel data output register value */
bogdanm 0:9b334a45a8ff 627 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 628 {
bogdanm 0:9b334a45a8ff 629 return hdac->Instance->DOR1;
bogdanm 0:9b334a45a8ff 630 }
bogdanm 0:9b334a45a8ff 631 else
bogdanm 0:9b334a45a8ff 632 {
bogdanm 0:9b334a45a8ff 633 return hdac->Instance->DOR2;
bogdanm 0:9b334a45a8ff 634 }
bogdanm 0:9b334a45a8ff 635 }
bogdanm 0:9b334a45a8ff 636
bogdanm 0:9b334a45a8ff 637 /**
bogdanm 0:9b334a45a8ff 638 * @brief Handles DAC interrupt request
bogdanm 0:9b334a45a8ff 639 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 640 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 641 * @retval None
bogdanm 0:9b334a45a8ff 642 */
bogdanm 0:9b334a45a8ff 643 void HAL_DAC_IRQHandler(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 644 {
bogdanm 0:9b334a45a8ff 645 /* Check underrun channel 1 flag */
bogdanm 0:9b334a45a8ff 646 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR1))
bogdanm 0:9b334a45a8ff 647 {
bogdanm 0:9b334a45a8ff 648 /* Change DAC state to error state */
bogdanm 0:9b334a45a8ff 649 hdac->State = HAL_DAC_STATE_ERROR;
bogdanm 0:9b334a45a8ff 650
bogdanm 0:9b334a45a8ff 651 /* Set DAC error code to channel1 DMA underrun error */
bogdanm 0:9b334a45a8ff 652 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH1;
bogdanm 0:9b334a45a8ff 653
bogdanm 0:9b334a45a8ff 654 /* Clear the underrun flag */
bogdanm 0:9b334a45a8ff 655 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR1);
bogdanm 0:9b334a45a8ff 656
bogdanm 0:9b334a45a8ff 657 /* Disable the selected DAC channel1 DMA request */
bogdanm 0:9b334a45a8ff 658 hdac->Instance->CR &= ~DAC_CR_DMAEN1;
bogdanm 0:9b334a45a8ff 659
bogdanm 0:9b334a45a8ff 660 /* Error callback */
bogdanm 0:9b334a45a8ff 661 HAL_DAC_DMAUnderrunCallbackCh1(hdac);
bogdanm 0:9b334a45a8ff 662 }
bogdanm 0:9b334a45a8ff 663 /* Check underrun channel 2 flag */
bogdanm 0:9b334a45a8ff 664 if(__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR2))
bogdanm 0:9b334a45a8ff 665 {
bogdanm 0:9b334a45a8ff 666 /* Change DAC state to error state */
bogdanm 0:9b334a45a8ff 667 hdac->State = HAL_DAC_STATE_ERROR;
bogdanm 0:9b334a45a8ff 668
bogdanm 0:9b334a45a8ff 669 /* Set DAC error code to channel2 DMA underrun error */
bogdanm 0:9b334a45a8ff 670 hdac->ErrorCode |= HAL_DAC_ERROR_DMAUNDERRUNCH2;
bogdanm 0:9b334a45a8ff 671
bogdanm 0:9b334a45a8ff 672 /* Clear the underrun flag */
bogdanm 0:9b334a45a8ff 673 __HAL_DAC_CLEAR_FLAG(hdac,DAC_FLAG_DMAUDR2);
bogdanm 0:9b334a45a8ff 674
bogdanm 0:9b334a45a8ff 675 /* Disable the selected DAC channel1 DMA request */
bogdanm 0:9b334a45a8ff 676 hdac->Instance->CR &= ~DAC_CR_DMAEN2;
bogdanm 0:9b334a45a8ff 677
bogdanm 0:9b334a45a8ff 678 /* Error callback */
bogdanm 0:9b334a45a8ff 679 HAL_DACEx_DMAUnderrunCallbackCh2(hdac);
bogdanm 0:9b334a45a8ff 680 }
bogdanm 0:9b334a45a8ff 681 }
bogdanm 0:9b334a45a8ff 682
bogdanm 0:9b334a45a8ff 683 /**
bogdanm 0:9b334a45a8ff 684 * @brief Conversion complete callback in non blocking mode for Channel1
bogdanm 0:9b334a45a8ff 685 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 686 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 687 * @retval None
bogdanm 0:9b334a45a8ff 688 */
bogdanm 0:9b334a45a8ff 689 __weak void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 690 {
mbed_official 83:a036322b8637 691 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 692 UNUSED(hdac);
mbed_official 83:a036322b8637 693
bogdanm 0:9b334a45a8ff 694 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 695 the HAL_DAC_ConvCpltCallback could be implemented in the user file
bogdanm 0:9b334a45a8ff 696 */
bogdanm 0:9b334a45a8ff 697 }
bogdanm 0:9b334a45a8ff 698
bogdanm 0:9b334a45a8ff 699 /**
bogdanm 0:9b334a45a8ff 700 * @brief Conversion half DMA transfer callback in non blocking mode for Channel1
bogdanm 0:9b334a45a8ff 701 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 702 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 703 * @retval None
bogdanm 0:9b334a45a8ff 704 */
bogdanm 0:9b334a45a8ff 705 __weak void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 706 {
mbed_official 83:a036322b8637 707 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 708 UNUSED(hdac);
mbed_official 83:a036322b8637 709
bogdanm 0:9b334a45a8ff 710 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 711 the HAL_DAC_ConvHalfCpltCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 712 */
bogdanm 0:9b334a45a8ff 713 }
bogdanm 0:9b334a45a8ff 714
bogdanm 0:9b334a45a8ff 715 /**
bogdanm 0:9b334a45a8ff 716 * @brief Error DAC callback for Channel1.
bogdanm 0:9b334a45a8ff 717 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 718 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 719 * @retval None
bogdanm 0:9b334a45a8ff 720 */
bogdanm 0:9b334a45a8ff 721 __weak void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 722 {
mbed_official 83:a036322b8637 723 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 724 UNUSED(hdac);
mbed_official 83:a036322b8637 725
bogdanm 0:9b334a45a8ff 726 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 727 the HAL_DAC_ErrorCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 728 */
bogdanm 0:9b334a45a8ff 729 }
bogdanm 0:9b334a45a8ff 730
bogdanm 0:9b334a45a8ff 731 /**
bogdanm 0:9b334a45a8ff 732 * @brief DMA underrun DAC callback for channel1.
bogdanm 0:9b334a45a8ff 733 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 734 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 735 * @retval None
bogdanm 0:9b334a45a8ff 736 */
bogdanm 0:9b334a45a8ff 737 __weak void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 738 {
mbed_official 83:a036322b8637 739 /* Prevent unused argument(s) compilation warning */
mbed_official 83:a036322b8637 740 UNUSED(hdac);
mbed_official 83:a036322b8637 741
bogdanm 0:9b334a45a8ff 742 /* NOTE : This function Should not be modified, when the callback is needed,
bogdanm 0:9b334a45a8ff 743 the HAL_DAC_DMAUnderrunCallbackCh1 could be implemented in the user file
bogdanm 0:9b334a45a8ff 744 */
bogdanm 0:9b334a45a8ff 745 }
bogdanm 0:9b334a45a8ff 746
bogdanm 0:9b334a45a8ff 747 /**
bogdanm 0:9b334a45a8ff 748 * @}
bogdanm 0:9b334a45a8ff 749 */
bogdanm 0:9b334a45a8ff 750
bogdanm 0:9b334a45a8ff 751 /** @defgroup DAC_Exported_Functions_Group3 Peripheral Control functions
bogdanm 0:9b334a45a8ff 752 * @brief Peripheral Control functions
bogdanm 0:9b334a45a8ff 753 *
bogdanm 0:9b334a45a8ff 754 @verbatim
bogdanm 0:9b334a45a8ff 755 ==============================================================================
bogdanm 0:9b334a45a8ff 756 ##### Peripheral Control functions #####
bogdanm 0:9b334a45a8ff 757 ==============================================================================
bogdanm 0:9b334a45a8ff 758 [..] This section provides functions allowing to:
bogdanm 0:9b334a45a8ff 759 (+) Configure channels.
bogdanm 0:9b334a45a8ff 760 (+) Set the specified data holding register value for DAC channel.
bogdanm 0:9b334a45a8ff 761
bogdanm 0:9b334a45a8ff 762 @endverbatim
bogdanm 0:9b334a45a8ff 763 * @{
bogdanm 0:9b334a45a8ff 764 */
bogdanm 0:9b334a45a8ff 765
bogdanm 0:9b334a45a8ff 766 /**
bogdanm 0:9b334a45a8ff 767 * @brief Configures the selected DAC channel.
bogdanm 0:9b334a45a8ff 768 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 769 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 770 * @param sConfig: DAC configuration structure.
bogdanm 0:9b334a45a8ff 771 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 772 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 773 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 774 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 775 * @retval HAL status
bogdanm 0:9b334a45a8ff 776 */
bogdanm 0:9b334a45a8ff 777 HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel)
bogdanm 0:9b334a45a8ff 778 {
bogdanm 0:9b334a45a8ff 779 uint32_t tmpreg1 = 0, tmpreg2 = 0;
bogdanm 0:9b334a45a8ff 780
bogdanm 0:9b334a45a8ff 781 /* Check the DAC parameters */
bogdanm 0:9b334a45a8ff 782 assert_param(IS_DAC_TRIGGER(sConfig->DAC_Trigger));
bogdanm 0:9b334a45a8ff 783 assert_param(IS_DAC_OUTPUT_BUFFER_STATE(sConfig->DAC_OutputBuffer));
bogdanm 0:9b334a45a8ff 784 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 785
bogdanm 0:9b334a45a8ff 786 /* Process locked */
bogdanm 0:9b334a45a8ff 787 __HAL_LOCK(hdac);
bogdanm 0:9b334a45a8ff 788
bogdanm 0:9b334a45a8ff 789 /* Change DAC state */
bogdanm 0:9b334a45a8ff 790 hdac->State = HAL_DAC_STATE_BUSY;
bogdanm 0:9b334a45a8ff 791
bogdanm 0:9b334a45a8ff 792 /* Get the DAC CR value */
bogdanm 0:9b334a45a8ff 793 tmpreg1 = hdac->Instance->CR;
bogdanm 0:9b334a45a8ff 794 /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
bogdanm 0:9b334a45a8ff 795 tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1)) << Channel);
bogdanm 0:9b334a45a8ff 796 /* Configure for the selected DAC channel: buffer output, trigger */
bogdanm 0:9b334a45a8ff 797 /* Set TSELx and TENx bits according to DAC_Trigger value */
bogdanm 0:9b334a45a8ff 798 /* Set BOFFx bit according to DAC_OutputBuffer value */
bogdanm 0:9b334a45a8ff 799 tmpreg2 = (sConfig->DAC_Trigger | sConfig->DAC_OutputBuffer);
bogdanm 0:9b334a45a8ff 800 /* Calculate CR register value depending on DAC_Channel */
bogdanm 0:9b334a45a8ff 801 tmpreg1 |= tmpreg2 << Channel;
bogdanm 0:9b334a45a8ff 802 /* Write to DAC CR */
bogdanm 0:9b334a45a8ff 803 hdac->Instance->CR = tmpreg1;
bogdanm 0:9b334a45a8ff 804 /* Disable wave generation */
bogdanm 0:9b334a45a8ff 805 hdac->Instance->CR &= ~(DAC_CR_WAVE1 << Channel);
bogdanm 0:9b334a45a8ff 806
bogdanm 0:9b334a45a8ff 807 /* Change DAC state */
bogdanm 0:9b334a45a8ff 808 hdac->State = HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 809
bogdanm 0:9b334a45a8ff 810 /* Process unlocked */
bogdanm 0:9b334a45a8ff 811 __HAL_UNLOCK(hdac);
bogdanm 0:9b334a45a8ff 812
bogdanm 0:9b334a45a8ff 813 /* Return function status */
bogdanm 0:9b334a45a8ff 814 return HAL_OK;
bogdanm 0:9b334a45a8ff 815 }
bogdanm 0:9b334a45a8ff 816
bogdanm 0:9b334a45a8ff 817 /**
bogdanm 0:9b334a45a8ff 818 * @brief Set the specified data holding register value for DAC channel.
bogdanm 0:9b334a45a8ff 819 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 820 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 821 * @param Channel: The selected DAC channel.
bogdanm 0:9b334a45a8ff 822 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 823 * @arg DAC_CHANNEL_1: DAC Channel1 selected
bogdanm 0:9b334a45a8ff 824 * @arg DAC_CHANNEL_2: DAC Channel2 selected
bogdanm 0:9b334a45a8ff 825 * @param Alignment: Specifies the data alignment.
bogdanm 0:9b334a45a8ff 826 * This parameter can be one of the following values:
bogdanm 0:9b334a45a8ff 827 * @arg DAC_ALIGN_8B_R: 8bit right data alignment selected
bogdanm 0:9b334a45a8ff 828 * @arg DAC_ALIGN_12B_L: 12bit left data alignment selected
bogdanm 0:9b334a45a8ff 829 * @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
bogdanm 0:9b334a45a8ff 830 * @param Data: Data to be loaded in the selected data holding register.
bogdanm 0:9b334a45a8ff 831 * @retval HAL status
bogdanm 0:9b334a45a8ff 832 */
bogdanm 0:9b334a45a8ff 833 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
bogdanm 0:9b334a45a8ff 834 {
bogdanm 0:9b334a45a8ff 835 __IO uint32_t tmp = 0;
bogdanm 0:9b334a45a8ff 836
bogdanm 0:9b334a45a8ff 837 /* Check the parameters */
bogdanm 0:9b334a45a8ff 838 assert_param(IS_DAC_CHANNEL(Channel));
bogdanm 0:9b334a45a8ff 839 assert_param(IS_DAC_ALIGN(Alignment));
bogdanm 0:9b334a45a8ff 840 assert_param(IS_DAC_DATA(Data));
bogdanm 0:9b334a45a8ff 841
bogdanm 0:9b334a45a8ff 842 tmp = (uint32_t)hdac->Instance;
bogdanm 0:9b334a45a8ff 843 if(Channel == DAC_CHANNEL_1)
bogdanm 0:9b334a45a8ff 844 {
bogdanm 0:9b334a45a8ff 845 tmp += DAC_DHR12R1_ALIGNMENT(Alignment);
bogdanm 0:9b334a45a8ff 846 }
bogdanm 0:9b334a45a8ff 847 else
bogdanm 0:9b334a45a8ff 848 {
bogdanm 0:9b334a45a8ff 849 tmp += DAC_DHR12R2_ALIGNMENT(Alignment);
bogdanm 0:9b334a45a8ff 850 }
bogdanm 0:9b334a45a8ff 851
bogdanm 0:9b334a45a8ff 852 /* Set the DAC channel1 selected data holding register */
bogdanm 0:9b334a45a8ff 853 *(__IO uint32_t *) tmp = Data;
bogdanm 0:9b334a45a8ff 854
bogdanm 0:9b334a45a8ff 855 /* Return function status */
bogdanm 0:9b334a45a8ff 856 return HAL_OK;
bogdanm 0:9b334a45a8ff 857 }
bogdanm 0:9b334a45a8ff 858
bogdanm 0:9b334a45a8ff 859 /**
bogdanm 0:9b334a45a8ff 860 * @}
bogdanm 0:9b334a45a8ff 861 */
bogdanm 0:9b334a45a8ff 862
bogdanm 0:9b334a45a8ff 863 /** @defgroup DAC_Exported_Functions_Group4 Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 864 * @brief Peripheral State and Errors functions
bogdanm 0:9b334a45a8ff 865 *
bogdanm 0:9b334a45a8ff 866 @verbatim
bogdanm 0:9b334a45a8ff 867 ==============================================================================
bogdanm 0:9b334a45a8ff 868 ##### Peripheral State and Errors functions #####
bogdanm 0:9b334a45a8ff 869 ==============================================================================
bogdanm 0:9b334a45a8ff 870 [..]
bogdanm 0:9b334a45a8ff 871 This subsection provides functions allowing to
bogdanm 0:9b334a45a8ff 872 (+) Check the DAC state.
bogdanm 0:9b334a45a8ff 873 (+) Check the DAC Errors.
bogdanm 0:9b334a45a8ff 874
bogdanm 0:9b334a45a8ff 875 @endverbatim
bogdanm 0:9b334a45a8ff 876 * @{
bogdanm 0:9b334a45a8ff 877 */
bogdanm 0:9b334a45a8ff 878
bogdanm 0:9b334a45a8ff 879 /**
bogdanm 0:9b334a45a8ff 880 * @brief return the DAC state
bogdanm 0:9b334a45a8ff 881 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 882 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 883 * @retval HAL state
bogdanm 0:9b334a45a8ff 884 */
bogdanm 0:9b334a45a8ff 885 HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef* hdac)
bogdanm 0:9b334a45a8ff 886 {
bogdanm 0:9b334a45a8ff 887 /* Return DAC state */
bogdanm 0:9b334a45a8ff 888 return hdac->State;
bogdanm 0:9b334a45a8ff 889 }
bogdanm 0:9b334a45a8ff 890
bogdanm 0:9b334a45a8ff 891
bogdanm 0:9b334a45a8ff 892 /**
bogdanm 0:9b334a45a8ff 893 * @brief Return the DAC error code
bogdanm 0:9b334a45a8ff 894 * @param hdac: pointer to a DAC_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 895 * the configuration information for the specified DAC.
bogdanm 0:9b334a45a8ff 896 * @retval DAC Error Code
bogdanm 0:9b334a45a8ff 897 */
bogdanm 0:9b334a45a8ff 898 uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac)
bogdanm 0:9b334a45a8ff 899 {
bogdanm 0:9b334a45a8ff 900 return hdac->ErrorCode;
bogdanm 0:9b334a45a8ff 901 }
bogdanm 0:9b334a45a8ff 902
bogdanm 0:9b334a45a8ff 903 /**
bogdanm 0:9b334a45a8ff 904 * @}
bogdanm 0:9b334a45a8ff 905 */
bogdanm 0:9b334a45a8ff 906
bogdanm 0:9b334a45a8ff 907 /**
bogdanm 0:9b334a45a8ff 908 * @brief DMA conversion complete callback.
bogdanm 0:9b334a45a8ff 909 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 910 * the configuration information for the specified DMA module.
bogdanm 0:9b334a45a8ff 911 * @retval None
bogdanm 0:9b334a45a8ff 912 */
bogdanm 0:9b334a45a8ff 913 static void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma)
bogdanm 0:9b334a45a8ff 914 {
bogdanm 0:9b334a45a8ff 915 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
bogdanm 0:9b334a45a8ff 916
bogdanm 0:9b334a45a8ff 917 HAL_DAC_ConvCpltCallbackCh1(hdac);
bogdanm 0:9b334a45a8ff 918
bogdanm 0:9b334a45a8ff 919 hdac->State= HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 920 }
bogdanm 0:9b334a45a8ff 921
bogdanm 0:9b334a45a8ff 922 /**
bogdanm 0:9b334a45a8ff 923 * @brief DMA half transfer complete callback.
bogdanm 0:9b334a45a8ff 924 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 925 * the configuration information for the specified DMA module.
bogdanm 0:9b334a45a8ff 926 * @retval None
bogdanm 0:9b334a45a8ff 927 */
bogdanm 0:9b334a45a8ff 928 static void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma)
bogdanm 0:9b334a45a8ff 929 {
bogdanm 0:9b334a45a8ff 930 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
bogdanm 0:9b334a45a8ff 931 /* Conversion complete callback */
bogdanm 0:9b334a45a8ff 932 HAL_DAC_ConvHalfCpltCallbackCh1(hdac);
bogdanm 0:9b334a45a8ff 933 }
bogdanm 0:9b334a45a8ff 934
bogdanm 0:9b334a45a8ff 935 /**
bogdanm 0:9b334a45a8ff 936 * @brief DMA error callback
bogdanm 0:9b334a45a8ff 937 * @param hdma: pointer to a DMA_HandleTypeDef structure that contains
bogdanm 0:9b334a45a8ff 938 * the configuration information for the specified DMA module.
bogdanm 0:9b334a45a8ff 939 * @retval None
bogdanm 0:9b334a45a8ff 940 */
bogdanm 0:9b334a45a8ff 941 static void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma)
bogdanm 0:9b334a45a8ff 942 {
bogdanm 0:9b334a45a8ff 943 DAC_HandleTypeDef* hdac = ( DAC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
bogdanm 0:9b334a45a8ff 944
bogdanm 0:9b334a45a8ff 945 /* Set DAC error code to DMA error */
bogdanm 0:9b334a45a8ff 946 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
bogdanm 0:9b334a45a8ff 947
bogdanm 0:9b334a45a8ff 948 HAL_DAC_ErrorCallbackCh1(hdac);
bogdanm 0:9b334a45a8ff 949
bogdanm 0:9b334a45a8ff 950 hdac->State= HAL_DAC_STATE_READY;
bogdanm 0:9b334a45a8ff 951 }
bogdanm 0:9b334a45a8ff 952
bogdanm 0:9b334a45a8ff 953 /**
bogdanm 0:9b334a45a8ff 954 * @}
bogdanm 0:9b334a45a8ff 955 */
bogdanm 0:9b334a45a8ff 956
bogdanm 0:9b334a45a8ff 957 #endif /* HAL_DAC_MODULE_ENABLED */
bogdanm 0:9b334a45a8ff 958
bogdanm 0:9b334a45a8ff 959 /**
bogdanm 0:9b334a45a8ff 960 * @}
bogdanm 0:9b334a45a8ff 961 */
bogdanm 0:9b334a45a8ff 962
bogdanm 0:9b334a45a8ff 963 /**
bogdanm 0:9b334a45a8ff 964 * @}
bogdanm 0:9b334a45a8ff 965 */
bogdanm 0:9b334a45a8ff 966
bogdanm 0:9b334a45a8ff 967 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/