mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Aug 06 08:15:07 2014 +0100
Revision:
274:6937b19af361
Parent:
226:b062af740e40
Child:
369:2e96f1b71984
Synchronized with git revision 5b145e4f6c509376173c3ea2aa35a6da879a2124

Full URL: https://github.com/mbedmicro/mbed/commit/5b145e4f6c509376173c3ea2aa35a6da879a2124/

[TARGET_LPC11UXX] PeripheralNames.h and PinMap definitions separation for LPC11UXX platforms

Who changed what in which revision?

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