使用esp32跑sdmmc出现sdmmc_cmd: sdmmc_read_sectors_dma: sdmmc_send_cmd returned 0x107

sd卡读512MB的内存卡没问题,读4GB的就报错

解决方法
1.格式化sd卡

右键,格式化,选择fat32即可,如果有些保护,检查读卡器是否被锁。

2.修改代码


DRESULT ff_sdmmc_read(BYTE pdrv, BYTE* buff, DWORD sector, UINT count)
{
    sdmmc_card_t* card = s_cards[pdrv];
    assert(card);

    for (int retry_count = 0; retry_count < 5; retry_count++) {
       // int32_t start_time = esp_timer_get_time();
        esp_err_t err = sdmmc_read_sectors(card, buff, sector, count);

        if (err != ESP_OK) {
            printf("[READ]Failed at sector %d, retry_count %d \n", sector, retry_count);
            continue;
        }

      //  int32_t stop_time = esp_timer_get_time() - start_time;
        // Update performance counters and print benchmark
      //  sdmmc_benchmark_printf();
        return RES_OK;
    }

    printf("[READ]Cannot read sector %d\n", sector);
    return RES_ERROR;
}

多次调用sdmmc_read_sectors(card, buff, sector, count);即可。

参考

sdmmc throws "sdmmc_read_sectors_dma: sdmmc_send_cmd returned 0x107" for 16GB SDHC/SDXC sd card (IDFGH-7748) · Issue #9289 · espressif/esp-idf · GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值