diff --git a/src/shared/drivers/dma/DMADefs.cpp b/src/shared/drivers/dma/DMADefs.cpp
index c61c66a42b229f7d5dc5f1bec7b9951d2caab1b9..a4756e70733acab735a6c8e8b83001f3f8515ea5 100644
--- a/src/shared/drivers/dma/DMADefs.cpp
+++ b/src/shared/drivers/dma/DMADefs.cpp
@@ -1,5 +1,5 @@
 /* Copyright (c) 2025 Skyward Experimental Rocketry
- * Author: Alberto Nidasio, Fabrizio Monti
+ * Author: Fabrizio Monti
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -22,6 +22,18 @@
 
 #include "DMADefs.h"
 
+#ifdef STM32F407xx
+#include "board_mappings/stm32f407xx_mappings.cpp"
+#endif  // STM32F407xx
+
+#ifdef STM32F429xx
+#include "board_mappings/stm32f429xx_mappings.cpp"
+#endif  // STM32F429xx
+
+#ifdef STM32F767xx
+#include "board_mappings/stm32f767xx_mappings.cpp"
+#endif  // STM32F767xx
+
 namespace Boardcore
 {
 
@@ -35,699 +47,6 @@ const IRQn_Type irqNumberMapping[] = {
     DMA2_Stream4_IRQn, DMA2_Stream5_IRQn, DMA2_Stream6_IRQn, DMA2_Stream7_IRQn,
 };
 
-const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
-    mapPeripherals = {
-
-/**
- * Here are defined the mappings between peripherals and
- * streams.
- *
- * The problem is that some of these stream are used
- * by miosix. The corresponding IRQHandlers are already defined
- * in there, causing conflicts.
- * Moreover, the used streams differ from STM32F407xx to
- * STM32F767xx. That's why some streams are available only
- * for a particular board, or none (DMA2_Stream3 is not available
- * at all).
- *
- * For this reason the unavailable mappings are commented out.
- */
-
-#ifdef STM32F407xx
-        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}},
-
-        // SPI
-        {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
-        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
-
-        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
-        // {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL0}},
-
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
-
-        // UART & USART
-        {Peripherals::PE_USART1_TX,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_USART1_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
-        {Peripherals::PE_USART1_RX,
-         {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
-
-        {Peripherals::PE_USART2_TX,
-         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
-        {Peripherals::PE_USART2_RX,
-         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
-
-        // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL4}},
-        {Peripherals::PE_USART3_TX,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
-        // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
-        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
-
-        {Peripherals::PE_USART6_TX,
-         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_TX,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
-
-        // I2C
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
-
-        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
-        // {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL7}},
-
-        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
-        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
-
-        {Peripherals::PE_I2S2_EXT_TX,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
-        // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL3}},
-
-        {Peripherals::PE_I2S3_EXT_TX,
-         {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
-        {Peripherals::PE_I2S3_EXT_RX,
-         {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
-        {Peripherals::PE_I2S3_EXT_RX,
-         {DMAStreamId::DMA1_Str0, Channel::CHANNEL3}},
-
-        // TIMERS
-        {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-
-        // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        // {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-
-        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_TRIG,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-
-        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
-        // {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
-
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}},
-
-        // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL7}},
-
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
-
-        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_TRIG,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-
-        // Others
-        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
-        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
-
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-
-        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
-        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
-
-        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
-        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
-
-        // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
-        {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
-
-        {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
-        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
-
-        {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}},
-
-#endif  // STM32F407xx
-
-#ifdef STM32F429xx
-
-        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}},
-
-        // SPI
-        {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
-        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
-
-        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
-        // {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL0}},
-
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
-
-        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL4}},
-        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL4}},
-        // {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL5}},
-
-        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL2}},
-        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL7}},
-        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL2}},
-        {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}},
-
-        {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}},
-        {Peripherals::PE_SPI6_RX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL1}},
-
-        // UART & USART
-        {Peripherals::PE_USART1_TX,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_USART1_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
-        {Peripherals::PE_USART1_RX,
-         {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
-
-        {Peripherals::PE_USART2_TX,
-         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
-        {Peripherals::PE_USART2_RX,
-         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
-
-        // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL4}},
-        {Peripherals::PE_USART3_TX,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
-        // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
-        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
-
-        // {Peripherals::PE_UART7_TX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL5}},
-        // {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL5}},
-
-        {Peripherals::PE_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}},
-        {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}},
-
-        {Peripherals::PE_USART6_TX,
-         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_TX,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
-
-        // I2C
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
-
-        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
-        // {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL7}},
-
-        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
-        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
-
-        {Peripherals::PE_I2S2_EXT_TX,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
-        // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL3}},
-
-        {Peripherals::PE_I2S3_EXT_TX,
-         {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
-        {Peripherals::PE_I2S3_EXT_RX,
-         {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
-        {Peripherals::PE_I2S3_EXT_RX,
-         {DMAStreamId::DMA1_Str0, Channel::CHANNEL3}},
-
-        // TIMERS
-        {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-
-        // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        // {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-
-        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_TRIG,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-
-        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
-        // {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
-
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}},
-
-        // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL7}},
-
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
-
-        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_TRIG,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-
-        // Others
-        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
-        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
-
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-
-        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
-        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
-
-        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
-        // {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL0}},
-
-        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}},
-
-        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
-        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
-
-        // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
-        {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
-
-        {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
-        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
-
-        {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}},
-
-#endif  // STM32F429xx
-
-#ifdef STM32F767xx
-
-        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL0}},
-
-        // SPI
-        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL3}},
-        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
-        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
-
-        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL9}},
-        {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL9}},
-        {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL0}},
-
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
-
-        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL4}},
-        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL9}},
-        {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL4}},
-        // {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL5}},
-
-        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL2}},
-        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL7}},
-        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL2}},
-        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL7}},
-        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL9}},
-
-        // {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL1}},
-        {Peripherals::PE_SPI6_RX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL1}},
-
-        // {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL3}},
-        {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str2, Channel::CHANNEL11}},
-
-        // UART & USART
-        // {Peripherals::PE_USART1_TX,
-        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_USART1_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
-        // {Peripherals::PE_USART1_RX,
-        //  {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
-
-        {Peripherals::PE_USART2_TX,
-         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
-        {Peripherals::PE_USART2_RX,
-         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
-
-        {Peripherals::PE_USART3_TX,
-         {DMAStreamId::DMA1_Str3, Channel::CHANNEL4}},
-        {Peripherals::PE_USART3_TX,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
-        {Peripherals::PE_USART3_RX,
-         {DMAStreamId::DMA1_Str1, Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
-        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
-        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
-
-        {Peripherals::PE_UART7_TX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL5}},
-        {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL5}},
-
-        {Peripherals::PE_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}},
-        {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}},
-
-        {Peripherals::PE_USART6_TX,
-         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
-        // {Peripherals::PE_USART6_TX,
-        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
-        {Peripherals::PE_USART6_RX,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
-
-        // I2C
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
-        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
-
-        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
-        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL8}},
-        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
-        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL7}},
-
-        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
-        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL8}},
-        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
-        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL1}},
-
-        {Peripherals::PE_I2C4_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL8}},
-        {Peripherals::PE_I2C4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
-        {Peripherals::PE_I2C4_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL8}},
-
-        // TIMERS
-        // {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_TRIG,
-         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
-        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
-
-        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
-        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
-
-        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_TRIG,
-         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
-        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
-
-        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3, Channel::CHANNEL2}},
-        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
-
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_TRIG,
-         {DMAStreamId::DMA1_Str1, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_TRIG,
-         {DMAStreamId::DMA1_Str3, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1, Channel::CHANNEL6}},
-        {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3, Channel::CHANNEL6}},
-
-        {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1, Channel::CHANNEL7}},
-
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
-        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
-
-        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
-        // {Peripherals::PE_TIM8_TRIG,
-        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
-        // {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL7}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
-        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
-        // {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL7}},
-
-        // Others
-        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
-        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
-
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
-        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
-
-        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
-        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
-        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
-
-        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
-        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str6, Channel::CHANNEL10}},
-        // {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str4, Channel::CHANNEL3}},
-        {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str2, Channel::CHANNEL10}},
-
-        // {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}},
-        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str0, Channel::CHANNEL10}},
-        // {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL0}},
-        {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str6, Channel::CHANNEL3}},
-        {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str1, Channel::CHANNEL10}},
-
-        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
-        // {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
-
-        // {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL4}},
-        {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
-        {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str0, Channel::CHANNEL11}},
-        // {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL11}},
-
-        // {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5,
-        // Channel::CHANNEL2}},
-        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
-
-        // {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7,
-        // Channel::CHANNEL2}},
-
-        {Peripherals::PE_SPDIFRX_DT,
-         {DMAStreamId::DMA1_Str1, Channel::CHANNEL0}},
-        {Peripherals::PE_SPDIFRX_CS,
-         {DMAStreamId::DMA1_Str6, Channel::CHANNEL0}},
-
-        {Peripherals::PE_DFSDM1_FLT0,
-         {DMAStreamId::DMA2_Str0, Channel::CHANNEL8}},
-        {Peripherals::PE_DFSDM1_FLT0,
-         {DMAStreamId::DMA2_Str4, Channel::CHANNEL8}},
-        {Peripherals::PE_DFSDM1_FLT1,
-         {DMAStreamId::DMA2_Str1, Channel::CHANNEL8}},
-        // {Peripherals::PE_DFSDM1_FLT1,
-        //  {DMAStreamId::DMA2_Str5, Channel::CHANNEL8}},
-        {Peripherals::PE_DFSDM1_FLT2,
-         {DMAStreamId::DMA2_Str2, Channel::CHANNEL8}},
-        {Peripherals::PE_DFSDM1_FLT2,
-         {DMAStreamId::DMA2_Str6, Channel::CHANNEL8}},
-        // {Peripherals::PE_DFSDM1_FLT3, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL8}},
-        // {Peripherals::PE_DFSDM1_FLT3,
-        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL8}},
-
-        {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str0, Channel::CHANNEL9}},
-        // {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL9}}
-        {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str1, Channel::CHANNEL9}},
-        {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str4, Channel::CHANNEL9}},
-
-#endif  // STM32F767xx
-};
-
 }  // namespace DMADefs
 
 }  // namespace Boardcore
