diff --git a/src/shared/drivers/dma/DMA.cpp b/src/shared/drivers/dma/DMA.cpp
index b4ce822be5eccb85066a9967be82fbe52a8063cc..d6b79b46cd1f28c4f07bf719b10f15a920861284 100644
--- a/src/shared/drivers/dma/DMA.cpp
+++ b/src/shared/drivers/dma/DMA.cpp
@@ -30,6 +30,18 @@
 
 using namespace miosix;
 
+/**
+ * Here are defined the IRQHandlers for the various 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).
+ */
+
 void __attribute__((naked)) DMA1_Stream0_IRQHandler()
 {
     saveContext();
@@ -43,19 +55,21 @@ void __attribute__((used)) DMA1_Stream0_IRQImpl()
         Boardcore::DMADefs::DMAStreamId::DMA1_Str0);
 }
 
-// TODO: decide how to handle this situation
-// Commented because already defined elsewhere by miosix
-// void __attribute__((naked)) DMA1_Stream1_IRQHandler()
-// {
-//     saveContext();
-//     asm volatile("bl _Z20DMA1_Stream1_IRQImplv");
-//     restoreContext();
-// }
-// void __attribute__((used)) DMA1_Stream1_IRQImpl()
-// {
-//     Boardcore::DMADriver::instance().IRQhandleInterrupt(
-//         Boardcore::DMADefs::DMAStreamId::DMA1_Str1);
-// }
+#ifndef STM32F407xx
+// This stream is used by miosix for STM32F407xx boards
+void __attribute__((naked)) DMA1_Stream1_IRQHandler()
+{
+    saveContext();
+    asm volatile("bl _Z20DMA1_Stream1_IRQImplv");
+    restoreContext();
+}
+
+void __attribute__((used)) DMA1_Stream1_IRQImpl()
+{
+    Boardcore::DMADriver::instance().IRQhandleInterrupt(
+        Boardcore::DMADefs::DMAStreamId::DMA1_Str1);
+}
+#endif  // STM32F407xx
 
 void __attribute__((naked)) DMA1_Stream2_IRQHandler()
 {
@@ -70,19 +84,21 @@ void __attribute__((used)) DMA1_Stream2_IRQImpl()
         Boardcore::DMADefs::DMAStreamId::DMA1_Str2);
 }
 
-// TODO: decide how to handle this situation
-// Commented because already defined elsewhere by miosix
-// void __attribute__((naked)) DMA1_Stream3_IRQHandler()
-// {
-//     saveContext();
-//     asm volatile("bl _Z20DMA1_Stream3_IRQImplv");
-//     restoreContext();
-// }
-// void __attribute__((used)) DMA1_Stream3_IRQImpl()
-// {
-//     Boardcore::DMADriver::instance().IRQhandleInterrupt(
-//         Boardcore::DMAStreamId::DMA1_Str3);
-// }
+#ifndef STM32F407xx
+// This stream is used by miosix for STM32F407xx boards
+void __attribute__((naked)) DMA1_Stream3_IRQHandler()
+{
+    saveContext();
+    asm volatile("bl _Z20DMA1_Stream3_IRQImplv");
+    restoreContext();
+}
+
+void __attribute__((used)) DMA1_Stream3_IRQImpl()
+{
+    Boardcore::DMADriver::instance().IRQhandleInterrupt(
+        Boardcore::DMADefs::DMAStreamId::DMA1_Str3);
+}
+#endif  // STM32F407xx
 
 void __attribute__((naked)) DMA1_Stream4_IRQHandler()
 {
@@ -175,8 +191,8 @@ void __attribute__((used)) DMA2_Stream2_IRQImpl()
         Boardcore::DMADefs::DMAStreamId::DMA2_Str2);
 }
 
-// TODO: decide how to handle this situation
-// Commented because already defined elsewhere by miosix
+// This stream is used by miosix both for STM32F407xx
+// and STM32F767xx, so it is simply commented out
 // void __attribute__((naked)) DMA2_Stream3_IRQHandler()
 // {
 //     saveContext();
@@ -203,6 +219,8 @@ void __attribute__((used)) DMA2_Stream4_IRQImpl()
         Boardcore::DMADefs::DMAStreamId::DMA2_Str4);
 }
 
