遇到 E (396) sdmmc_sd: sdmmc_check_scr: send_scr returned 0x109
错误时,通常表示在与 SD 卡通信时出现了问题。这个错误代码 0x109
可能与 SD 卡的初始化或通信频率有关。
可以尝试降低 SDMMC 的默认频率来解决这个问题。
以下是具体步骤:
- 找到
sd_protocol_types.h
文件:
这个文件通常位于 ESP-IDF 的组件目录中。具体路径可能类似于v5.4\esp-idf\components\sdmmc\include\sd_protocol_types.h
。 - 定位到
SDMMC_FREQ_DEFAULT
宏定义:
打开sd_protocol_types.h
文件,找到SDMMC_FREQ_DEFAULT
的定义。 - 将
SDMMC_FREQ_DEFAULT
的值从20000
修改为5000
:
修改后的代码应为:c #define SDMMC_FREQ_DEFAULT 5000
以下是详细的修改步骤:
步骤 1: 找到 sd_protocol_types.h
文件
sd_protocol_types.h
文件位于 v5.4\esp-idf\components\sdmmc\include\sd_protocol_types.h
,你可以使用文件管理器或命令行工具找到该文件。
步骤 2: 定位到 SDMMC_FREQ_DEFAULT
宏定义
打开 sd_protocol_types.h
文件,找到以下行: c #define SDMMC_FREQ_DEFAULT 20000
步骤 3: 修改 SDMMC_FREQ_DEFAULT
的值 将上述行修改为:
c #define SDMMC_FREQ_DEFAULT 5000
注意事项
- 备份原始文件:在修改前,确保备份
sd_protocol_types.h
文件,以防需要恢复原始配置。 - 重新编译项目:修改后,重新编译你的项目以应用更改。
- 检查硬件连接:确保 SD 卡和 ESP32 之间的硬件连接正确,包括电源、地线和数据线。