diff --git a/src/shared/drivers/dma/DMA.cpp b/src/shared/drivers/dma/DMA.cpp index 6a1903e6c5c6ed26aa7000ec8cf11e668d7bc21d..b4ce822be5eccb85066a9967be82fbe52a8063cc 100644 --- a/src/shared/drivers/dma/DMA.cpp +++ b/src/shared/drivers/dma/DMA.cpp @@ -616,7 +616,7 @@ void DMAStream::readFlags() bool DMAStream::setNumberOfDataItems(const uint16_t nBytes) { // Verify that the stream is disabled while doing it - if (registers->CR & DMA_SxCR_EN != 0) + if ((registers->CR & DMA_SxCR_EN) != 0) { // Cannot proceed return false; diff --git a/src/shared/drivers/dma/DMADefs.cpp b/src/shared/drivers/dma/DMADefs.cpp index 176729890d0aa4f742c5c3063d63311bf97cd980..ea405c5811e80158aee94bab31e5cffcbb434bec 100644 --- a/src/shared/drivers/dma/DMADefs.cpp +++ b/src/shared/drivers/dma/DMADefs.cpp @@ -261,11 +261,13 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {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_SPI4_RX, {DMAStreamId::DMA2_Str3, + // Channel::CHANNEL5}}, // Stream currently not supported {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_Str3, + // Channel::CHANNEL2}}, // Stream currently not supported {Peripherals::PE_SPI5_RX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL7}}, {Peripherals::PE_SPI6_TX, {DMAStreamId::DMA2_Str5, Channel::CHANNEL1}}, @@ -297,8 +299,10 @@ 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}}, - {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3, Channel::CHANNEL5}}, + // {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_UART8_TX, {DMAStreamId::DMA1_Str0, Channel::CHANNEL5}}, {Peripherals::PE_UART8_RX, {DMAStreamId::DMA1_Str6, Channel::CHANNEL5}}, @@ -427,7 +431,8 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {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_A, {DMAStreamId::DMA2_Str3, + // Channel::CHANNEL0}}, // Stream currently not supported {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str5, Channel::CHANNEL0}}, {Peripherals::PE_SAI1_B, {DMAStreamId::DMA2_Str4, Channel::CHANNEL1}}, @@ -445,6 +450,270 @@ const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> {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}}, // Stream currently not supported + {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}}, // Stream currently not supported + {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_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}}, // Stream currently not supported + + {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}}, + {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}}, // Stream currently not supported + {Peripherals::PE_USART3_TX, + {DMAStreamId::DMA1_Str4, Channel::CHANNEL7}}, + // {Peripherals::PE_USART3_RX, {DMAStreamId::DMA1_Str1, + // Channel::CHANNEL4}}, // Stream currently not supported + + {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}}, // Stream currently not supported + // {Peripherals::PE_UART7_RX, {DMAStreamId::DMA1_Str3, + // Channel::CHANNEL5}}, // Stream currently not supported + + {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}}, // Stream currently not supported + + {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_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 + + // 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}}, // Stream currently not supported + {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_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_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}}, // Stream currently not supported + {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_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_TIM6_UP, {DMAStreamId::DMA1_Str1, + // Channel::CHANNEL7}}, // Stream currently not supported + + {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}}, // Stream currently not supported + {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}}, + // // 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_Str6, Channel::CHANNEL10}}, + // {Peripherals::PE_SAI1_A, {DMAStreamId::DMA2_Str3, + // Channel::CHANNEL0}}, // Stream currently not supported + {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}}, // Stream currently not supported + {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}}, // Stream currently not supported + {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}}, // Stream currently not supported + {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 + {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str1, Channel::CHANNEL9}}, + {Peripherals::PE_JPEG_OUT, {DMAStreamId::DMA2_Str4, Channel::CHANNEL9}}, + +#endif // STM32F767xx }; } // namespace DMADefs diff --git a/src/shared/drivers/dma/DMADefs.h b/src/shared/drivers/dma/DMADefs.h index 91426006b19aa57b7db0aa08b88138e3142d34ff..971d553e15ca75f84a53c68d6a3c289eb273f278 100644 --- a/src/shared/drivers/dma/DMADefs.h +++ b/src/shared/drivers/dma/DMADefs.h @@ -77,6 +77,7 @@ enum class DMAStreamId : uint8_t */ enum class Channel : uint32_t { + // The first 8 channels are valid for all supported channels CHANNEL0 = 0, CHANNEL1 = DMA_SxCR_CHSEL_0, CHANNEL2 = DMA_SxCR_CHSEL_1, @@ -85,6 +86,15 @@ enum class Channel : uint32_t CHANNEL5 = DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0, CHANNEL6 = DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1, CHANNEL7 = DMA_SxCR_CHSEL, + +// stm32f767 also has channels from 8 to 11 +#ifdef STM32F767xx + // TODO: verify + CHANNEL8 = DMA_SxCR_CHSEL_3, + CHANNEL9 = DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_0, + CHANNEL10 = DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1, + CHANNEL11 = DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2, +#endif // STM32F767xx }; /** @@ -106,6 +116,7 @@ enum class Peripherals : uint8_t PE_SPI5_RX, PE_SPI6_TX, PE_SPI6_RX, + PE_QUADSPI, PE_USART1_TX, PE_USART1_RX, PE_USART2_TX, @@ -128,6 +139,8 @@ enum class Peripherals : uint8_t PE_I2C2_RX, PE_I2C3_TX, PE_I2C3_RX, + PE_I2C4_TX, + PE_I2C4_RX, PE_I2S2_EXT_TX, PE_I2S2_EXT_RX, PE_I2S3_EXT_TX, @@ -175,13 +188,24 @@ enum class Peripherals : uint8_t PE_ADC2, PE_ADC3, PE_SAI1_A, + PE_SAI2_A, PE_SAI1_B, + PE_SAI2_B, PE_DCMI, PE_SDIO, + PE_SDMMC1, + PE_SDMMC2, PE_CRYP_OUT, PE_CRYP_IN, PE_HASH_IN, - + PE_SPDIFRX_DT, + PE_SPDIFRX_CS, + PE_DFSDM1_FLT0, + PE_DFSDM1_FLT1, + PE_DFSDM1_FLT2, + PE_DFSDM1_FLT3, + PE_JPEG_IN, + PE_JPEG_OUT, }; /** @@ -194,6 +218,11 @@ 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 */ extern const std::multimap<Peripherals, std::pair<DMAStreamId, Channel>> mapPeripherals;