+#ifndef STM32F767xx
+// This stream is used by miosix for STM32F767xx boards
 void __attribute__((naked)) DMA2_Stream5_IRQHandler()
 {
     saveContext();
@@ -215,6 +233,7 @@ void __attribute__((used)) DMA2_Stream5_IRQImpl()
     Boardcore::DMADriver::instance().IRQhandleInterrupt(
         Boardcore::DMADefs::DMAStreamId::DMA2_Str5);
 }
+#endif  // STM32F767xx
 
 void __attribute__((naked)) DMA2_Stream6_IRQHandler()
 {
@@ -229,6 +248,8 @@ void __attribute__((used)) DMA2_Stream6_IRQImpl()
         Boardcore::DMADefs::DMAStreamId::DMA2_Str6);
 }
 
+#ifndef STM32F767xx
+// This stream is used by miosix for STM32F767xx boards
 void __attribute__((naked)) DMA2_Stream7_IRQHandler()
 {
     saveContext();
@@ -241,6 +262,7 @@ void __attribute__((used)) DMA2_Stream7_IRQImpl()
     Boardcore::DMADriver::instance().IRQhandleInterrupt(
         Boardcore::DMADefs::DMAStreamId::DMA2_Str7);
 }
+#endif  // STM32F767xx
 
 namespace Boardcore
 {
diff --git a/src/shared/drivers/dma/DMADefs.cpp b/src/shared/drivers/dma/DMADefs.cpp
index ea405c5811e80158aee94bab31e5cffcbb434bec..c61c66a42b229f7d5dc5f1bec7b9951d2caab1b9 100644
--- a/src/shared/drivers/dma/DMADefs.cpp
+++ b/src/shared/drivers/dma/DMADefs.cpp
@@ -38,13 +38,28 @@ const IRQn_Type irqNumberMapping[] = {
 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}}, // Stream currently not supported
+        // 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}},
@@ -53,13 +68,13 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         // SPI
         {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
         // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL0}},
 
         {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
         {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
@@ -80,11 +95,11 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
          {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
 
         // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL4}}, // Stream currently not supported
+        // Channel::CHANNEL4}},
         {Peripherals::PE_USART3_TX,
          {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
         // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL4}}, // Stream currently not supported
+        // Channel::CHANNEL4}},
 
         {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
         {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
@@ -110,7 +125,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // Channel::CHANNEL7}},
 
         {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
         {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
@@ -118,7 +133,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_I2S2_EXT_TX,
          {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
         // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // Channel::CHANNEL3}},
 
         {Peripherals::PE_I2S3_EXT_TX,
          {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
@@ -137,7 +152,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}},
@@ -145,12 +160,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
 
         // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL3}},
         {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
         {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
 
@@ -165,25 +180,25 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
         // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
         // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
 
         // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL7}}, // Stream currently not supported
+        // Channel::CHANNEL7}},
 
         {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
         {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
@@ -196,7 +211,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}},
@@ -210,7 +225,6 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
 
         {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
         // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-        // // Stream currently not supported
 
         {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
         {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
@@ -219,7 +233,6 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
 
         // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
-        // // Stream currently not supported
         {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
 
         {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
@@ -236,7 +249,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}},
@@ -245,13 +258,13 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         // SPI
         {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL3}},
         // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL0}},
 
         {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str5, Channel::CHANNEL0}},
         {Peripherals::PE_SPI3_TX, {DMAStreamId::DMA1_Str7, Channel::CHANNEL0}},
@@ -262,12 +275,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL2}},
         {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}},
 
         {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}},
@@ -287,11 +300,11 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
          {DMAStreamId::DMA1_Str5, Channel::CHANNEL4}},
 
         // {Peripherals::PE_USART3_TX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL4}}, // Stream currently not supported
+        // Channel::CHANNEL4}},
         {Peripherals::PE_USART3_TX,
          {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}},
         // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL4}}, // Stream currently not supported
+        // Channel::CHANNEL4}},
 
         {Peripherals::PE_UART4_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL4}},
         {Peripherals::PE_UART4_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL4}},
@@ -300,9 +313,9 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_UART5_RX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL4}},
 
         // {Peripherals::PE_UART7_TX, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL5}}, // Stream currently not supported
+        // Channel::CHANNEL5}},
         // {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL5}}, // Stream currently not supported
+        // Channel::CHANNEL5}},
 
         {Peripherals::PE_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}},
         {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}},
@@ -325,7 +338,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // Channel::CHANNEL7}},
 
         {Peripherals::PE_I2C3_TX, {DMAStreamId::DMA1_Str4, Channel::CHANNEL3}},
         {Peripherals::PE_I2C3_RX, {DMAStreamId::DMA1_Str2, Channel::CHANNEL3}},
@@ -333,7 +346,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_I2S2_EXT_TX,
          {DMAStreamId::DMA1_Str4, Channel::CHANNEL2}},
         // {Peripherals::PE_I2S2_EXT_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // Channel::CHANNEL3}},
 
         {Peripherals::PE_I2S3_EXT_TX,
          {DMAStreamId::DMA1_Str5, Channel::CHANNEL2}},
@@ -352,7 +365,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}},
@@ -360,12 +373,12 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_TIM1_CH4, {DMAStreamId::DMA2_Str4, Channel::CHANNEL6}},
 
         // {Peripherals::PE_TIM2_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL3}},
         {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str6, Channel::CHANNEL3}},
         {Peripherals::PE_TIM2_CH4, {DMAStreamId::DMA1_Str7, Channel::CHANNEL3}},
 
