STM32F103完成对SD卡的数据读取(fat文件模式)

一、关于SD卡

1.简介

SD(Secure Digital Memory Card)卡与U盘生在同年,可以称为表兄弟,也是一种基于半导体快闪记忆器(Nand Flash)的记忆设备,只是接口不同,为9 Pin接口。SD卡家族有三个兄弟,他们除了外表尺寸不同外,实质上完全一样。普通SD卡标准为24mm×32mm×2.1mm,MiNi SD卡标准为20mmX21.5mmX1.4mm,Micro SD卡(T-Flash卡)标准为15mm x 11mm x1mm 。
在这里插入图片描述
图 SD/Mini SD/Micro SD

SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制,2000年成立了SD卡协会,东芝一直走在SD卡最前沿。近年来,SD卡逐渐在卡的混战中胜出,广泛应用在数码相机、GPS、DV等媒体设备中。

随着数码产品体积的要求,2003年SD卡组织发布了MiNi SD卡标准,配有卡套可转接成标准SD卡接口,Mini SD卡组成、接口及功能与SD卡完全相同,但面积为SD卡的37%。MiniSD卡还未及普及开来,就被随后出来的Micro SD卡所取代。

2004年由Motolola和Sandisk共同创造的T-Flash卡,以更小的体积受到手机的青睐,之后被SD卡组织纳入SD卡系列,并更名为Micro SD。该卡15mm x 11mm x1mm的体积,约为SD卡的1/4,只有指甲大小,当之无愧的成为现时最小的存储卡。该卡一经面市,立即受到手机等更高空间要求的数码产品关注,其中Motolola为首家采用该卡的手机公司。

  • 从技术层面看,SD卡、Mini SD卡和Micro SD卡的构成是完全一样的,主控制器芯片往往共用同一颗,只是外形物理尺寸不同而已。Mini和Micro通过转接卡套可以直接当普通SD卡使用,转接卡套只是单纯物理连接线上的转换。
  • 从封装技术上看,SD卡最为简单,内部采用封装后的标准芯片贴片生产,然后使用超声波塑封外壳,而Micro SD卡受限于体积,内部主控和Nand Flash均采用晶圆体绑定后直接封装成卡,因此加工难度较大,大部分都在台湾封装生产。
  • 从市场容量看,Micro SD卡的市场容量要远远大于SD卡,因为其直接和手机量绑定。

2.SD卡的寄存器

SD卡总共有8个寄存器,用于设定或表示SD卡信息。
这些寄存器只能通过对应的命令访问,SDIO定义64个命令,每个命令都有特殊意义,可以实现某一特定功能,SD卡接收到命令后,根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作。

名称bit宽度概述
CID128卡识别号(Card identification number):用来识别的卡的个体号码(唯一的)
RCA16相对地址(Relative card address):卡的本地系统地址,初始化时,动态地由卡建议,主机核准
DSR16驱动级寄存器(Driver Stage Register):配置卡的输出驱动
CSD128卡的特定数据(Card Specific Data):卡的操作条件信息
SCR64SD配置寄存器(CD Configuration Register): SD卡特殊特性信息
OCR32操作条件寄存器(Operation conditiongs register)
SSR512SD状态(SD Status): SD卡专有特征的信息
CSR32卡状态(Card Status):卡状态信息

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卡过程。

二、实验操作

1.仪器

  1. STM32F103C8T6
  2. SD卡模块
  3. USB TO TTL
  4. 串口调试助手
  5. 杜邦线

2.代码

代码是参考其他大神的
STM32用cube配置FATFS模式下SPI读写SD卡
链接:https://pan.baidu.com/s/1wUKjH54Kc0Ne6lUNM-leoQ
提取码:xlp5

笔者还写不出完整的SD卡读取程序,借用来学习,并做了些修改:
在这里插入图片描述

在这里插入图片描述

编译运行生成hex文件
在这里插入图片描述

3.连线

连线是基于代码来连接的,如下所示

STM32SD卡模块
PA4SDCS
PA5SCK
PA7MOSI
PA6MISO
5VVCC
GNDGND
STM32USB TO TTL
5V5V
GNDGND
PA9RXD
PA10TXT

在这里插入图片描述
在这里插入图片描述

注意:

  • 接线很不稳!
  • 确保SD卡格式化成FAT文件模式(sd卡插入读卡器连接电脑)

在这里插入图片描述

4.烧录程序

用mcuisp烧录hex进入单片机
在这里插入图片描述

5.串口调试助手初始化并写入文件

如果连接稳定的话,如果连接稳定的话,如果连接稳定的话,如果连接稳定的话,如果连接稳定的话,(重要的事情说五遍,出现的初始化失败,或者只显示mian都是因为连接不稳!)
初始化成功的显示如下:
在这里插入图片描述

6.sd卡里hello文档的确认

sd卡插入读卡器连接电脑,打开sd卡里的hello文档,如果前面操作一切正确,并且代码没有出错,正确结果就如下所示:
在这里插入图片描述

三、总结

本次对SD卡的数据读取实验,回过来看并不困难,主要问题就是连线要接稳,代码要写对!

四、参考资料

  1. 深入理解SD卡:协议
  2. 关于SD卡的故事
  3. 掌握SD卡协议原理,用STM32F103完成对SD卡的数据读取(fat文件模式)
  4. STM32之完成对SD卡的数据读取
  5. STM32用cube配置FATFS模式下SPI读写SD卡
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103C8T6是一款常用的32位微控制器芯片,它具有强大的性能和丰富的功能,并且可广泛应用于各种嵌入式系统中。SD卡是一种常见的存储介质,它具有小巧、便携和容量大等优点。FAT文件系统是一种常用的文件系统,广泛应用于各种嵌入式设备中,包括SD卡。 在STM32F103C8T6中使用SD卡FAT文件系统可以实现嵌入式设备的数据存储和读取功能。首先,我们需要将SD卡STM32F103C8T6进行连接,通过SPI或SDIO总线接口进行数据通信。然后,我们需要在嵌入式系统中添加FAT文件系统的支持,以便能够对SD卡进行格式化和文件读写操作。 在使用SD卡之前,我们需要初始化SD卡接口,并进行SD卡的识别和初始化。然后,我们可以对SD卡进行格式化操作,以便在SD卡中创建FAT文件系统。格式化完成后,我们可以使用文件系统的操作函数对SD卡中的文件进行读写操作。例如,我们可以使用文件操作函数创建、打开、读取和写入文件,并可以进行文件的复制、删除和重命名等操作。 在使用STM32F103C8T6和SD卡+FAT文件系统时,需要注意以下几点。首先,SD卡的连接要正确可靠,并确保SD卡的供电电压和信号电平与STM32F103C8T6兼容。其次,需要合理管理SD卡的存储空间,避免溢出和数据丢失。此外,还需要正确处理SD卡的插入和拔出事件,以免对SD卡造成损坏。 总之,通过在STM32F103C8T6上使用SD卡FAT文件系统,我们可以实现嵌入式设备的数据存储和读取功能,从而提高设备的可扩展性和实用性。这种组合应用在物联网、工业控制和智能家居等领域有着广泛的应用前景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值