24.SD卡读写

一. 硬件连接
ESP32有两种使用SD卡的方法,一种是使用SPI接口访问SD卡,另一种是使用SDMMC接口访问SD卡 。Arduino core for the ESP32中SPI方式占用4个IO口,SDMMC方式占用6个IO口,一般来说SDMMC方式速度要比SPI方式快。

1. SPI接线
根据引脚图, 我们很容易的接好SD卡模块的线, 默认IO口连接为:CS - IO5、DI - IO23、SCLK - IO18、DO - IO19;


二. SPI方式的函数
1. SD.begin() //挂载SD卡
bool begin(uint8_t ssPin=SS, SPIClass &spi=SPI, uint32_t frequency=4000000, const char * mountpoint="/sd", uint8_t max_files=5)
if (!SD.begin())
  {
    Serial.print(".");
  }
  Serial.println("SD card Ready!");


2. SD.end() 取消SD卡挂载

void end()


3. SD.cardSize() 获取卡的大小

返回值是个64位数值
Serial.printf("SD.cardSize = %lld \r\n", SD.cardSize());


4. SD.cardType() 获取卡的类型

返回值:sdcard_type_t类型
该类型定义如下:


返回值 枚举值 说明
0 CARD_NONE 未连接存储卡;
1 CARD_MMC 卡;
2 CARD_SD sd卡,最大2G;
3 CARD_SDHC sdhc卡,最大32G;
4 CARD_UNKNOWN 未知存储卡;
Serial.printf("SD.cardType = %d \r\n", SD.cardType());


5. SD.exists("/test.txt") 是否存在文件


6. SD.mkdir("/doc1"); 创建目录;


7. SD.rmdir("/doc1"); 删除目录


8. SD.remove("/test.txt"); 删除文件


9. SD.open 创建/打开文件

和之前的SPIFFS一样
File file = SD.open("/test.txt", FILE_WRITE);


10. SD.rename("/doc1","/doc"); 重命名


三. 示例

#include <Arduino.h>
#include "SD.h"
 
void setup()
{
  Serial.begin(115200);
  if (!SD.begin())
  {
    Serial.print(".");
  }
  Serial.println("SD card Ready!");
  Serial.printf("SD.cardSize = %lld \r\n", SD.cardSize());
  Serial.printf("SD.totalBytes = %lld \r\n", SD.totalBytes());
  Serial.printf("SD.usedBytes = %lld \r\n", SD.usedBytes());
  Serial.printf("SD.cardType = %d \r\n", SD.cardType());
  Serial.printf("is there /test.txt? :%d \r\n", SD.exists("/sd/doc1/test.txt"));
  Serial.println(SD.mkdir("/doc1"));
  Serial.printf("is there /doc1? :%d \r\n", SD.exists("/doc1"));
  Serial.printf("is there /test.txt? :%d \r\n", SD.exists("/test.txt"));
  File file = SD.open("/test.txt", FILE_WRITE);
  Serial.printf("is there /test.txt? :%d \r\n", SD.exists("/test.txt"));
  file.printf("hello!!!");
  file.close();
  file = SD.open("/test.txt", FILE_READ);
  Serial.println(file.readString());
  file.close();
  Serial.printf("is there /doc1/test1.txt? :%d \r\n", SD.exists("/doc1/test1.txt"));
  File file2 = SD.open("/doc1/test1.txt", FILE_WRITE);
  Serial.printf("is there /doc1/test1.txt? :%d \r\n", SD.exists("/doc1/test1.txt"));
  file2.printf("hello!!!");
  file2.close();
  file2 = SD.open("/test.txt", FILE_READ);
  Serial.println(file2.readString());
  file2.close();
  SD.end();
}
 
void loop()
{
}

————————————————
链接:https://blog.csdn.net/finedayforu/article/details/108727110

 


评论:
相关文章
ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。


ESP32-FreeRTOS:大量FreeRTOS实例,供参考学习

ESP32-FreeRTOS项目提供了丰富的示例,帮助开发者快速掌握ESP32的硬件功能和FreeRTOS实时操作系统。


物联网项目开发实战-第3章-自动浇花项目迭代3

本节我们在迭代二的基础上使用四位数码管和OLED显示屏显示相关交互信息。


物联网项目开发实战-第3章-自动浇花项目迭代2

本节我们在迭代一的基础上增加采集土壤湿度数据,并根据湿度数据来决定是否自动进行浇水动作。

玩转 ESP32 + Arduino

作者:finedayforu@CSDN   共24讲

玩转 ESP32 + Arduino