STM32读写SD卡完整版.doc

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

STM32读写SD卡

STM32读写SD卡

PAGE/NUMPAGES

STM32读写SD卡

3.20SD卡实验

很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有U盘,FLASH芯片,

SD卡等。他们各有优点,综合比较,最适合单片机系统的莫过于SD卡了,它不仅容量可以做

到很大(32Gb以上),而且支持SPI接口,方便移动,有几种体积的尺寸可供选择(标准的SD

卡尺寸,以及TF卡尺寸),能满足不同应用的要求。只需要4个IO口,就可以外扩一个最大

达32GB以上的外部存储器,容量选择尺度很大,更换也很方便,而且方便移动,编程也比较

简单,是单片机大容量外部存储器的首选。

ALIENTKEMiniSTM3开发板就带有SD卡接口,利用STM32自带的SPI接口,最大通信

速度可达18Mbps,每秒可传输数据2M字节以上,对于一般应用足够了。本节将向大家介绍,

如何在ALIENTEKMiniSTM32开发板上读取SD卡。本节分为如下几个部分:

3.20.1SD卡简介

3.20.2硬件设计

3.20.3软件设计

3.20.4下载与测试

295

3.20.1SD卡简介

SD卡(SecureDigitalMemoryCard)中文翻译为安全数码卡,是一种基于半导体快

闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助

理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月

共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快

速数据传输率、极大的移动灵活性以及很好的安全性。

SD卡一般支持2种操作模式:

1,SD卡模式;

2,SPI模式;

主机可以选择以上任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。

SPI模式允许简单的通过SPI接口来和SD卡通信,这种模式同SD卡模式相比就是丧失了

速度。

SD卡的引脚排序如下图所示:

图3.20.1.1SD卡引脚排序图

SD卡引脚功能描述如下表所示:

表3.20.1.1SD卡引脚功能表

SD卡只能使用3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。

注意:在SPI模式下,CS/MOSI/MISO/CLK都需要加10~100K左右的上拉电阻。

SD卡要进入SPI模式很简单,就是在SD卡收到复位命令(CMD0)时,CS为有效电

平(低电平)则SPI模式被启用。不过在发送CMD0之前,要发送74个时钟,这是因为

SD卡内部有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,

之后才能开始CMD0的操作,在卡初始化的时候,CLK时钟最大不能超过400Khz!。

ALENTEKMiniSTM32开发板使用的是SPI模式来读写SD卡,下面我们就重点介绍一

下SD卡在SPI模式下的相关操作。

首先介绍SPI模式下几个重要的操作命令,如下表所示:

296

命令

参数

回应

描述

CMD0(0X00)

NONE

R1

复位SD卡

CMD9(0X09)

NONE

R1

读取卡特定数据寄存器

CMD10(0X0A)

NONE

R1

读取卡标志数据寄存器

CMD16(0X10)

块大小

R1

设置块大小(字节数)

CMD17(0X11)

地址

R1

读取一个块的数据

CMD24(0X18)

地址

R1

写入一个块的数据

CMD41(0X29)

NONE

R1

引用命令的前命令

CMD55(0X37)

NONE

R1

开始卡的初始化

CMD59(0X3B)

仅最后一位有效

R1

设置CRC开启(1)或关闭(0)

表3.20.1.2SPI模式下SD卡部分操作指令

其中R1的回应格式如下表所示:

表3.20.1.3SD卡R1回应格式

接着我们看看SD卡的初始化,SD卡的典型初始化过程如下:

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

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

3、复位卡(CMD0);

4、激活卡,内部初始化并获取卡类型(CMD1(用于MMC卡)、CMD55、CMD41);

5.、查询OCR,获取供电状况(CMD58);

6、是否使用CRC(CMD59);

7、设置读写块数据长度(CMD16);

8、读取CSD,获取存储卡的其他信息(CMD9);

9、发送8CLK后,禁止片选;

这样我们就完成了对SD卡的初始化,这里面我们一般设置读写块数据长度为512个字

节,并禁止使用CRC。在完成了初始化之后,就可以开始读写数据了。

SD卡读取数据,这

文档评论(0)

180****9759 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档