sd卡的读写

转载 2012年03月28日 15:37:37

一、概述

SD卡全称为 Secrue Digital Memory Card,具有轻巧、可加密、传输速度高、适用于手持设备使用等优点。

二、总线接口

SD需要高速读写,同时也要使手持等嵌入式设备能方便使用,特设有两个访问接口中:SD模式接口SPI接口。SD卡在上电初期,卡主控通过检测引脚1(DAT3)来决定使用SD模式还是SPI模式。当此脚接50KOhm上拉电阻时,卡进入SD模式;当此脚为低电平,卡则工作于SPI模式。

SD引脚

SD模式

SPI模式

1

DAT3

CS

2

CMD

DI

3

VSS

VSS

4

VDD

VDD

5

CLK

SCLK

6

VSS

VSS

7

DAT0

DO

8

DAT1

Resvered

9

DAT2

Resvered

表1:SD卡接口定义

1、SPI接口

SPI接口是为嵌入式和手持设备准备的,只使用普通的三线制SPI总线,即可对卡进行一般的慢速的读写等操作。

<!--[if !vml]-->图略<!--[endif]-->

图一:SPI总线

如上图,由读卡器到卡的数据,在每个时种的上升沿把DO的数据锁存到卡主控,而卡的数据则在每个CLK的上升沿把DI的数据读入读卡器。

三、总线协议

SD卡命令共分为12类,分别为class0到class11,不同的卡主控根据其功能,支持不同的命令集。主要如下:

class0:卡的识别、初始化命令集。

class2:读卡命令集

class4:写卡命令集

class7:卡的锁定,解锁功能命令集

SD卡只有唯一的主机,所有命令是由主机发出。总线上可传输三种类型数据,分别是命令帧、响应、数据。

命令帧:由总线上唯一的主机发出,由设备响应并执行。

响应:指设备响应主机的命令。

数据:指由主机传给设备,或由设备传给主机的数据实体。

<!--[if !vml]-->图略<!--[endif]-->

如上图,命令帧一共由48bit组成,其中起始位固定为0,结束位固定为1。每个命令最后1字节包含7bit的CRC校验,第一字节为的另外7bit为命令码,中间的32bit为命令参数。

一个完整的命令由命令帧和响应,或命令帧、响应和数据组合而成。

<!--[if !vml]-->图略<!--[endif]-->

图二:Mult Block Read

如上图,主机发出command请求,然后卡返回该命令的respond,如果respond响应为正确,则Host通过读取cmd线状态,等待卡准备好数据;如果cmd为低电平,表示卡busy,busy结束后卡会把cmd线拉高,并且发出start token,随即进入数据传输阶段;数据传输结束后,主机发送结束命令停止命令,传输结束。

四、卡的初始化

上电后,卡处于IDLE状态,主机发送CMD0复位SD Card,然后通过CMD55和ACMD41判断当前电压是否在卡的工作范围内。但如果是MMC卡,则不能识别CMD55,所以可以通过此命令的响应正确与否,判断插入的是MMC卡还是SD卡。

得到正确的响应后,主机可以继续通过CMD10读取SD卡的CID寄存器,通过CMD16设置数据Block长度,通过CMD9读取卡的CSD寄存器。从CSD寄存器中,主机可获知卡容量,支持的命令集等重要参数。

此时,卡已进入了传输状态,主机就可通过CMD17/18和CMD24/25对卡进行读写。

继SD1.1之后又推出了SD2.0,主要特性是支持更大容量。SD1.1中卡容量存放于CSD寄存器中,而由于其规范中相关域的值较小,固最大只能表示2G地址。随着Nand容量的大大提高,SD1.1已经不适合潮流,因而推出了SD2.0。

初始化流程大同小义,只需要CMD0之后再加上CMD8命令的识别。SD1.1不支持CMD8,而SD2.0的CMD8能读到卡的接口信息。如果卡响应CMD8为无效命令,则走SD1.1的流程,可能是SD1.1或MMC。如CMD8响应正确,则很可能是SD2.0了。

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/youyingxingxing/blog/item/5db3d231cd96d6ae5fdf0ef0.html

STM32的简单的SD卡读写(不带文件系统,SPI方式)

待定。
  • u011006705
  • u011006705
  • 2014年04月09日 16:12
  • 4561

读写sd卡的文件

为了更好的存,取应用中的大文件数据,应用程序需要读,写,sd卡上的文件.sd卡大大的扩充手机的存储能力. 读, 写sd卡上的文件 请安如下步骤,进行. 调用Environment的 getExter...
  • blueshell001
  • blueshell001
  • 2016年06月27日 09:56
  • 895

市面常见存储卡的读写速度对比测试

本文选自:原文链接测试环境:测试基于金士顿(kingston)USB 3.0 读卡器(FCR-HS3),接入USB3.0接口。测试软件ATTO Disk Benchmark,版本v2.47。红条示写入...
  • benkaoya
  • benkaoya
  • 2017年04月11日 17:54
  • 2224

ZYNQ系统中实现FAT32文件系统的SD卡读写之三 SDK编程调试

导入到SDK后直接模板生成一个HELLO WORLD项目,之后在XILINX TOOLS-》BOARD SUPPORT PACKAGE SETTING里面设置选择XILFFS。 ...
  • mcupro
  • mcupro
  • 2017年06月24日 19:23
  • 779

STM32 TFT学习笔记——SD卡读写

主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:ST NUCLEO-F303RE TFT型号:2.4英寸,带触摸,SD卡,240*320分辨率,26万色 驱动IC:IL...
  • key123zhangxing
  • key123zhangxing
  • 2015年08月05日 17:31
  • 8299

MSP430 SD卡SPI读写操作(2) —— SD卡SPI操作流程

本节介绍SD卡SPI模式基本操作流程,包括初始化、读和写的相关命令和操作流程。 相关命令和响应的描述请见第一节:MSP430 SD卡SPI读写操作(1) —— SD卡命令 一、SPI模式 二、RE...
  • xinkuokuo
  • xinkuokuo
  • 2016年06月12日 10:31
  • 1494

android检测SD卡读写权限详情

一、解析 做项目遇到了一个棘手的问题,SD卡的读写权限问题。1.android版本在6.0以上版本时,以下代码才有用:if (Build.VERSION.SDK_INT >= 23) { ...
  • huang3513
  • huang3513
  • 2016年11月16日 18:12
  • 1996

Android 外置SDCard读写权限总结

在Android中SD卡的读写权限会经常用到,但由于最近的几个版本对该部分一直在做相应的变动,所以在此做个总结,梳理一下。 主要的权限为:android.permission.READ_EXTERN...
  • u010784887
  • u010784887
  • 2016年12月10日 18:02
  • 7283

读写sd卡时直接拔掉或掉电

在sd卡录像时,有时意外掉电或没有关掉应用程序且卸载就直接拔卡。这时正在进行sd读写操作。轻则数据丢失,重则文件系统破坏。而且破坏的录像文件很有可能将文件头  破坏掉。造成不能正常播放。在实际中,很...
  • xiaobendanlei
  • xiaobendanlei
  • 2013年03月07日 18:46
  • 1474

【译】如何在 Android 5.0 上获取 SD卡 的读写权限

因为最近项目需要,涉及到 SD卡 的读写操作,然而申请 权限只能对 SD卡 进行读操作,而没有写权限,也就是说,Android 在某个版本中对 SD卡 的读写权限进行了限制。后在 Stackov...
  • I_wait_for_you
  • I_wait_for_you
  • 2017年04月19日 14:30
  • 1204
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sd卡的读写
举报原因:
原因补充:

(最多只允许输入30个字)