用STM32F103完成对SD卡的数据读取

目录

SD卡协议原理

STM32+SD卡 的系统原理图设计

具体原理

代码

所用软件及硬件:

成果

参考文献


SD卡协议原理

功能
SD卡是存储卡,它的功能就是存储。

分类
SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC卡,如下:

容量

命名

简称

0~2G

Standard Capacity SD Memory Card

SDSC或SD

2G~32G

High Capacity SD Memory Card

SDHC

32G~2T

Extended Capacity SD Memory Card

SDXC

硬件结构
SD卡外形和接口图如下图所示:

驱动SD卡工作的接口是SPI 或者 SDIO 口,引脚分布如下:

主机与SD卡的硬件连接图:

工作原理
要驱动SD卡工作,主要涉及两个步骤。

第一个步骤是SD卡的识别过程。

第二个步骤是对SD卡进行读写过程,即主机控制器和SD卡之间进行数据传输的过程。

要使SD卡能正常工作,一是要给SD卡供给稳定的电压,二是要SD卡按用户规定的方式工作。这两项工作的实现,都是主机控制器通过给SD卡发送控制命令来实现的。

主机(SDIO控制器)要驱动SD卡工作,要使用许多的命令,包括应用层命令ACMD 和 通用命令 CMD. 主机(SDIO控制器)把命令发送给SD卡,SD卡会作出回应,这里的回应叫做响应,响应命令分为6类,分别是R1、R1b、R2、R3、R6、R7。

主机(SDIO控制器)给SD卡发送命令之后,SD卡会作出响应,响应中包含主机(SDIO控制器)需要的数据,这些数据有SD的信息,容量,和存储数据等等。

上面已经提到了,SD卡工作,主要是识别和数据传输,它的识别过程有些复杂,写代码的时候,可以参考协议给的初始化流程图。数据传输包括读和写,单字节和多字节读写。下两节描述识别初始化流程图和数据读写时序图。
 

STM32+SD卡 的系统原理图设计

具体原理

SD 卡系统定义了两种通信协议:SD 和 SPI 主机系统可以选择任意一种。

当收到 reset 命令的时候,SD 卡通过主机的信息来决定 使用何种模式,并且之后的通讯都会使用相同的模式。

SD 卡的 SPI 实现使用了 SD 模式相同的命令。SD 卡 SPI 接口同市场上现有的 SPI 主 机兼容。

同其他 SPI 设备一样,SD 卡的 SPI 信道有以下 4 个信号:

CS: 主机到卡的片选(chip select)信号

CLK: 主机到卡的时钟信号

DataIn: 主机到卡的数据信号

DataOut: 卡到主机的数据信号

另一个 SPI 的通用特点是字节传输,这也是卡的实现。所有的数据都是字节(8 bit)的 整数倍,并且直接总是对齐 CS 信号

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

SD 卡系统(host &card)定义了两种操作模式:

卡识别模式 在复位后,查找总线上的新卡的时候,主机会处于“卡识别模式”。卡在复位后会处于 识别模式,直到收到 SEND_RCA(CMD3)命令.

数据传输模式 当 RCA 第一次发布后,卡会处于“数据传输模式”。主机会在总线上所有的卡都被识别 后进入这个模式

SD协议其它方面可参考相关资料。
 

代码

参考博客STM32用cube配置FATFS模式下SPI读写SD卡_Drive World的博客-CSDN博客

其代码可以直接用,但是需要改动

改动如下

数组的第一位起始值是0 第二位起始值是1 那个加法那里应该是把第一位+0 0+0=0 第二位+1 1+1=2依次循环,得到从01-11的序号

所用软件及硬件:

芯片stm32f103c8t6

usb转ttl模块(因为用串口烧录,且要用串口进行发送信息)

SD卡模块(这里用的是Micro SD模块SPI接口)

SD卡及读卡器

stm32f103c8t6与此SD卡模块的接线如下,由于线多杂乱,就不拍实物图了。

stm32f103c8t6    SD卡
PA4    SDCS
PA5    SCK
PA7    MOSI
PA6    MISO
VCC    VCC
GND    GND
将程序烧录之后按照连线即可

成果

连线

打开野火多功能助手查看

 

参考文献

(7条消息) STM32F103通过SPI完成对SD卡的数据读取(fat文件模式)_diyu-CSDN博客

(7条消息) 简述SD卡的工作原理(四)_happygrilclh的博客-CSDN博客_sd卡原理

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值