乐鑫技术交流
直播中

杨雪

8年用户 1207经验值
私信 关注
[问答]

在ESP-IDF v4.3中使用SDMMC控制器如何设置更高的频率访问TF卡?

如题,请问在ESP-IDF v4.3中,使用SDMMC控制器如何设置更高的频率访问TF卡?
芯片使用的是ESP32,然后使用的是官方例程中的sdcard例子。但是最高只能配置26M,如果配置成40M或者80M的话,直接就报错了(晚上我会把详细的报错信息贴上来),然后目前使用的是SDMMC控制器的4线模式。

回帖(1)

高桂清

2024-6-17 17:35:20
在ESP-IDF v4.3中,要设置更高的频率访问TF卡,您可以按照以下步骤操作:

1. 首先,确保您的硬件支持更高的频率。ESP32的SDMMC控制器支持最高80MHz的频率,但实际可用频率可能受到硬件设计和TF卡的限制。

2. 修改示例代码中的频率设置。在`main.c`文件中,找到以下代码段:

```c
sdmmc_host_t host = SDMMC_HOST_DEFAULT();
host.max_freq_khz = SDMMC_FREQ_DEFAULT;
host.pio_active = 1;
```

3. 将`host.max_freq_khz`的值设置为更高的频率,例如40MHz或80MHz:

```c
host.max_freq_khz = 40000; // 40MHz
```

或者

```c
host.max_freq_khz = 80000; // 80MHz
```

4. 确保您的TF卡支持所选的频率。如果TF卡不支持更高的频率,可能会导致错误或不稳定的行为。

5. 重新编译并烧录代码到ESP32。如果出现错误,请检查硬件连接和TF卡的兼容性。

6. 如果在设置更高频率时遇到问题,您可以尝试以下方法:

   a. 检查ESP32的GPIO引脚是否正确连接到TF卡。确保SDMMC控制器的数据线和时钟线连接正确。

   b. 确保您的TF卡是高速卡,支持所选的频率。

   c. 在`sdmmc_host_init()`函数调用之前,添加以下代码以启用SDMMC控制器的4线模式:

   ```c
   sdmmc_host_t *host = &sdmmc_dev.host;
   host->flags &= ~SDMMC_HOST_FLAG_1BIT;
   ```

7. 如果问题仍然存在,请提供详细的错误信息以便进一步分析。

请注意,提高频率可能会增加功耗和热量产生。在实际应用中,请根据您的需求和硬件条件选择合适的频率。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分