ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义

本代码实现ESP32与SD卡的交互,包括定义SPI引脚、创建自定义SPI类实例、编写WriteFile与ReadFile函数进行文件读写。setup函数初始化串口、SPI、SD卡,向“/test.txt”写入“myfirstmessage”,读取并打印其内容。loop函数留空待扩展。

1. 需要准备的软硬件:

1.1 硬件:

  1. ESP32开发板ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义_第1张图片

  2. SD卡模块(如下图),可以是单独的TF卡模块也可以是集成到TFT屏幕的SD模块,TF卡与SD卡的硬件逻辑是一样,这主里不做区分ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义_第2张图片

  3. SD卡,Arduino 库仅支持 FAT16 和 FAT32 文件系统。 确保您的 SD 卡仅使用这两种格式进行格式化,否则将初始化错误。
    写本文时,在电脑上将SD卡以FAT32格式来格式化
    对于不同卡格式如下:

  • 对于SDSC卡:
    容量介于 16 MB 和 32 MB 之间 - FAT 16
    容量大于32 MB-FAT 16B
  • 对于SDHC卡
    容量小于 7.8 GB- FAT 32
    容量大于 7.8 GB- FAT 32
  • 对于SDXC卡
    exFAT

1.2 软件

  1. Arduino IDE或者在VS Code里的PlatformIO

1.3 连线方式一及代码

1.3.1 连接方式一如下表,本连线方式是用的ESP32的默认SPI接线方式,注意1.1的引脚图里23脚是VSPI MISO, 19脚是VSPI MOSI, 18脚是VSPI CLK 因此在接下来的代码中没有单独定义MISO、MOSI和CLK引脚。

引脚名称 描述 引脚编号
CS Chip Select 5
SCK Clock 18
MISO Master In Slave Out 19
MOSI Master Out Slave In 23

1.3.2 代码一:

/*
  SD Card Interface code for ESP32
  SPI Pins of ESP32 SD card as follows:
  CS    = 5;
  MOSI  = 23;
  MISO  = 19;
  SCK   = 18; 
*/

#include 
#include 

File myFile;
const int CS = 5;

/**
 * @brief 将指定消息写入到文件中。
 * 
 * @param path 指向要写入的文件路径的字符指针。
 * @param message 指向要写入文件的消息的字符指针。
 * 该函数尝试打开指定路径的文件以进行写操作。如果文件成功打开,它将写入给定的消息,
 * 然后关闭文件,并通过串口打印一条完成消息。如果无法打开文件,它将打印错误消息和文件路径。
 */
void WriteFile(const char *path, const char *message){
   
  // 尝试打开文件以写入
  myFile = SD.open(path, FILE_WRITE);
  if (myFile) {
    // 文件打开成功
    Serial.printf("Writing to %s ", path); // 打印正在写入的文件路径
    myFile.println(message); // 写入消息到文件
    myFile.close(); // 关闭文件
    Serial.println("completed."); // 打印写入完成信息
  } 
  else {
    // 文件打开失败
    Serial.println("error opening file "); // 打印错误信息
    Serial.println(path); 

你可能感兴趣的:(ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义)