ESP32-S3 控制 SD卡

ESP32-S3 控制 SD 卡实验

SD 卡模块是常用的外部存储设备,可以用来存储数据日志、文本文件或多媒体文件。

本文介绍如何使用 ESP32-S3 操作 SD 卡,实现文件的写入与读取。


一、实验名称

SD卡实验


二、接线说明

SD卡模块 ESP32-S3开发板
DAT0 (MISO) 40
CMD (MOSI) 38
CLK (SCK) 39
CD/DAT3 (CS) 1

注意事项

  1. SD 卡模块采用 SPI 接口与 ESP32-S3 通信。
  2. 在接线时确保电源正确,一般模块使用 3.3V 或 5V 均可,取决于模块设计。

三、实验现象

程序下载成功后,ESP32-S3 将会:

  1. 在 SD 卡根目录下创建 test.txt 文件。
  2. 向文件写入内容 "testing 1, 2, 3."
  3. 重新读取文件内容,并在串口控制台输出。

四、完整代码示例

#include "public.h"
#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  Serial.begin(115200);
  Serial.print("Initializing SD card...");

  // 使用 HSPI 总线
  SPIClass spi = SPIClass(HSPI);
  spi.begin(39 /* SCK */, 40 /* MISO */, 38 /* MOSI */, 1 /* SS */);

  // 初始化 SD 卡
  if (!SD.begin(1 /* SS */, spi, 80000000)) {
    Serial.println("initialization failed!");
  } else {
    Serial.println("initialization done.");
  }

  // 打开文件并写入内容
  myFile = SD.open("/test.txt", FILE_WRITE);
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    myFile.close();
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

  // 重新打开文件并读取内容
  myFile = SD.open("/test.txt");
  if (myFile) {
    Serial.println("test.txt content:");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  } else {
    Serial.println("error opening test.txt");
  }
}

void loop() {
  // 此实验无需循环操作
}

五、代码讲解

  1. SPI 初始化
SPIClass spi = SPIClass(HSPI);
spi.begin(39, 40, 38, 1);
  • 使用 ESP32-S3 的 HSPI 总线,指定 SCK、MISO、MOSI 和 CS 引脚。
  1. SD 卡初始化
SD.begin(1, spi, 80000000);
  • 初始化 SD 卡,传入片选引脚、SPI 对象和时钟频率。
  1. 文件写入
myFile = SD.open("/test.txt", FILE_WRITE);
myFile.println("testing 1, 2, 3.");
myFile.close();
  • 打开或创建文件 test.txt 并写入字符串,写入完成后关闭文件。
  1. 文件读取
myFile = SD.open("/test.txt");
while (myFile.available()) {
  Serial.write(myFile.read());
}
myFile.close();
  • 重新打开文件并逐字节读取内容,通过串口输出。

六、实验效果

  • SD 卡根目录成功生成 test.txt 文件。
  • 文件中包含 "testing 1, 2, 3."
  • 串口控制台显示文件内容,验证写入和读取功能正常。

七、进阶应用

  1. 数据日志
    可将传感器采集的数据实时写入 SD 卡,形成日志文件。

  2. 多文件操作
    在不同文件中存储不同类型的数据,如温度、湿度、时间戳等。

  3. 与显示屏联动
    结合 OLED 或 TFT 显示屏,将 SD 卡内容实时显示在屏幕上。


八、总结

通过本实验,你学会了:

  • ESP32-S3 使用 SPI 接口操作 SD 卡
  • 文件的创建、写入与读取方法
  • 使用 SD 卡进行数据存储和信息输出

这是构建数据记录、智能日志系统或多媒体项目的重要基础。

posted @ 2025-08-16 15:00  jeikerxiao  阅读(325)  评论(0)    收藏  举报