From aea4174937d8ba2748c8a6700b2c6dbcee89f7a3 Mon Sep 17 00:00:00 2001 From: robert-hh Date: Tue, 29 Nov 2022 13:05:44 +0100 Subject: [PATCH] mimxrt/sdcard: Fix an error when writing large blocks. Which happened when a read followed a large write. --- ports/mimxrt/sdcard.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/mimxrt/sdcard.c b/ports/mimxrt/sdcard.c index 20f76cc88f..5172067884 100644 --- a/ports/mimxrt/sdcard.c +++ b/ports/mimxrt/sdcard.c @@ -360,7 +360,8 @@ static status_t sdcard_transfer_blocking(USDHC_Type *base, usdhc_handle_t *handl status = kStatus_Timeout; for (int i = 0; i < timeout_ms * 100; i++) { // Wait until Data0 is low any more. Low indicates "Busy". - if ((transfer->data->txData == NULL) || (USDHC_GetPresentStatusFlags(base) & (uint32_t)kUSDHC_Data0LineLevelFlag) != 0) { + if (((transfer->data->txData == NULL) && (transfer->data->rxData == NULL)) || + (USDHC_GetPresentStatusFlags(base) & (uint32_t)kUSDHC_Data0LineLevelFlag) != 0) { // Not busy anymore or no TX-Data status = USDHC_TransferBlocking(base, &dma_config, transfer); if (status != kStatus_Success) {