diff --git a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c index c4c34fa78..212c25a21 100644 --- a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c +++ b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c @@ -668,7 +668,11 @@ void dac_lld_start_conversion(DACDriver *dacp) { dmaStreamSetPeripheral(dacp->dma, &dacp->params->dac->DHR12R1 + dacp->params->dataoffset); dmamode = dacp->params->dmamode | - STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#if STM32_DMA_ADVANCED == FALSE + STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#else + STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD; +#endif break; case DAC_DHRM_12BIT_LEFT: osalDbgAssert(dacp->grpp->num_channels == 1, "invalid number of channels"); @@ -676,7 +680,11 @@ void dac_lld_start_conversion(DACDriver *dacp) { dmaStreamSetPeripheral(dacp->dma, &dacp->params->dac->DHR12L1 + dacp->params->dataoffset); dmamode = dacp->params->dmamode | - STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#if STM32_DMA_ADVANCED == FALSE + STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#else + STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD; +#endif break; case DAC_DHRM_8BIT_RIGHT: osalDbgAssert(dacp->grpp->num_channels == 1, "invalid number of channels"); @@ -684,7 +692,11 @@ void dac_lld_start_conversion(DACDriver *dacp) { dmaStreamSetPeripheral(dacp->dma, &dacp->params->dac->DHR8R1 + dacp->params->dataoffset); dmamode = dacp->params->dmamode | - STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_BYTE; +#if STM32_DMA_ADVANCED == FALSE + STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_BYTE; +#else + STM32_DMA_CR_MSIZE_BYTE | STM32_DMA_CR_MSIZE_BYTE; +#endif /* In this mode the size of the buffer is halved because two samples packed in a single dacsample_t element.*/ @@ -712,7 +724,11 @@ void dac_lld_start_conversion(DACDriver *dacp) { dmaStreamSetPeripheral(dacp->dma, &dacp->params->dac->DHR8RD); dmamode = dacp->params->dmamode | - STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#if STM32_DMA_ADVANCED == FALSE + STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_HWORD; +#else + STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD; +#endif n /= 2; break; #endif diff --git a/readme.txt b/readme.txt index a81a234a6..07ec722db 100644 --- a/readme.txt +++ b/readme.txt @@ -121,7 +121,8 @@ ARMv7-M and ARMv8-M-ML. - NEW: On STM32WBxx added a check on STM32_LSI_ENABLE required by IWDG. - NEW: Added SPIv2 support also to STM32WB and STM32WL. -- FIX: Reverted bug #1100 (backported to 20.3.5)(backported to 21.11.2). +- FIX: Re-opened and fixed bug #1100 + (backported to 20.3.5)(backported to 21.11.2). - FIX: Fixed invalid cumulative time stat in RT (bug #1222) (backported to 21.11.2). - FIX: Fixed incorrect type cast in TIME_I2US() (bug #1221)