From ef47a67cf42246bbcf3c81e5f89e0e25db9dff74 Mon Sep 17 00:00:00 2001 From: Peter Hinch Date: Mon, 13 Jun 2016 08:54:57 +0100 Subject: [PATCH] stmhal/dac: Fix DAC (re-)initialisation by resetting DMA. Fixes issue #2176. --- stmhal/dac.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stmhal/dac.c b/stmhal/dac.c index 7493bb59ab..a9b1b9eca7 100644 --- a/stmhal/dac.c +++ b/stmhal/dac.c @@ -171,6 +171,14 @@ STATIC mp_obj_t pyb_dac_init_helper(pyb_dac_obj_t *self, mp_uint_t n_args, const #endif // stop anything already going on + __DMA1_CLK_ENABLE(); + DMA_HandleTypeDef DMA_Handle; + /* Get currently configured dma */ + dma_init_handle(&DMA_Handle, self->tx_dma_descr, (void*)NULL); + // Need to deinit DMA first + DMA_Handle.State = HAL_DMA_STATE_READY; + HAL_DMA_DeInit(&DMA_Handle); + HAL_DAC_Stop(&DAC_Handle, self->dac_channel); if ((self->dac_channel == DAC_CHANNEL_1 && DAC_Handle.DMA_Handle1 != NULL) || (self->dac_channel == DAC_CHANNEL_2 && DAC_Handle.DMA_Handle2 != NULL)) {