0%

ESP32读写SD卡

使用ESP32-CAM评估版测试SD卡读写

img

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "SD_MMC.h"

// 接口连接如下:
// SD卡 - ESP32
// ------------
// DAT2 - IO12 IO12不能接强上拉,会影响flash
// DAT3 - IO13
// CMD - IO15
// CLK - IO14
// DAT0 - IO2
// DAT1 - IO4

void setup(){
Serial.begin(115200);
Serial.println();

//挂载文件系统
if (!SD_MMC.begin()){
Serial.println("存储卡挂载失败");
return;
}
uint8_t cardType = SD_MMC.cardType();

if (cardType == CARD_NONE){
Serial.println("未连接存储卡");
return;
}
else if (cardType == CARD_MMC){
Serial.println("挂载了MMC卡");
}
else if (cardType == CARD_SD){
Serial.println("挂载了SDSC卡");
}
else if (cardType == CARD_SDHC){
Serial.println("挂载了SDHC卡");
}
else{
Serial.println("挂载了未知存储卡");
}

//打开/建立 并写入数据
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (file){
Serial.println("打开/建立 根目录下 test.txt 文件!");
}

char data[] = "hello world\r\n";
file.write((uint8_t *)data, strlen(data));
file.close();

//重命名文件
if (SD_MMC.rename("/test.txt", "/retest.txt")){
Serial.println("test.txt 重命名为 retest.txt !");
}

//读取文件数据
file = SD_MMC.open("/retest.txt", FILE_READ);
if (file){
Serial.print("文件内容是:");
while (file.available()){
Serial.print((char)file.read());
}
}

//打印存储卡信息
Serial.printf("存储卡总大小是: %lluMB \n", SD_MMC.cardSize() / (1024 * 1024)); // "/ (1024 * 1024)"可以换成">> 20"
Serial.printf("文件系统总大小是: %lluB \n", SD_MMC.totalBytes());
Serial.printf("文件系统已用大小是: %lluB \n", SD_MMC.usedBytes());
}

void loop(){
}

参考链接:

  1. https://blog.csdn.net/Naisu_kun/article/details/88628764