STM32F103完成对SD卡的数据读取

目录

一、SD卡介绍

1.概述

2.SD模式

3.SD卡读取与写入(SPI模式)

二、 STM32F103完成对SD卡的数据读取

1.代码部分

2.U盘格式化

 3.电路连接

 4.具体实现

三、参考资料


一、SD卡介绍

1.概述

SD存储卡(Secure Digital Memory Card)是一种基于半导体快闪存储器的新一代高速存储设备。SD存储卡的技术是从MMC卡(MultiMedia Card)格式上发展而来,在兼容SD存储卡基础上发展了SDIO(SD Input/ Output)卡,此兼容性包括机械,电子,电力,信号和软件,通常将SD、SDIO卡俗称SD存储卡。

SD卡具有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性,它被广泛地应用于便携式装置上,例如数码相机、平板电脑和多媒体播放器等。

SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域。音乐、电影等多媒体文件都可以方便地保存到SD卡中。

SD卡作为一种新型的存储设备,具有以下特点:

●高存储容量,最常用的容量:8GB、16GB、32GB、128GB、256GB等。

●内置加密技术,适应基于SDMI协议的著作版权保护功能。

●高速数据传送;最大读写速率为100MB/s。

●体积轻小,便于携带,具有很强的抗冲击能力。

2.SD模式

驱动模式:

SD卡有两种驱动模式:SPI模式与SDIO模式。它们所使用的接口信号是不同的。在SPI模式下,只会用到SD卡的4根信号线,即CS、DI、SCLK与DO(分别是SD卡的片选、数据输入、时钟与数据输出)。

传输模式:

SD卡共支持三种传输模式:SPI模式(独立序列输入和序列输出),1位SD模式(独立指令和数据通道,独有的传输格式),4位SD模式(使用额外的针脚以及某些重新设置的针脚。支持四位宽的并行传输)

3.SD卡读取与写入(SPI模式)

 1、发送CMD17;
2、接收卡响应R1;
3、接收数据起始令牌0XFE;
4、接收数据;
5、接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉。
6、禁止片选之后,发多8个CLK;
以上就是一个典型的读取SD卡数据过程。

SD卡的写于读数据差不多,写数据通过CMD24来实现,具体过程如下:
1、发送CMD24;
2、接收卡响应R1;
3、发送写数据起始令牌0XFE;
4、发送数据;
5、发送2字节的伪CRC;
6、禁止片选之后,发多8个CLK;
以上就是一个典型的写SD卡过程。

 

二、 STM32F103完成对SD卡的数据读取

1.代码部分

工程链接:https://pan.baidu.com/s/1c3bl54aSPyamkJ3ZqckmTg 
提取码:hz01

打开工程根据自己需求修改代码

 

 编译生成.hex文件

2.U盘格式化

在烧录之前先将SD卡格式化为FAT32文件模式

 3.电路连接

USB TO TTL STM32F103C8T6
5v 5v
GND GND
RXD A9
TXD A10
STM32F103C8T6 SD卡
5v VCC
GND GND
A4 CS
A5 SCK
A6 MISO
A7 MOSI

连接完毕后如下:(我这里用了两个USB TO TTL,其中一个用来给SD卡模块提供5v电源和接地)

 4.具体实现

把生成的hex文件烧录进芯片

打开串口调试助手 ,打开串口(BOOT0置0,并按下RESET键)

前几次试验只显示mian,应该是因为连接不稳,需要确保连接稳定才能成功

 写入成功后,将SD卡插入电脑,打开生成的文件,如下

三、参考资料

SD卡_百度百科

版权声明:本文为CSDN博主「khhhhz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_57355109/article/details/122144010

生成海报
点赞 0

khhhhz

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

ESP32S2+ES8388移植过程及问题

电路图如下, 有点小瑕疵ES8388_VMID PIN10/19/20电容没有忘加,查资料应该不影响语言输出,可能噪音大,如果能导致不输出请告诉我一下。 ESP32S2管脚映射 这里主

STM32F4最小系统硬件设计

对于硬件工程师来讲,想要入门STM32相关的开发,我想除了深入阅读一下STM32的数据手册外,最实用且有效的方法就是自己实际做一个STM32的最小系统板了。本文将以一个小的STM32F427VG的电路最

HAL 层简介

简介: HAL层又称硬件抽象层,HAL层在Android体系中有着深远的意义,因为Android究竟是完 全开源还是完全不开源的秘密就在这一层·Google将硬件厂商的驱动程序放在这一层&#xff0c