summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobert-hh <robert@hammelrath.com>2022-11-29 13:05:44 +0100
committerDamien George <damien@micropython.org>2022-12-14 13:04:58 +1100
commitaea4174937d8ba2748c8a6700b2c6dbcee89f7a3 (patch)
treeb0186b6cb7c02feea22deea38e0923c4b27c1cb5
parent913f9ad5ad9bb446c6e4310b6b5eda310098a1cf (diff)
mimxrt/sdcard: Fix an error when writing large blocks.
Which happened when a read followed a large write.
-rw-r--r--ports/mimxrt/sdcard.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ports/mimxrt/sdcard.c b/ports/mimxrt/sdcard.c
index 20f76cc88..517206788 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) {