diff --git a/src/shared/drivers/dma/DMADefs.h b/src/shared/drivers/dma/DMADefs.h
index f2c42822c5710ce752b7fb171139ebe3ea29887c..01a21947a00a7585a076da1ab5458c4839d3209f 100644
--- a/src/shared/drivers/dma/DMADefs.h
+++ b/src/shared/drivers/dma/DMADefs.h
@@ -1,5 +1,5 @@
 /* Copyright (c) 2025 Skyward Experimental Rocketry
- * Author: Alberto Nidasio, Fabrizio Monti
+ * Author: Fabrizio Monti
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -244,10 +244,9 @@ extern const IRQn_Type irqNumberMapping[];
  * @brief Maps the peripherals to the dma streams (and
  * the corresponding channel) that are connected with.
  *
- * Supported architectures:
- * - STM32F407xx
- * - STM32F429xx
- * - STM32F767xx
+ * The actual initialization of mapPeripherals is board
+ * specific, and can be found inside the "board_mappings"
+ * folder.
  */
 extern const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
     mapPeripherals;
diff --git a/src/shared/drivers/dma/board_mappings/stm32f407xx_mappings.cpp b/src/shared/drivers/dma/board_mappings/stm32f407xx_mappings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..613a53d2190ba9dc3b2594a0457c4fb29c6c2b88
--- /dev/null
+++ b/src/shared/drivers/dma/board_mappings/stm32f407xx_mappings.cpp
@@ -0,0 +1,232 @@
+/* Copyright (c) 2025 Skyward Experimental Rocketry
+ * Author: Fabrizio Monti
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "../DMADefs.h"
+
+namespace Boardcore
+{
+
+namespace DMADefs
+{
+const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
+    mapPeripherals = {
+
+        /**
+         * Here are defined the mappings between peripherals and
+         * streams.
+         *
+         * The problem is that some of these stream are used
+         * by miosix. The corresponding IRQHandlers are already defined
+         * in there, causing conflicts.
+         * For this reason the unavailable mappings are commented out.
+         */
+
+        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}},
+
+        // SPI
+        {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
+        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
+
+        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
+        // {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL0}},
+
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
+
+        // UART & USART
+        {Peripherals::PE_USART1_TX,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_USART1_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
+        {Peripherals::PE_USART1_RX,
+         {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
+
+        {Peripherals::PE_USART2_TX,
+         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
+        {Peripherals::PE_USART2_RX,
+         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
+
+        // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL4}},
+        {Peripherals::PE_USART3_TX,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
+        // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
+        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
+
+        {Peripherals::PE_USART6_TX,
+         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_TX,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
+
+        // I2C
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
+
+        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
+        // {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL7}},
+
+        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
+        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
+
+        {Peripherals::PE_I2S2_EXT_TX,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
+        // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL3}},
+
+        {Peripherals::PE_I2S3_EXT_TX,
+         {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
+        {Peripherals::PE_I2S3_EXT_RX,
+         {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
+        {Peripherals::PE_I2S3_EXT_RX,
+         {DMAStreamId::DMA1_Str0, Channel::CHANNEL3}},
+
+        // TIMERS
+        {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+
+        // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        // {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+
+        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_TRIG,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+
+        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
+        // {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
+
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL6}},
+
+        // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL7}},
+
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
+
+        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_TRIG,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+
+        // Others
+        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
+        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
+
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+
+        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
+        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
+
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
+
+        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
+        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
+
+        // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
+        {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
+
+        {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
+        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
+
+        {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}},
+};
+
+}  // namespace DMADefs
+
+}  // namespace Boardcore
diff --git a/src/shared/drivers/dma/board_mappings/stm32f429xx_mappings.cpp b/src/shared/drivers/dma/board_mappings/stm32f429xx_mappings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2a07ed3f38fa773e309789a5f2cfc40d13360de1
--- /dev/null
+++ b/src/shared/drivers/dma/board_mappings/stm32f429xx_mappings.cpp
@@ -0,0 +1,262 @@
+/* Copyright (c) 2025 Skyward Experimental Rocketry
+ * Author: Fabrizio Monti
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "../DMADefs.h"
+
+namespace Boardcore
+{
+
+namespace DMADefs
+{
+const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
+    mapPeripherals = {
+
+        /**
+         * Here are defined the mappings between peripherals and
+         * streams.
+         *
+         * The problem is that some of these stream are used
+         * by miosix. The corresponding IRQHandlers are already defined
+         * in there, causing conflicts.
+         * For this reason the unavailable mappings are commented out.
+         */
+
+        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, Channel::CHANNEL0}},
+
+        // SPI
+        {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
+        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
+
+        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
+        // {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL0}},
+
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
+
+        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL4}},
+        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL4}},
+        // {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL5}},
+
+        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL2}},
+        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL7}},
+        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL2}},
+        {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}},
+
+        {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}},
+        {Peripherals::PE_SPI6_RX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL1}},
+
+        // UART & USART
+        {Peripherals::PE_USART1_TX,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_USART1_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
+        {Peripherals::PE_USART1_RX,
+         {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
+
+        {Peripherals::PE_USART2_TX,
+         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
+        {Peripherals::PE_USART2_RX,
+         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
+
+        // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL4}},
+        {Peripherals::PE_USART3_TX,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
+        // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
+        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
+
+        // {Peripherals::PE_UART7_TX, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL5}},
+        // {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL5}},
+
+        {Peripherals::PE_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}},
+        {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}},
+
+        {Peripherals::PE_USART6_TX,
+         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_TX,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
+
+        // I2C
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
+
+        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
+        // {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL7}},
+
+        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
+        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
+
+        {Peripherals::PE_I2S2_EXT_TX,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
+        // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL3}},
+
+        {Peripherals::PE_I2S3_EXT_TX,
+         {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
+        {Peripherals::PE_I2S3_EXT_RX,
+         {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
+        {Peripherals::PE_I2S3_EXT_RX,
+         {DMAStreamId::DMA1_Str0, Channel::CHANNEL3}},
+
+        // TIMERS
+        {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+
+        // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        // {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+
+        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_TRIG,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+
+        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
+        // {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
+
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
+        // Channel::CHANNEL6}},
+
+        // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
+        // Channel::CHANNEL7}},
+
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
+
+        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_TRIG,
+         {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+
+        // Others
+        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
+        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
+
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+
+        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
+        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
+
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
+
+        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
+        // {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL0}},
+
+        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}},
+
+        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
+        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
+
+        // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
+        {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
+
+        {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
+        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
+
+        {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7, Channel::CHANNEL2}},
+};
+
+}  // namespace DMADefs
+
+}  // namespace Boardcore
diff --git a/src/shared/drivers/dma/board_mappings/stm32f767xx_mappings.cpp b/src/shared/drivers/dma/board_mappings/stm32f767xx_mappings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e50f3d7cafa29051096f70ae57886b6b73bf23d2
--- /dev/null
+++ b/src/shared/drivers/dma/board_mappings/stm32f767xx_mappings.cpp
@@ -0,0 +1,307 @@
+/* Copyright (c) 2025 Skyward Experimental Rocketry
+ * Author: Fabrizio Monti
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "../DMADefs.h"
+
+namespace Boardcore
+{
+
+namespace DMADefs
+{
+const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
+    mapPeripherals = {
+
+        /**
+         * Here are defined the mappings between peripherals and
+         * streams.
+         *
+         * The problem is that some of these stream are used
+         * by miosix. The corresponding IRQHandlers are already defined
+         * in there, causing conflicts.
+         * For this reason the unavailable mappings are commented out.
+         */
+
+        // MEM-TO-MEM (only dma2 can perform mem-to-mem copy)
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        // {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL0}},
+
+        // SPI
+        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL3}},
+        // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL3}},
+        {Peripherals::PE_SPI1_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL3}},
+
+        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI2_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL9}},
+        {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL9}},
+        {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL0}},
+
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_SPI3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL0}},
+
+        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str1, Channel::CHANNEL4}},
+        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_SPI4_TX, {DMAStreamId::DMA2_Str2, Channel::CHANNEL9}},
+        {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str0, Channel::CHANNEL4}},
+        // {Peripherals::PE_SPI4_RX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL5}},
+
+        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str4, Channel::CHANNEL2}},
+        {Peripherals::PE_SPI5_TX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL7}},
+        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL2}},
+        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL7}},
+        // {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL9}},
+
+        // {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL1}},
+        {Peripherals::PE_SPI6_RX, {DMAStreamId::DMA2_Str6, Channel::CHANNEL1}},
+
+        // {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL3}},
+        {Peripherals::PE_QUADSPI, {DMAStreamId::DMA2_Str2, Channel::CHANNEL11}},
+
+        // UART & USART
+        // {Peripherals::PE_USART1_TX,
+        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_USART1_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL4}},
+        // {Peripherals::PE_USART1_RX,
+        //  {DMAStreamId::DMA2_Str5, Channel::CHANNEL4}},
+
+        {Peripherals::PE_USART2_TX,
+         {DMAStreamId::DMA1_Str6, Channel::CHANNEL4}},
+        {Peripherals::PE_USART2_RX,
+         {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
+
+        {Peripherals::PE_USART3_TX,
+         {DMAStreamId::DMA1_Str3, Channel::CHANNEL4}},
+        {Peripherals::PE_USART3_TX,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
+        {Peripherals::PE_USART3_RX,
+         {DMAStreamId::DMA1_Str1, Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
+        {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART5_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL4}},
+        {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
+
+        {Peripherals::PE_UART7_TX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL5}},
+        {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL5}},
+
+        {Peripherals::PE_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}},
+        {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}},
+
+        {Peripherals::PE_USART6_TX,
+         {DMAStreamId::DMA2_Str6, Channel::CHANNEL5}},
+        // {Peripherals::PE_USART6_TX,
+        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
+        {Peripherals::PE_USART6_RX,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL5}},
+
+        // I2C
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL1}},
+        {Peripherals::PE_I2C1_RX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL1}},
+
+        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL7}},
+        {Peripherals::PE_I2C2_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL8}},
+        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL7}},
+        {Peripherals::PE_I2C2_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL7}},
+
+        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
+        {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL8}},
+        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
+        {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL1}},
+
+        {Peripherals::PE_I2C4_TX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL8}},
+        {Peripherals::PE_I2C4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL2}},
+        {Peripherals::PE_I2C4_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL8}},
+
+        // TIMERS
+        // {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_TRIG,
+         {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_COM, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str1, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM1_CH1, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM1_CH3, {DMAStreamId::DMA2_Str6, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
+
+        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH3, {DMAStreamId::DMA1_Str1, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
+        {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
+
+        {Peripherals::PE_TIM3_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_TRIG,
+         {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH1, {DMAStreamId::DMA1_Str4, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH2, {DMAStreamId::DMA1_Str5, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL5}},
+        {Peripherals::PE_TIM3_CH4, {DMAStreamId::DMA1_Str2, Channel::CHANNEL5}},
+
+        {Peripherals::PE_TIM4_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH1, {DMAStreamId::DMA1_Str0, Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH2, {DMAStreamId::DMA1_Str3, Channel::CHANNEL2}},
+        {Peripherals::PE_TIM4_CH3, {DMAStreamId::DMA1_Str7, Channel::CHANNEL2}},
+
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_UP, {DMAStreamId::DMA1_Str6, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_TRIG,
+         {DMAStreamId::DMA1_Str1, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_TRIG,
+         {DMAStreamId::DMA1_Str3, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH1, {DMAStreamId::DMA1_Str2, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH2, {DMAStreamId::DMA1_Str4, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH3, {DMAStreamId::DMA1_Str0, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str1, Channel::CHANNEL6}},
+        {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3, Channel::CHANNEL6}},
+
+        {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1, Channel::CHANNEL7}},
+
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
+        {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
+
+        {Peripherals::PE_TIM8_UP, {DMAStreamId::DMA2_Str1, Channel::CHANNEL7}},
+        // {Peripherals::PE_TIM8_TRIG,
+        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL7}},
+        // {Peripherals::PE_TIM8_COM, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH1, {DMAStreamId::DMA2_Str2, Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        // {Peripherals::PE_TIM8_CH2, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL7}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str2, Channel::CHANNEL0}},
+        {Peripherals::PE_TIM8_CH3, {DMAStreamId::DMA2_Str4, Channel::CHANNEL7}},
+        // {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL7}},
+
+        // Others
+        {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
+        {Peripherals::PE_DAC2, {DMAStreamId::DMA1_Str6, Channel::CHANNEL7}},
+
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str0, Channel::CHANNEL0}},
+        {Peripherals::PE_ADC1, {DMAStreamId::DMA2_Str4, Channel::CHANNEL0}},
+
+        {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
+        // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
+
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
+        {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
+
+        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str1, Channel::CHANNEL0}},
+        {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str6, Channel::CHANNEL10}},
+        // {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str4, Channel::CHANNEL3}},
+        {Peripherals::PE_SAI2_A, {DMAStreamId::DMA2_Str2, Channel::CHANNEL10}},
+
+        // {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}},
+        {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str0, Channel::CHANNEL10}},
+        // {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL0}},
+        {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str6, Channel::CHANNEL3}},
+        {Peripherals::PE_SAI2_B, {DMAStreamId::DMA2_Str1, Channel::CHANNEL10}},
+
+        {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str1, Channel::CHANNEL1}},
+        // {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
+
+        // {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL4}},
+        {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
+        {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str0, Channel::CHANNEL11}},
+        // {Peripherals::PE_SDMMC2, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL11}},
+
+        // {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL2}},
+        {Peripherals::PE_CRYP_IN, {DMAStreamId::DMA2_Str6, Channel::CHANNEL2}},
+
+        // {Peripherals::PE_HASH_IN, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL2}},
+
+        {Peripherals::PE_SPDIFRX_DT,
+         {DMAStreamId::DMA1_Str1, Channel::CHANNEL0}},
+        {Peripherals::PE_SPDIFRX_CS,
+         {DMAStreamId::DMA1_Str6, Channel::CHANNEL0}},
+
+        {Peripherals::PE_DFSDM1_FLT0,
+         {DMAStreamId::DMA2_Str0, Channel::CHANNEL8}},
+        {Peripherals::PE_DFSDM1_FLT0,
+         {DMAStreamId::DMA2_Str4, Channel::CHANNEL8}},
+        {Peripherals::PE_DFSDM1_FLT1,
+         {DMAStreamId::DMA2_Str1, Channel::CHANNEL8}},
+        // {Peripherals::PE_DFSDM1_FLT1,
+        //  {DMAStreamId::DMA2_Str5, Channel::CHANNEL8}},
+        {Peripherals::PE_DFSDM1_FLT2,
+         {DMAStreamId::DMA2_Str2, Channel::CHANNEL8}},
+        {Peripherals::PE_DFSDM1_FLT2,
+         {DMAStreamId::DMA2_Str6, Channel::CHANNEL8}},
+        // {Peripherals::PE_DFSDM1_FLT3, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL8}},
+        // {Peripherals::PE_DFSDM1_FLT3,
+        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL8}},
+
+        {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str0, Channel::CHANNEL9}},
+        // {Peripherals::PE_JPEG_IN, {DMAStreamId::DMA2_Str3,
+        // Channel::CHANNEL9}}
+        {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str1, Channel::CHANNEL9}},
+        {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str4, Channel::CHANNEL9}},
+};
+
+}  // namespace DMADefs
+
+}  // namespace Boardcore