第23章 SD卡读写实验
第二十三章 SD卡实验
1. SD卡介绍
在嵌入式系统中, 经常需要存储大量的数据和图片, 使用 SD 卡作为大容量存储设备是一个非常好的选择。 比如系统想要存储一天采集的温湿度数据, ESP32自带的存储容量是很小的, 无法保存大容量数据, 此时可使用外部 SD 卡, 通过ESP32 控制将采集的温湿度数据写入到 SD 卡文件内。 又比如, 使用 ESP32 制作一个电子相册或 MP3, 需要读取图片或音乐文件, 依靠 ESP32 自身内存是实现不了的, 此时可使用外部 SD 卡, 通过 ESP32 将图片或音频数据写入到彩屏上显示。
开发板已板载 TF 卡座, 可使用 TF 卡插入使用。 如下: (SD 卡容量大小可任意, 本实验测试使用的是 4G 内存)
ESP32-WROOM-32 可使用 SPI 口与 SD 卡通信, 这在 MicroPython 已集成 SPI模块可直接使用。
SPI 的全称是"Serial Peripheral Interface", 意为串行外围接口。 SPI 是一种高速的, 全双工, 同步的通信总线, 并且在芯片的管脚上只占用四根线, 节约了芯片的管脚, 同时为 PCB 的布局上节省空间, 提供方便, 正是出于这种简单易用的特性, 如今越来越多的芯片集成了这种通信协议。
SPI 接口一般使用 4 条线通信, 事实上只需 3 条线也可以进行 SPI 通信(单向传输时) , 其中 3 条为 SPI 总线(MISO、 MOSI、 SCLK) , 一条为 SPI 片选信号线(CS) 。
ESP32 有两个硬件 SPI 通道允许更高速率传输(到达 80MHz) 。 也可以配置成任意引脚, 但相关引脚要符合输入输出的方向性。 通过自定义引脚而非默认引脚, 会降低传输速度, 上限为 40MHz。 以下是硬件 SPI 总线默认引脚:
id=1 的 HSPI 口已连接到模块 SPI-FLASH, 不要去使用。 因此可使用 id=2 的SPI 与 SD 通信。
2. 硬件设计
本实验使用到硬件资源如下:
-
TF卡模块
-
ESP32 GPIO
SD卡接口电路如下:
从上图可知, SD 卡接口均连接到指定 IO。
本章实验使用 ESP32 的 IO18、 19、 23 和 4 引脚, 将预先准备好的 SD 卡进行格式化为 FAT32 格式, 然后在 SD 卡根目录下新建一个文件夹“EBOOK” , 在该文件夹下在新建一个文本文件“text.txt” 。 然后插到开发板 TF 卡座上即可。
3. 软件设计
3.1 MicroPython函数使用
本实验需要使用到 MicroPython 的 machine 模块来定义 Pin 口和 SPI 初始化。 具体如下:
定义好 SPI 后, 还需要驱动一下 SD 卡。
MicroPython 固件库内集成的 SD 卡模块为固定 IO, 无法修改, 考虑到片选CS 管脚能够更灵活使用, 因此需要我们自己实现, 对于不了解 SD 卡底层和命令的用户来说, 要编写出驱动是困难的。 MicroPython 拥有着庞大的用户群, 自然SD 模块也有开源的代码, 直接拿过来使用即可。
操作 SD 卡, 可以按照 Python 文件相关方法来操作。
3.2 代码分析
#导入Pin模块
import machine, sdcard, os
from machine import SPI, Pin
sd = sdcard.SDCard(SPI(2, sck=Pin(18), mosi=Pin(23), miso=Pin(19)), Pin(4))
os.mount(sd,"/sd")
print(os.listdir("/sd"))
file_name="/sd/EBOOK/text.txt"
f=open(file_name,"w") #打开文件,进行写操作
write_txt="大家好,欢迎使用普中-ESP32开发板,人生苦短,我选Python和MicroPython"
print(f.write(write_txt)) #写入
f.close() #关闭文件
f=open(file_name) #打开文件,进行读操作
read_txt=f.read()
print(read_txt)
f.close() #关闭文件
#程序入口
if __name__=="__main__":
while True:
pass
2024.8.23 第一次修订,后期不再维护
本文作者:hazy1k
本文链接:https://www.cnblogs.com/hazy1k/p/18375236
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步