陈拓 2022/01/12-2022/01/13
1. 概述
- 官方文档
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/storage/sdmmc.html
- 官方例程
https://github.com/espressif/esp-idf/tree/bbe8aabca0/examples/storage/sd_card
有sdmmc和sdspi两个例程,我们使用sdmmc:
国内镜像:
https://gitee.com/EspressifSystems/esp-idf/tree/master/examples/storage/sd_card/sdspi
- 说明
此示例演示如何将SD卡与ESP设备一起使用。示例执行以下步骤:
1. 使用“all-in-one”esp_vfs_fat_sdspi_mount函数:
1) 初始化SDSPI外围设备
2) 探测并初始化连接到SPI总线的卡(DMA通道1、MOSI、MISO和CLK线、芯片特定SPI主机id)
3) 使用FATFS库安装FAT文件系统(如果无法安装文件系统,则使用格式化卡)
4) 在VFS中注册FAT文件系统,以使用C标准库和POSIX函数
2. 打印有关卡的信息,例如名称、类型、容量和支持的最大频率。
3. 使用fopen创建一个文件,并使用fprintf写入该文件。
4. 重命名该文件。重命名之前,请使用stat函数检查目标文件是否已存在,并使用unlink函数将其删除。
5. 打开重命名的文件进行读取,读回该行,并将其打印到终端。
此示例支持SD(SDSC、SDHC、SDXC)卡。
2. 硬件
我们使用ESP32-CAM开发板,因为上面带了tf卡插槽。
- 管脚定义
ESP32-CAM开发板上面的模组ESP32-S与ESP32-WROOM-32相比,除了天线形式有差异,其他部分都一样。ESP32-S模组上有两种天线形式(IPEX天线或板载天线),用户在使用时通过0欧姆跳接电阻二选一,默认使用板载天线。
- TF(SD)卡与ESP32的连接
3. 开发环境
《Win10启用Linux子系统安装Ubuntu》
https://blog.csdn.net/chentuo2000/article/details/112131624
《用乐鑫国内Gitee镜像搭建ESP32开发环境》
https://blog.csdn.net/chentuo2000/article/details/113424934
4. 构建项目
- 复制官方例程
将官方例子项目复制到ESP-IDF开发工具之外,更名为esp32_sdmmc:
cp -r ~/esp/esp-idf/examples/storage/sd_card/sdmmc ~/esp/esp32_sdmmc
cd ~/esp/esp32_sdmmc
- 项目树
- 刷新esp-idf环境
get_idf
- 配置项目
idf.py menuconfig
在SD Card Example menu菜单下配置:
选择Format the card if mount failed。
如果安装失败就格式化卡。
保存,退出。
- 编译项目
idf.py build
- 烧写项目
连接设备时我PC将USB-SERIAL识别为COM3。
idf.py -p /dev/ttyS3 -b 115200 flash
5. 示例输出
在PC上将TF卡格式化成FAT32文件系统,将TF卡插入插槽。
- 查看串口输出
- 在PC上查看保存的文件
- 用记事本打开FOO.TXT文件