SD卡

一、SD卡接口

SD 卡的接口可以支持两种操作模式:
主机系统可以选择以上其中任一模式, SD 卡模式允许 4 线的高速数据传输。 SPI 模式允许简单通用的 SPI 通道接口, 这种模式相对于 SD 模式的不足之处是丧失了速度。

(1)SD 卡模式

SD 模式针脚定义

注:S:电源供电, I:输入 O:输出 I/O:双向 PP: I/O 使用推挽驱动

SD模式下允许有一个主机,多个从机(即多个卡),主机可以给从机分配地址。主机命令可以是发给指定从机,也可以以广播形式发送。

(2)SPI 模式

SPI模式针脚定义

注:S:电源供电, I:输入 O:输出 I/O:双向 PP: I/O 使用推挽驱动;

   SPI 模式时,这些信号需要在主机端用 10~100K 欧的电阻上拉。

SPI 总线允许通过 2 通道(数据入和出)传输比特数据。 SPI 兼容模式使得 MMC 主机系统通过很小的改动就可以使用SD卡,SPI 模式使用字节传输。

二、SD卡总线

1.SD总线

  SD 总线允许强大的 1 线到 4 线数据信号设置。 当默认的上电后, SD 卡使用 DAT0。初始化之后,主机可以改变线宽。 在混和连接中 Vcc, Vss 和 CLK 的信号连接可以通用。但是,命令,回复,和数据(DAT0~3)这几根线,各个 SD 卡必须从主机分开。

CLK每个时钟周期传输一个命令或数据位。频率可在 0~25MHz 之间变化。 SD 卡的总线管理器可以不受任何限制的自由产生 0~25MHz 的频率。
CMD命令从该 CMD 线上串行传输。一个命令是一次主机到从卡操作的开始。命令可以以单机寻址(寻址命令)或呼叫所有卡(广播命令)方式发送。回复从该 CMD 线上串行传输。一个命令是对之前命令的回答。回复可以来自单机或所有卡。
DAT03数据可以从卡传向主机或副卡。数据通过数据线传输。

SD总线拓扑

2.SPI总线

SPI总线拓扑

三、SD卡电路设计

1.SD总线接口

2.SPI总线接口

四、SD卡总线协议

1.SD总线协议

SD总线上的通信基于命令和位数据流,它们由一个起始位开始,由一个停止位终止;

命令:命令是启动操作的令牌。 一个命令从主机发送到单个SD卡(寻址命令)或所有连接的SD卡(广播命令),命令CMD线上是串行传输。

响应:响应是从被寻址的SD卡发送的令牌,或者从所有连接的卡(同步)发送,作为对先前接收到的主机命令的答复,答复在CMD线上串行传输。

数据:数据可以从卡片传输到主机,反之亦然。,数据通过数据线传输。

2.SPI总线协议

SPI通道是面向字节的, 每个命令或数据块由8个比特位构成,并且与CS信号字节对齐(8个时钟的倍数)。

与SD总线模式一样,SPI模式也是基于命令、响应、数据块的传输。主机与SD卡间的通信全部由主机控制,主机通过CS信号线来开始每个总线的传输。

SD总线模式与SPI总线模式的响应方式有以下三点不同:

(1)选定的卡总是响应命令。

(2)使用八位或十六位响应结构。

(3)当卡遇到数据检索问题时,它将响应一个错误响应(那个替换期望访问的数据块),而不是在SD总线模式下得超时。

时间: 2024-11-14 12:47:48

SD卡的相关文章

制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统

转自网络,供学习记录使用,红色部分是我实验时,这篇文章和网站稍有出入的地方. 目的:制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统 在http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/quickstart/zynq(姑且把这个链接成为链接1吧)链接中找到 图1 点击绿色字体的链接,下载镜像原始文件.这里有不同时期的版本,本说明中选择 图2 下载的原始文件为:2014_R2-

微信网页中上传文件时“只能选择SD卡中的文件”问题

需求描述:在微信网页中上传文件到我们自己的服务器,使用 input  type=file标准控件: <input type="file" name="upfile" id="upfile" > 问题来了:苹果可以顺利上传图片文件的,安卓下每次选择完图片文件之后会弹出提示"只能选择SD卡中的文件"不能上传图片.手机已经设置默认存储为SD卡. 百度搜了一个下午没有结果,微信公众平台更没有答案shiiiit. 最后在cs

Android文件存储往SD卡中写入文件路径出错问题求解。

============问题描述============   因为学习需要  看的老罗的视频  关于数据存储往SD卡写文件的那一部分  几乎完全照办的敲的代码   结果在pad上测试的时候和预想的有区别     本来应该存储到SD卡中的文件结果跑到pad自带内存中去了...   然后我尝试过把路径直接自己手动写  还是一样存到了自带内存中  这到底是为什么啊? 顺带吐槽一下万恶的导师  十一还要我们加班 求大神们指导呀~   国庆节玩的开学哟!!! ============解决方案1======

判断是否有外置SD卡

private static String getDefaultPath(){    boolean isHaveExternalSD = false;    String DefaultPath = "/storage/sdcard0";    File externalSDCard = new File("/storage/sdcard1");    try {        IMountService ms = getMs();        isHaveEx

Linux下安装RaspbePi系统镜像到SD卡

//校验文件是否正确 ~$ sha1sum xxx.zip //解压文件 ~$ unzip xxx.zip //查看SD卡挂载情况 ~$ df -h //卸载SD卡分区(可能有多个) ~$ umount /dev/sdc1 ~$ umount /dev/sdc2 ... //写入镜像 ~$ sudo dd bs=1M if=xxx.img of=/dev/sdc //等待写入完毕即可

Android USB大容量存储时SD卡状态监听(转)

对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有: MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除 MEDIA_CHECKING:表明对象正在磁盘检查 MEDIA_MOUNTED:表明sd对象是

Android sd卡挂载判断

Android区分SD卡是不是现已挂载的方法有哪些?本文介绍了Android区分SD卡是不是现已挂载的方法,触及Android监听方法BroadcastReceiver的有关运用窍门,具有必定参看学习价值,需求的朋友可以参看下 这篇文章实例叙说了Android区分SD卡是否已挂载的方法.现在跟同麦子学院的android开发老师来看看: 供应一个监听方法BroadcastReceiver 设置IntentFilter为: Intent.ACTION_MEDIA_MOUNTED  Intent.AC

[i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统

转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/details/44536447 参照2:http://blog.csdn.net/girlkoo/article/details/44626011 2017-02-04 22:52:54 目录: 本文的目的是,完成一个从sd卡启动的一个纯净版的linux系统移植,其实就是一个很裸的根文件系统,后期有空会试着把

S5pv210——SD卡重入

1:s5pv210启动原理:s5pv210启动的时候首先查看OMpin设置的启动方式,如果设置为SDMMC启动的话,首先从SD的通道1启动,但是通道1连接的是iNand,如果iNand中启动不了, 则从SD卡的通道2启动,sd卡通道2连接外置的sd卡,BL0首先从sd卡的第一扇区中复制16kb到sram中去执行(包括16字节的校验头), 所以BL1所做的事情: (1) 开关置锁 (2) 关看门狗 (3) 开icache (4) 设置栈 (5) 初始化dram (6) 初始化dram以后,在执行s

SD卡中的命令CMD

SD卡中的命令是SD控制器和SD卡之间的桥梁,它封装了SD卡的实现细节,不影响SD卡中FLASH的读写变更. 命令的长度是48位,它的字段如图: SD校准定义的CMD如下: