STM32F103完成对SD卡的数据读取

目录

一、SD卡协议

1.简述

2.接口

3.SD卡初始化(SPI模式)

 二、实现

 三、总结

四、参考文献


一、SD卡协议

1.简述

很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有 U 盘,FLASH 芯片,SD 卡等。他们各有优点,综合比较,最适合单片机系统的莫过于 SD 卡了,它不仅容量可以做到很大(32GB 以上),支持 SPI/SDIO 驱动,而且有多种体积的尺寸可供选择(标准的 SD 卡尺寸,以及 TF 卡尺寸等),能满足不同应用的要求。
只需要少数几个 IO 口即可外扩一个高达 32GB 以上的外部存储器,容量从几十 M 到几十G 选择尺度很大,更换也很方便,编程也简单,是单片机大容量外部存储器的首选。

2.接口

SD卡可以在SD总线模式SPI总线模式下运行,通常可以使用SDIO总线或者SPI对SD进行驱动;

下面主要以micro SD为例,就SDIO模式和SPI模式做简单做一下介绍;

microSD引脚输出,SD模式

引脚引脚名称信号功能
1DAT2数据位2
2CD / DAT3卡检测/数据位3
3CMD命令行
4Vdd电源电压2.7v / 3.6v
5Clk时钟
6VS
7DAT0数据位0
8DAT1数据位1

microSD引脚输出,SPI模式

引脚引脚名称信号功能
1NC没有连接
2/CS片选
3DI主输出/从属(MOSI)
4Vdd电源电压2.7v / 3.6v
5Clk时钟
6Vss
7DO主进/从出(MISO)
8RSV已预留

3.SD卡初始化(SPI模式)

SPI操作模式下:在SD卡收到复位命令时,CS为有效电平(低电平),则SPI模式被启用,在发送CMD之前要先发送74个时钟,64个为内部供电上升时间,10个用于SD卡同步;之后才能开始CMD操作,在初始化时CLK时钟不能超过400KHz。

1、初始化与SD卡连接的硬件条件(MCU的SPI配置,IO口配置);

2、上电延时(>74个CLK);

3、复位卡(CMD0),进入IDLE状态;

4、发送CMD8,检查是否支持2.0协议;

5、根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等);

6、取消片选,发多8个CLK,结束初始化

这样我们就完成了对SD卡的初始化,注意末尾发送的8个CLK是提供SD卡额外的时钟,完成某些操作。通过SD卡初始化,我们可以知道SD卡的类型(V1、V2、V2HC或者MMC),在完成了初始化之后,就可以开始读写数据了。

SD 卡系统(SPI 模式)总线拓扑结构

image-20211220205515786

 二、实现

代码

网上有完整的代码

完整工程代码如下(hal库版本)
链接:百度网盘 请输入提取码
提取码:276d

 连线

stm32SD卡模块
PA4SDCS
PA5SCK
PA7MOSI
PA6MISO
VCCVCC
GNDGND

注意:stm32f103c8t6芯片以及SD卡模块都要用5V驱动

编译、烧录

打开串口助手

结果如下

 三、总结

打开串口接受时,要多等一会才能显示SD卡初始化成功

四、参考文献

STM32用cube配置FATFS模式下SPI读写SD卡.pdf

 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作 - 柚子社区 (uzshare.com)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值