【esp32 学习笔记】让SD卡发光发热~

news/2024/10/5 3:29:52

原理图:

图 SD卡部分

图 MCU中与SD卡相关的接口

连接关系如下:

  • [ESP32 IO26 – CS MICROSD]
  • [ESP32 IO23 – MOSI(DI) MICROSD]
  • [ESP32 IO19 – MISO(DO) MICROSD]
  • [ESP32 IO18 – SCK MICROSD]
  • [ESP32 GND – GND MICROSD]
  • [3.3V – VCC MICROSD]

 

软件:

我们将使用SD卡库用于沟通。您可以在此处下载:

https://github.com/nhatuan84/esp32-micro-sdcard

下载后,将其解压缩并将解压缩的文件夹复制到Arduino文件夹下的libraries文件夹。

这个库提供了一些类和接口:

SD.begin(uint8_t cs,int8_t mosi,int8_t miso,int8_t sck):使用SPI引脚初始化库

打开文件:

SD.open(filename,FILE_WRITE):打开文件进行写入

SD.open(filename):打开文件进行读取

SD.open(“/”):打开sdcard at root“/”

打开遍历目录:

openNextFile():遍历目录

name():获取文件名或目录

isDirectory():检查条目是否为目录

读写文件&获取文件属性:

size():获取文件大小

close():关闭打开的条目

println(文本):将文本写入打开的文件

available():检查可用的数据reading

read():如果数据可用则读取数据

close():关闭打开的文件

以下是相应的代码:

 

/*******************************************************ESP32 测试SD卡功能:对SD卡进行文件的写&读操作引脚:GPIO26 -> CS  GPIO14 -> MOSI(DI) GPIO12 -> MISO(DO) GPIO27 - SCK *******************************************************/
#include  
#include File root;void setup()
{Serial.begin(115200);Serial.print("Initializing SD card...");
/*初始化SD库SPI引脚*/ if (!SD.begin(26, 14, 12, 27)) {Serial.println("initialization failed!");return;}Serial.println("initialization done.");
/*从根目录root“/”*/ root = SD.open("/");if (root) {    printDirectory(root, 0);root.close();} else {Serial.println("error opening test.txt");}/*打开“test.txt”写入*/ root = SD.open("test.txt", FILE_WRITE);/*如果成功打开 - > root!= NULL 然后写字符串“Hello world!”*/ if (root) {root.println("Hello world!");root.flush();/*关闭文件 */root.close();} else {/* 如果文件打开错误,则打印错误 */Serial.println("error opening test.txt");}delay(1000);/*写完后再重新打开文件并读取它 */root = SD.open("test.txt");if (root) {    /* 从文件中读取,直到其中没有其他内容 */while (root.available()) {/* 读取文件并打印到串口监视器*/Serial.write(root.read());}root.close();} else {Serial.println("error opening test.txt");}Serial.println("done!");
}void loop()
{
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

网络编程练习题---利用cJSON库对服务器返回的JSON格式数据完成解析

利用HTTP协议向聚合数据API发送请求,并利用cJSON库对服务器返回的JSON格式数据完成解析目录题目注意事项实现代码结果展示相关接口指引 题目利用某些平台(聚合API、百度AI、科大讯飞API)的API接口,利用HTTP协议向服务器发送请求,并接受服务器的响应,要求利用cJSON库对服务…

嵌入式Linux中的LED驱动控制(续)

前面的实例实现了在野火STM32MP157开发板上对三个LED灯的控制,这里来讨论一下该驱动程序的具体实现方式。由于实例使用的是STM32MP157这款芯片,所以先来看一下与该芯片端口操作相关的寄存器。 先看端口模式寄存器MODER,该类型的寄存器在STM32MP157中有11个,即x的值从A到K。…

通讯协议转换Modbus转Profinet网关

Modbus转Profinet网关是工业通信转换设备,能够实现Modbus协议与Profinet协议之间的有效转换和稳定传输。通过该网关,工业设备之间可以实现数据交换和通信,提高生产效率和智能化程度。支持Modbus RTU主从站。此外,Modbus转 Profinet网关自带网络和串口,支持485/232接口Modb…

python栈帧沙箱逃逸

python栈帧沙箱逃逸 一、生成器 生成器(Generator)是 Python 中一种特殊的迭代器,它可以通过简单的函数和表达式来创建。生成器的主要特点是能够逐个产生值,并且在每次生成值后保留当前的状态,以便下次调用时可以继续生成值。这使得生成器非常适合处理大型数据集或需要延迟…

spring-1-IOC、创建bean的方式、创建bean的过程

1.背景 IOC(Inversion of Control,控制反转) 控制反转是一种设计原则,它将对象的创建和管理责任从应用代码中移交给容器。 在Spring中,IOC容器负责管理应用中的所有对象,包括它们的生命周期和相互之间的依赖关系。 IOC的主要目的是为了减少代码之间的耦合,使代码更加模块…

11-CSS定位

CSS定位01 CSS定位概念理解 01 标准流布局概念的理解02 position属性02 相对定位 依然在标准流中 应用场景: 在不影响其它元素的情况下,对当前元素进行微调 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><met…

Combining Recurrent, Convolutional, and Continuous-time Models with Linear State-Space Layers

目录概符号说明LSSL和其它方法的联系代码Gu A., Johnson I., Goel K., Saab K., Dao T., Rudra A., and Re C. Combining recurrent, convolutional, and continuous-time models with linear state-space layers. NeurIPS, 2021.State space representaion-wiki.概 Mamba 系列…

堆基础知识

arenachunk通俗地说,一块由分配器分配的内存块叫做一个 chunk,包含了元数据和用户数据。具体一点,chunk 完整定义如下: struct malloc_chunk {INTERNAL_SIZE_T mchunk_prev_size; /* Size of previous chunk (if free). */INTERNAL_SIZE_T mchunk_size; …