diff --git a/boards/msbiot/Makefile.features b/boards/msbiot/Makefile.features index 8f7ef37a3c..aaefd4fcad 100644 --- a/boards/msbiot/Makefile.features +++ b/boards/msbiot/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f415rg # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_dac FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm diff --git a/boards/msbiot/include/periph_conf.h b/boards/msbiot/include/periph_conf.h index 154a574797..b77a236c7c 100644 --- a/boards/msbiot/include/periph_conf.h +++ b/boards/msbiot/include/periph_conf.h @@ -27,6 +27,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name Timer configuration * @{ @@ -165,17 +183,23 @@ static const uart_conf_t uart_config[] = { */ static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif } }; diff --git a/boards/nucleo-f401re/Makefile.features b/boards/nucleo-f401re/Makefile.features index 5db5727781..da4fe9f2a7 100644 --- a/boards/nucleo-f401re/Makefile.features +++ b/boards/nucleo-f401re/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f401re # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f401re/include/periph_conf.h b/boards/nucleo-f401re/include/periph_conf.h index 4c46f9210c..93c89da443 100644 --- a/boards/nucleo-f401re/include/periph_conf.h +++ b/boards/nucleo-f401re/include/periph_conf.h @@ -28,6 +28,32 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ + { .stream = 4 }, /* DMA1 Stream 4 - SPI2_TX */ + { .stream = 3 }, /* DMA1 Stream 3 - SPI2_RX */ + { .stream = 5 }, /* DMA1 Stream 5 - SPI3_TX */ + { .stream = 0 }, /* DMA1 Stream 0 - SPI3_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 +#define DMA_2_ISR isr_dma1_stream4 +#define DMA_3_ISR isr_dma1_stream3 +#define DMA_4_ISR isr_dma1_stream5 +#define DMA_5_ISR isr_dma1_stream0 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -163,43 +189,61 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif }, { - .dev = SPI2, - .mosi_pin = GPIO_PIN(PORT_B, 15), - .miso_pin = GPIO_PIN(PORT_B, 14), - .sclk_pin = GPIO_PIN(PORT_B, 13), - .cs_pin = GPIO_PIN(PORT_B, 12), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB1ENR_SPI2EN, - .apbbus = APB1 + .dev = SPI2, + .mosi_pin = GPIO_PIN(PORT_B, 15), + .miso_pin = GPIO_PIN(PORT_B, 14), + .sclk_pin = GPIO_PIN(PORT_B, 13), + .cs_pin = GPIO_PIN(PORT_B, 12), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB1ENR_SPI2EN, + .apbbus = APB1, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 2, + .tx_dma_chan = 0, + .rx_dma = 3, + .rx_dma_chan = 0, +#endif }, { - .dev = SPI3, - .mosi_pin = GPIO_PIN(PORT_C, 12), - .miso_pin = GPIO_PIN(PORT_C, 11), - .sclk_pin = GPIO_PIN(PORT_C, 10), - .cs_pin = GPIO_UNDEF, - .mosi_af = GPIO_AF6, - .miso_af = GPIO_AF6, - .sclk_af = GPIO_AF6, - .cs_af = GPIO_AF6, - .rccmask = RCC_APB1ENR_SPI3EN, - .apbbus = APB1 + .dev = SPI3, + .mosi_pin = GPIO_PIN(PORT_C, 12), + .miso_pin = GPIO_PIN(PORT_C, 11), + .sclk_pin = GPIO_PIN(PORT_C, 10), + .cs_pin = GPIO_UNDEF, + .mosi_af = GPIO_AF6, + .miso_af = GPIO_AF6, + .sclk_af = GPIO_AF6, + .cs_af = GPIO_AF6, + .rccmask = RCC_APB1ENR_SPI3EN, + .apbbus = APB1, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 4, + .tx_dma_chan = 0, + .rx_dma = 5, + .rx_dma_chan = 0, +#endif } }; diff --git a/boards/nucleo-f410rb/Makefile.features b/boards/nucleo-f410rb/Makefile.features index d702fd3682..5bad091160 100644 --- a/boards/nucleo-f410rb/Makefile.features +++ b/boards/nucleo-f410rb/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f410rb # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi diff --git a/boards/nucleo-f410rb/include/periph_conf.h b/boards/nucleo-f410rb/include/periph_conf.h index fe6eab6f52..cfce33cfce 100644 --- a/boards/nucleo-f410rb/include/periph_conf.h +++ b/boards/nucleo-f410rb/include/periph_conf.h @@ -28,6 +28,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -112,17 +130,23 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif } }; diff --git a/boards/nucleo-f411re/Makefile.features b/boards/nucleo-f411re/Makefile.features index 8c1362f315..47bde3db10 100644 --- a/boards/nucleo-f411re/Makefile.features +++ b/boards/nucleo-f411re/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f411re # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f411re/include/periph_conf.h b/boards/nucleo-f411re/include/periph_conf.h index ca842ec0fd..9c4b8db0b5 100644 --- a/boards/nucleo-f411re/include/periph_conf.h +++ b/boards/nucleo-f411re/include/periph_conf.h @@ -28,6 +28,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -141,17 +159,23 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif } }; diff --git a/boards/nucleo-f412zg/Makefile.features b/boards/nucleo-f412zg/Makefile.features index 9ae98bb691..af1b6b7a1e 100644 --- a/boards/nucleo-f412zg/Makefile.features +++ b/boards/nucleo-f412zg/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f412zg # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f412zg/include/periph_conf.h b/boards/nucleo-f412zg/include/periph_conf.h index de32583fb9..b3e17a0ae3 100644 --- a/boards/nucleo-f412zg/include/periph_conf.h +++ b/boards/nucleo-f412zg/include/periph_conf.h @@ -31,6 +31,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -143,17 +161,23 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif } }; diff --git a/boards/nucleo-f413zh/Makefile.features b/boards/nucleo-f413zh/Makefile.features index 8af0aedecb..9c5b6c5492 100644 --- a/boards/nucleo-f413zh/Makefile.features +++ b/boards/nucleo-f413zh/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f413zh # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_can FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c diff --git a/boards/nucleo-f413zh/include/periph_conf.h b/boards/nucleo-f413zh/include/periph_conf.h index 3d20db74b2..d38885ca12 100644 --- a/boards/nucleo-f413zh/include/periph_conf.h +++ b/boards/nucleo-f413zh/include/periph_conf.h @@ -38,18 +38,12 @@ extern "C" { */ #ifdef MODULE_PERIPH_DMA static const dma_conf_t dma_config[] = { - { .stream = 4 }, - { .stream = 14 }, - { .stream = 6 }, - { .stream = 10 }, - { .stream = 8 }, + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ }; -#define DMA_0_ISR isr_dma1_stream4 -#define DMA_1_ISR isr_dma2_stream6 -#define DMA_2_ISR isr_dma1_stream6 -#define DMA_3_ISR isr_dma2_stream2 -#define DMA_4_ISR isr_dma2_stream0 +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 #define DMA_NUMOF ARRAY_SIZE(dma_config) #endif @@ -167,22 +161,22 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2, + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, #ifdef MODULE_PERIPH_DMA - .tx_dma = 3, - .tx_dma_chan = 2, - .rx_dma = 4, - .rx_dma_chan = 3, + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, #endif } }; diff --git a/boards/nucleo-f429zi/Makefile.features b/boards/nucleo-f429zi/Makefile.features index c16e020030..a718321d99 100644 --- a/boards/nucleo-f429zi/Makefile.features +++ b/boards/nucleo-f429zi/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f429zi # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f429zi/include/periph_conf.h b/boards/nucleo-f429zi/include/periph_conf.h index 6617c16e64..336d5b8dff 100644 --- a/boards/nucleo-f429zi/include/periph_conf.h +++ b/boards/nucleo-f429zi/include/periph_conf.h @@ -30,6 +30,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -122,17 +140,23 @@ static const pwm_conf_t pwm_config[] = { */ static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_UNDEF, - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_UNDEF, + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif } }; diff --git a/boards/nucleo-f446re/Makefile.features b/boards/nucleo-f446re/Makefile.features index 4f6ee4ce25..4a5adf60b4 100644 --- a/boards/nucleo-f446re/Makefile.features +++ b/boards/nucleo-f446re/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f446re # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f446re/include/periph_conf.h b/boards/nucleo-f446re/include/periph_conf.h index e62d6bad50..af09454ecc 100644 --- a/boards/nucleo-f446re/include/periph_conf.h +++ b/boards/nucleo-f446re/include/periph_conf.h @@ -29,6 +29,32 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ + { .stream = 4 }, /* DMA1 Stream 4 - SPI2_TX */ + { .stream = 3 }, /* DMA1 Stream 3 - SPI2_RX */ + { .stream = 5 }, /* DMA1 Stream 5 - SPI3_TX */ + { .stream = 0 }, /* DMA1 Stream 0 - SPI3_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 +#define DMA_2_ISR isr_dma1_stream4 +#define DMA_3_ISR isr_dma1_stream3 +#define DMA_4_ISR isr_dma1_stream5 +#define DMA_5_ISR isr_dma1_stream0 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -157,43 +183,61 @@ static const qdec_conf_t qdec_config[] = { */ static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif }, { - .dev = SPI2, - .mosi_pin = GPIO_PIN(PORT_B, 15), - .miso_pin = GPIO_PIN(PORT_B, 14), - .sclk_pin = GPIO_PIN(PORT_B, 13), - .cs_pin = GPIO_PIN(PORT_B, 12), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB1ENR_SPI2EN, - .apbbus = APB1 + .dev = SPI2, + .mosi_pin = GPIO_PIN(PORT_B, 15), + .miso_pin = GPIO_PIN(PORT_B, 14), + .sclk_pin = GPIO_PIN(PORT_B, 13), + .cs_pin = GPIO_PIN(PORT_B, 12), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB1ENR_SPI2EN, + .apbbus = APB1, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 2, + .tx_dma_chan = 0, + .rx_dma = 3, + .rx_dma_chan = 0, +#endif }, { - .dev = SPI3, - .mosi_pin = GPIO_PIN(PORT_C, 12), - .miso_pin = GPIO_PIN(PORT_C, 11), - .sclk_pin = GPIO_PIN(PORT_C, 10), - .cs_pin = GPIO_UNDEF, - .mosi_af = GPIO_AF6, - .miso_af = GPIO_AF6, - .sclk_af = GPIO_AF6, - .cs_af = GPIO_AF6, - .rccmask = RCC_APB1ENR_SPI3EN, - .apbbus = APB1 + .dev = SPI3, + .mosi_pin = GPIO_PIN(PORT_C, 12), + .miso_pin = GPIO_PIN(PORT_C, 11), + .sclk_pin = GPIO_PIN(PORT_C, 10), + .cs_pin = GPIO_UNDEF, + .mosi_af = GPIO_AF6, + .miso_af = GPIO_AF6, + .sclk_af = GPIO_AF6, + .cs_af = GPIO_AF6, + .rccmask = RCC_APB1ENR_SPI3EN, + .apbbus = APB1, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 4, + .tx_dma_chan = 0, + .rx_dma = 5, + .rx_dma_chan = 0, +#endif } }; diff --git a/boards/nucleo-f446ze/Makefile.features b/boards/nucleo-f446ze/Makefile.features index 63f4bb88d7..4629889f01 100644 --- a/boards/nucleo-f446ze/Makefile.features +++ b/boards/nucleo-f446ze/Makefile.features @@ -2,6 +2,7 @@ CPU = stm32 CPU_MODEL = stm32f446ze # Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/nucleo-f446ze/include/periph_conf.h b/boards/nucleo-f446ze/include/periph_conf.h index 169d7b2f1d..06390d2835 100644 --- a/boards/nucleo-f446ze/include/periph_conf.h +++ b/boards/nucleo-f446ze/include/periph_conf.h @@ -30,6 +30,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -132,8 +150,14 @@ static const spi_conf_t spi_config[] = { .sclk_af = GPIO_AF5, .cs_af = GPIO_AF5, .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 - } + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif + }, }; #define SPI_NUMOF ARRAY_SIZE(spi_config) diff --git a/boards/pyboard/Makefile.features b/boards/pyboard/Makefile.features index 96d169dec8..1237c2661e 100644 --- a/boards/pyboard/Makefile.features +++ b/boards/pyboard/Makefile.features @@ -2,6 +2,7 @@ CPU = stm32 CPU_MODEL = stm32f405rg # Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi diff --git a/boards/pyboard/include/periph_conf.h b/boards/pyboard/include/periph_conf.h index 104994b37a..f67ab4b429 100644 --- a/boards/pyboard/include/periph_conf.h +++ b/boards/pyboard/include/periph_conf.h @@ -59,6 +59,24 @@ extern "C" { #define CLOCK_PLL_Q (7) /** @} */ +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name Timer configuration * @{ @@ -130,22 +148,22 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_UNDEF, - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2, + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_UNDEF, + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, #ifdef MODULE_PERIPH_DMA - .tx_dma = 1, - .tx_dma_chan = 1, - .rx_dma = 0, - .rx_dma_chan = 1, + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, #endif } }; diff --git a/boards/stm32f429i-disc1/Makefile.features b/boards/stm32f429i-disc1/Makefile.features index 9b9b746b6f..71c477ce08 100644 --- a/boards/stm32f429i-disc1/Makefile.features +++ b/boards/stm32f429i-disc1/Makefile.features @@ -2,6 +2,7 @@ CPU = stm32 CPU_MODEL = stm32f429zi # Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_spi FEATURES_PROVIDED += periph_timer diff --git a/boards/stm32f429i-disc1/include/periph_conf.h b/boards/stm32f429i-disc1/include/periph_conf.h index a34a7c3f24..7aab691760 100644 --- a/boards/stm32f429i-disc1/include/periph_conf.h +++ b/boards/stm32f429i-disc1/include/periph_conf.h @@ -29,6 +29,24 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 14 }, /* DMA2 Stream 6 - SPI5_TX */ + { .stream = 13 }, /* DMA2 Stream 5 - SPI5_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream6 +#define DMA_1_ISR isr_dma2_stream5 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -64,17 +82,23 @@ static const uart_conf_t uart_config[] = { */ static const spi_conf_t spi_config[] = { { - .dev = SPI5, - .mosi_pin = GPIO_PIN(PORT_F, 9), - .miso_pin = GPIO_PIN(PORT_F, 8), - .sclk_pin = GPIO_PIN(PORT_F, 7), - .cs_pin = GPIO_UNDEF, - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI5EN, - .apbbus = APB2 + .dev = SPI5, + .mosi_pin = GPIO_PIN(PORT_F, 9), + .miso_pin = GPIO_PIN(PORT_F, 8), + .sclk_pin = GPIO_PIN(PORT_F, 7), + .cs_pin = GPIO_UNDEF, + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI5EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 7, + .rx_dma = 1, + .rx_dma_chan = 7, +#endif } }; diff --git a/boards/stm32f4discovery/Makefile.features b/boards/stm32f4discovery/Makefile.features index 2834dbd581..450411cea3 100644 --- a/boards/stm32f4discovery/Makefile.features +++ b/boards/stm32f4discovery/Makefile.features @@ -4,6 +4,7 @@ CPU_MODEL = stm32f407vg # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc FEATURES_PROVIDED += periph_dac +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_pwm FEATURES_PROVIDED += periph_rtc diff --git a/boards/stm32f4discovery/include/periph_conf.h b/boards/stm32f4discovery/include/periph_conf.h index 912c54c9df..8b827515d4 100644 --- a/boards/stm32f4discovery/include/periph_conf.h +++ b/boards/stm32f4discovery/include/periph_conf.h @@ -29,6 +29,28 @@ extern "C" { #endif +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 11 }, /* DMA2 Stream 3 - SPI1_TX */ + { .stream = 10 }, /* DMA2 Stream 2 - SPI1_RX */ + { .stream = 4 }, /* DMA1 Stream 4 - SPI2_TX */ + { .stream = 3 }, /* DMA1 Stream 3 - SPI2_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream3 +#define DMA_1_ISR isr_dma2_stream2 +#define DMA_2_ISR isr_dma1_stream4 +#define DMA_3_ISR isr_dma1_stream3 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name Timer configuration * @{ @@ -162,31 +184,43 @@ static const pwm_conf_t pwm_config[] = { */ static const spi_conf_t spi_config[] = { { - .dev = SPI1, - .mosi_pin = GPIO_PIN(PORT_A, 7), - .miso_pin = GPIO_PIN(PORT_A, 6), - .sclk_pin = GPIO_PIN(PORT_A, 5), - .cs_pin = GPIO_PIN(PORT_A, 4), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI1EN, - .apbbus = APB2 + .dev = SPI1, + .mosi_pin = GPIO_PIN(PORT_A, 7), + .miso_pin = GPIO_PIN(PORT_A, 6), + .sclk_pin = GPIO_PIN(PORT_A, 5), + .cs_pin = GPIO_PIN(PORT_A, 4), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI1EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 3, + .rx_dma = 1, + .rx_dma_chan = 3, +#endif }, { - .dev = SPI2, - .mosi_pin = GPIO_PIN(PORT_B, 15), - .miso_pin = GPIO_PIN(PORT_B, 14), - .sclk_pin = GPIO_PIN(PORT_B, 13), - .cs_pin = GPIO_PIN(PORT_B, 12), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB1ENR_SPI2EN, - .apbbus = APB1 - } + .dev = SPI2, + .mosi_pin = GPIO_PIN(PORT_B, 15), + .miso_pin = GPIO_PIN(PORT_B, 14), + .sclk_pin = GPIO_PIN(PORT_B, 13), + .cs_pin = GPIO_PIN(PORT_B, 12), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB1ENR_SPI2EN, + .apbbus = APB1, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 2, + .tx_dma_chan = 0, + .rx_dma = 3, + .rx_dma_chan = 0, +#endif + }, }; #define SPI_NUMOF ARRAY_SIZE(spi_config) diff --git a/boards/ublox-c030-u201/Makefile.features b/boards/ublox-c030-u201/Makefile.features index 2e507ee859..2834d664a1 100644 --- a/boards/ublox-c030-u201/Makefile.features +++ b/boards/ublox-c030-u201/Makefile.features @@ -3,6 +3,7 @@ CPU_MODEL = stm32f437vg # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc +FEATURES_PROVIDED += periph_dma FEATURES_PROVIDED += periph_i2c FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi diff --git a/boards/ublox-c030-u201/include/periph_conf.h b/boards/ublox-c030-u201/include/periph_conf.h index 764cbafe67..cabd06b298 100644 --- a/boards/ublox-c030-u201/include/periph_conf.h +++ b/boards/ublox-c030-u201/include/periph_conf.h @@ -57,6 +57,24 @@ extern "C" { #define CLOCK_PLL_Q (7) /** @} */ +/** + * @name DMA streams configuration + * @{ + */ +#ifdef MODULE_PERIPH_DMA +static const dma_conf_t dma_config[] = { + { .stream = 9 }, /* DMA2 Stream 1 - SPI4_TX */ + { .stream = 8 }, /* DMA2 Stream 0 - SPI4_RX */ +}; + +#define DMA_0_ISR isr_dma2_stream1 +#define DMA_1_ISR isr_dma2_stream0 + +#define DMA_NUMOF ARRAY_SIZE(dma_config) + +#endif /* MODULE_PERIPH_DMA */ +/** @} */ + /** * @name UART configuration * @{ @@ -178,17 +196,23 @@ static const uint8_t spi_divtable[2][5] = { static const spi_conf_t spi_config[] = { { - .dev = SPI4, - .mosi_pin = GPIO_PIN(PORT_E, 6), - .miso_pin = GPIO_PIN(PORT_E, 5), - .sclk_pin = GPIO_PIN(PORT_E, 2), - .cs_pin = GPIO_PIN(PORT_E, 11), - .mosi_af = GPIO_AF5, - .miso_af = GPIO_AF5, - .sclk_af = GPIO_AF5, - .cs_af = GPIO_AF5, - .rccmask = RCC_APB2ENR_SPI4EN, - .apbbus = APB2 + .dev = SPI4, + .mosi_pin = GPIO_PIN(PORT_E, 6), + .miso_pin = GPIO_PIN(PORT_E, 5), + .sclk_pin = GPIO_PIN(PORT_E, 2), + .cs_pin = GPIO_PIN(PORT_E, 11), + .mosi_af = GPIO_AF5, + .miso_af = GPIO_AF5, + .sclk_af = GPIO_AF5, + .cs_af = GPIO_AF5, + .rccmask = RCC_APB2ENR_SPI4EN, + .apbbus = APB2, +#ifdef MODULE_PERIPH_DMA + .tx_dma = 0, + .tx_dma_chan = 4, + .rx_dma = 1, + .rx_dma_chan = 4, +#endif }, };