diff --git a/src/shared/DMA/DMA.cpp b/src/shared/DMA/DMA.cpp index c87dfdd0886608f3b123d0aeab73d29aedeb07d1..14a8df2024954e5a6264c0568593543bab75e195 100644 --- a/src/shared/DMA/DMA.cpp +++ b/src/shared/DMA/DMA.cpp @@ -188,16 +188,18 @@ void SPIRequest::IRQbeginTransaction() DMA2_Stream0->NDTR = fromPeripheral.size(); DMA2_Stream0->FCR = DMA_SxFCR_FEIE //Enable interrupt on FIFO error + | DMA_SxFCR_DMDIS //Enable FIFO | DMA_SxFCR_FTH_0 //FTH = 11 -> Full FIFO | DMA_SxFCR_FTH_1; DMA2_Stream0->CR = DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0 // Channel 3 - | DMA_SxCR_PL_1 //High priority because fifo disabled - | DMA_SxCR_MINC //Increment memory pointer - | DMA_SxCR_TCIE //Interrupt on transfer complete - | DMA_SxCR_TEIE //Interrupt on transfer error - | DMA_SxCR_DMEIE //Interrupt on direct mode error - | DMA_SxCR_EN; //Start DMA + | DMA_SxCR_MBURST_0 //Read 4 byte at a time from RAM + | DMA_SxCR_PL_1 //High priority because fifo disabled + | DMA_SxCR_MINC //Increment memory pointer + | DMA_SxCR_TCIE //Interrupt on transfer complete + | DMA_SxCR_TEIE //Interrupt on transfer error + | DMA_SxCR_DMEIE //Interrupt on direct mode error + | DMA_SxCR_EN; //Start DMA // Tx @@ -207,16 +209,18 @@ void SPIRequest::IRQbeginTransaction() DMA2_Stream5->NDTR = toPeripheral.size(); DMA2_Stream5->FCR = DMA_SxFCR_FEIE //Enable interrupt on FIFO error + | DMA_SxFCR_DMDIS //Enable FIFO | DMA_SxFCR_FTH_0 //FTH = 11 -> Full FIFO | DMA_SxFCR_FTH_1; DMA2_Stream5->CR = DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0 // Channel 3 - | DMA_SxCR_PL_1 //High priority because fifo disabled - | DMA_SxCR_MINC //Increment memory pointer - | DMA_SxCR_DIR_0 //Memory to peripheral - | DMA_SxCR_TEIE //Interrupt on transfer error - | DMA_SxCR_DMEIE //Interrupt on direct mode error - | DMA_SxCR_EN; //Start DMA + | DMA_SxCR_MBURST_0 //Read 4 byte at a time from RAM + | DMA_SxCR_PL_1 //High priority because fifo disabled + | DMA_SxCR_MINC //Increment memory pointer + | DMA_SxCR_DIR_0 //Memory to peripheral + | DMA_SxCR_TEIE //Interrupt on transfer error + | DMA_SxCR_DMEIE //Interrupt on direct mode error + | DMA_SxCR_EN; //Start DMA } void SPIRequest::IRQendTransaction()