@@ -380,25 +393,25 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
         // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
         // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        // Channel::CHANNEL6}},
 
         // {Peripherals::PE_TIM6_UP, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL7}}, // Stream currently not supported
+        // Channel::CHANNEL7}},
 
         {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str2, Channel::CHANNEL1}},
         {Peripherals::PE_TIM7_UP, {DMAStreamId::DMA1_Str4, Channel::CHANNEL1}},
@@ -411,7 +424,7 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}},
@@ -425,14 +438,13 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
 
         {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
         // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-        // // Stream currently not supported
 
         {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}}, // Stream currently not supported
+        // Channel::CHANNEL0}},
 
         {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}},
         {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}},
@@ -441,7 +453,6 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {Peripherals::PE_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
 
         // {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str3, Channel::CHANNEL4}},
-        // // Stream currently not supported
         {Peripherals::PE_SDIO, {DMAStreamId::DMA2_Str6, Channel::CHANNEL4}},
 
         {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
@@ -458,25 +469,26 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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_Str5,
+        // Channel::CHANNEL0}},
         {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str6, Channel::CHANNEL0}},
-        {Peripherals::PE_MEM_ONLY, {DMAStreamId::DMA2_Str7, 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_Str5,
+        // Channel::CHANNEL3}},
         // {Peripherals::PE_SPI1_TX, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL3}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
-        // {Peripherals::PE_SPI2_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL0}}, // Stream currently not supported
+        {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}},
@@ -488,40 +500,44 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
-        {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}},
+        // 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_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_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_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}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
+        {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}},
@@ -529,18 +545,16 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
-        // {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL5}}, // Stream currently not supported
+        {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_TX,
+        //  {DMAStreamId::DMA2_Str7, Channel::CHANNEL5}},
         {Peripherals::PE_USART6_RX,
          {DMAStreamId::DMA2_Str1, Channel::CHANNEL5}},
         {Peripherals::PE_USART6_RX,
@@ -555,22 +569,20 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
+        {Peripherals::PE_I2C4_RX, {DMAStreamId::DMA1_Str1, Channel::CHANNEL8}},
 
         // TIMERS
-        {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5, Channel::CHANNEL6}},
+        // {Peripherals::PE_TIM1_UP, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL6}},
         {Peripherals::PE_TIM1_TRIG,
          {DMAStreamId::DMA2_Str0, Channel::CHANNEL6}},
         {Peripherals::PE_TIM1_TRIG,
@@ -579,20 +591,18 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
+        {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}},
 
@@ -606,42 +616,40 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
 
         {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}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
-        // {Peripherals::PE_TIM5_TRIG, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
-        // {Peripherals::PE_TIM5_CH4, {DMAStreamId::DMA1_Str3,
-        // Channel::CHANNEL6}}, // Stream currently not supported
+        {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}}, // Stream currently not supported
+        {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_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}}, // Stream currently not supported
+        // 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}},
+        // {Peripherals::PE_TIM8_CH4, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL7}},
 
         // Others
         {Peripherals::PE_DAC1, {DMAStreamId::DMA1_Str5, Channel::CHANNEL7}},
