From 8c3da2ba1412a9f96ea6de3ec2a8c4c86d5fb90a Mon Sep 17 00:00:00 2001 From: jflyper Date: Thu, 17 Aug 2017 13:07:21 +0900 Subject: [PATCH] Correctly set NbData and MemoryOrM2MDstDataSize --- src/main/drivers/sdcard.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/drivers/sdcard.c b/src/main/drivers/sdcard.c index 12739a89c2..08ca54f888 100644 --- a/src/main/drivers/sdcard.c +++ b/src/main/drivers/sdcard.c @@ -413,7 +413,7 @@ static void sdcard_sendDataBlockBegin(const uint8_t *buffer, bool multiBlockWrit #if defined(SDCARD_DMA_TX) && defined(USE_HAL_DRIVER) #ifdef SDCARD_DMA_CLK - LL_AHB1_GRP1_EnableClock(SDCARD_DMA_CLK); + // LL_AHB1_GRP1_EnableClock(SDCARD_DMA_CLK); // XXX Should not be necessary; dmaInit handles it. #endif LL_DMA_InitTypeDef init; @@ -430,7 +430,9 @@ static void sdcard_sendDataBlockBegin(const uint8_t *buffer, bool multiBlockWrit init.MemoryOrM2MDstAddress = (uint32_t)buffer; init.MemoryOrM2MDstIncMode = LL_DMA_MEMORY_INCREMENT; - init.MemoryOrM2MDstDataSize = SDCARD_BLOCK_SIZE; + init.MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + + init.NbData = SDCARD_BLOCK_SIZE; LL_DMA_DeInit(SDCARD_DMA_TX, SDCARD_DMA_STREAM_TX); LL_DMA_Init(SDCARD_DMA_TX, SDCARD_DMA_STREAM_TX, &init); @@ -443,7 +445,7 @@ static void sdcard_sendDataBlockBegin(const uint8_t *buffer, bool multiBlockWrit // Queue the transmission of the sector payload #ifdef SDCARD_DMA_CLK - RCC_AHB1PeriphClockCmd(SDCARD_DMA_CLK, ENABLE); + // RCC_AHB1PeriphClockCmd(SDCARD_DMA_CLK, ENABLE); // XXX Shouldn't be needed ... #endif DMA_InitTypeDef init;