diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-11-15 17:04:05 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-11-15 17:04:05 +0000 |
commit | db6f9df412a254fc12cee430830d8e79e7f36409 (patch) | |
tree | b36b058ef636c3d02f8d5cf77c08b83193f9529a /os/hal/ports/STM32 | |
parent | c0da3c4f42dd944a30199744679442cf2ef7b633 (diff) | |
download | ChibiOS-db6f9df412a254fc12cee430830d8e79e7f36409.tar.gz ChibiOS-db6f9df412a254fc12cee430830d8e79e7f36409.tar.bz2 ChibiOS-db6f9df412a254fc12cee430830d8e79e7f36409.zip |
DAC driver now working with L4+.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12431 110e8d01-0319-4d1e-a829-52ad28d1bb01
Diffstat (limited to 'os/hal/ports/STM32')
-rw-r--r-- | os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c | 21 | ||||
-rw-r--r-- | os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h | 6 |
2 files changed, 14 insertions, 13 deletions
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 d71882b26..0b2f5d2af 100644 --- a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c +++ b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c @@ -89,6 +89,7 @@ static const dacparams_t dma1_ch1_params = { .regmask = 0xFFFF0000U,
#if STM32_DMA_SUPPORTS_DMAMUX
.dma = STM32_DMA_STREAM(STM32_DAC_DAC1_CH1_DMA_CHANNEL),
+ .peripheral = STM32_DMAMUX1_DAC1_CH1,
#else
.dma = STM32_DMA_STREAM(STM32_DAC_DAC1_CH1_DMA_STREAM),
#endif
@@ -109,6 +110,7 @@ static const dacparams_t dma1_ch2_params = { .regmask = 0x0000FFFFU,
#if STM32_DMA_SUPPORTS_DMAMUX
.dma = STM32_DMA_STREAM(STM32_DAC_DAC1_CH2_DMA_CHANNEL),
+ .peripheral = STM32_DMAMUX1_DAC1_CH2,
#else
.dma = STM32_DMA_STREAM(STM32_DAC_DAC1_CH2_DMA_STREAM),
#endif
@@ -129,6 +131,7 @@ static const dacparams_t dma2_ch1_params = { .regmask = 0xFFFF0000U,
#if STM32_DMA_SUPPORTS_DMAMUX
.dma = STM32_DMA_STREAM(STM32_DAC_DAC2_CH1_DMA_CHANNEL),
+ .peripheral = STM32_DMAMUX1_DAC2_CH1,
#else
.dma = STM32_DMA_STREAM(STM32_DAC_DAC2_CH1_DMA_STREAM),
#endif
@@ -149,6 +152,7 @@ static const dacparams_t dma1_ch2_params = { .regmask = 0x0000FFFFU,
#if STM32_DMA_SUPPORTS_DMAMUX
.dma = STM32_DMA_STREAM(STM32_DAC_DAC2_CH2_DMA_CHANNEL),
+ .peripheral = STM32_DMAMUX1_DAC2_CH2,
#else
.dma = STM32_DMA_STREAM(STM32_DAC_DAC2_CH2_DMA_STREAM),
#endif
@@ -243,18 +247,12 @@ void dac_lld_start(DACDriver *dacp) { #if STM32_DAC_USE_DAC1_CH1
if (&DACD1 == dacp) {
rccEnableDAC1(true);
-#if STM32_DMA_SUPPORTS_DMAMUX
- dmaSetRequestSource(dacp->params->dma, STM32_DMAMUX1_DAC1_CH1);
-#endif
}
#endif
#if STM32_DAC_USE_DAC1_CH2
if (&DACD2 == dacp) {
rccEnableDAC1(true);
-#if STM32_DMA_SUPPORTS_DMAMUX
- dmaSetRequestSource(dacp->params->dma, STM32_DMAMUX1_DAC1_CH2);
-#endif
channel = 1;
}
#endif
@@ -262,18 +260,12 @@ void dac_lld_start(DACDriver *dacp) { #if STM32_DAC_USE_DAC2_CH1
if (&DACD3 == dacp) {
rccEnableDAC2(true);
-#if STM32_DMA_SUPPORTS_DMAMUX
- dmaSetRequestSource(dacp->params->dma, STM32_DMAMUX1_DAC2_CH1);
-#endif
}
#endif
#if STM32_DAC_USE_DAC2_CH2
if (&DACD4 == dacp) {
rccEnableDAC2(true);
-#if STM32_DMA_SUPPORTS_DMAMUX
- dmaSetRequestSource(dacp->params->dma, STM32_DMAMUX1_DAC2_CH2);
-#endif
channel = 1;
}
#endif
@@ -445,8 +437,11 @@ void dac_lld_start_conversion(DACDriver *dacp) { (stm32_dmaisr_t)dac_lld_serve_tx_interrupt,
(void *)dacp);
osalDbgAssert(!b, "stream already allocated");
+#if STM32_DMA_SUPPORTS_DMAMUX
+ dmaSetRequestSource(dacp->params->dma, dacp->params->peripheral);
+#endif
- /* DMA settings depend on the chosed DAC mode.*/
+ /* DMA settings depend on the chosen DAC mode.*/
switch (dacp->config->datamode) {
/* Sets the DAC data register */
case DAC_DHRM_12BIT_RIGHT:
diff --git a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h index e5500a8f3..a3d29956a 100644 --- a/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h +++ b/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h @@ -318,6 +318,12 @@ typedef struct { * @brief DMA channel IRQ priority.
*/
uint32_t dmairqprio;
+#if (STM32_DMA_SUPPORTS_DMAMUX == TRUE) || defined(__DOXYGEN__)
+ /**
+ * @brief DMAMUX peripheral selector.
+ */
+ uint32_t peripheral;
+#endif
} dacparams_t;
/**
|