@@ -652,7 +660,6 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
 
         {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str2, Channel::CHANNEL1}},
         // {Peripherals::PE_ADC2, {DMAStreamId::DMA2_Str3, Channel::CHANNEL1}},
-        // // Stream currently not supported
 
         {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str0, Channel::CHANNEL2}},
         {Peripherals::PE_ADC3, {DMAStreamId::DMA2_Str1, Channel::CHANNEL2}},
@@ -660,33 +667,38 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
         {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}}, // Stream currently not supported
+        // 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_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_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_DCMI, {DMAStreamId::DMA2_Str7, Channel::CHANNEL1}},
 
         // {Peripherals::PE_SDMMC1, {DMAStreamId::DMA2_Str3,
-        // Channel::CHANNEL4}}, // Stream currently not supported
+        // 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_SDMMC2, {DMAStreamId::DMA2_Str5,
+        // Channel::CHANNEL11}},
 
-        {Peripherals::PE_CRYP_OUT, {DMAStreamId::DMA2_Str5, Channel::CHANNEL2}},
+        // {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_HASH_IN, {DMAStreamId::DMA2_Str7,
+        // Channel::CHANNEL2}},
 
-        // {Peripherals::PE_SPDIFRX_DT, {DMAStreamId::DMA1_Str1,
-        // Channel::CHANNEL0}}, // Stream currently not supported
+        {Peripherals::PE_SPDIFRX_DT,
+         {DMAStreamId::DMA1_Str1, Channel::CHANNEL0}},
         {Peripherals::PE_SPDIFRX_CS,
          {DMAStreamId::DMA1_Str6, Channel::CHANNEL0}},
 
@@ -696,20 +708,20 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>>
          {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_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}}, // Stream currently not supported
-        {Peripherals::PE_DFSDM1_FLT3,
-         {DMAStreamId::DMA2_Str7, Channel::CHANNEL8}},
+        // 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}}, // Stream currently not supported
+        // Channel::CHANNEL9}}
         {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str1, Channel::CHANNEL9}},
         {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str4, Channel::CHANNEL9}},
 
diff --git a/src/shared/drivers/dma/DMADefs.h b/src/shared/drivers/dma/DMADefs.h
index eb62a8ccc88acb7b8fda9cf4d089a27ee74ab5a0..f2c42822c5710ce752b7fb171139ebe3ea29887c 100644
--- a/src/shared/drivers/dma/DMADefs.h
+++ b/src/shared/drivers/dma/DMADefs.h
@@ -49,15 +49,32 @@ namespace DMADefs
 
 enum class DMAStreamId : uint8_t
 {
-    // TODO: some streams are commented because the
-    // corresponding irq handler is already defined
-    // by miosix. For now those streams are not usable,
-    // decide how to handle this situation.
+    /**
+     * Here are defined the selectable 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).
+     */
 
     DMA1_Str0 = 0,
-    // DMA1_Str1 = 1,
+
+#ifndef STM32F407xx
+    // This stream is used by miosix for STM32F407xx boards
+    DMA1_Str1 = 1,
+#endif  // STM32F407xx
+
     DMA1_Str2 = 2,
-    // DMA1_Str3 = 3,
+
+#ifndef STM32F407xx
+    // This stream is used by miosix for STM32F407xx boards
+    DMA1_Str3 = 3,
+#endif  // STM32F407xx
+
     DMA1_Str4 = 4,
     DMA1_Str5 = 5,
     DMA1_Str6 = 6,
@@ -65,11 +82,20 @@ enum class DMAStreamId : uint8_t
     DMA2_Str0 = 8,
     DMA2_Str1 = 9,
     DMA2_Str2 = 10,
-    // DMA2_Str3 = 11,
+    // DMA2_Str3 = 11, // Always used by miosix
     DMA2_Str4 = 12,
+
+#ifndef STM32F767xx
+    // This stream is used by miosix for STM32F767xx boards
     DMA2_Str5 = 13,
+#endif  // STM32F767xx
+
     DMA2_Str6 = 14,
+
+#ifndef STM32F767xx
+    // This stream is used by miosix for STM32F767xx boards
     DMA2_Str7 = 15,
+#endif  // STM32F767xx
 };
 
 /**