aboutsummaryrefslogtreecommitdiffstats
path: root/os
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2018-11-15 17:04:05 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2018-11-15 17:04:05 +0000
commitdb6f9df412a254fc12cee430830d8e79e7f36409 (patch)
treeb36b058ef636c3d02f8d5cf77c08b83193f9529a /os
parentc0da3c4f42dd944a30199744679442cf2ef7b633 (diff)
downloadChibiOS-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')
-rw-r--r--os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c21
-rw-r--r--os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.h6
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;
/**