一、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总线模式下得超时。

SD卡的更多相关文章

  1. android计算每个目录剩余空间丶总空间以及SD卡剩余空间

    ublic class MemorySpaceCheck { /** * 计算剩余空间 * @param path * @return */ public static String getAvail ...

  2. Android将应用调试log信息保存在SD卡

    转载:http://blog.csdn.net/way_ping_li/article/details/8487866 把自己应用的调试信息写入到SD卡中. package com.sdmc.hote ...

  3. SD卡的监听

    摘要:在一般应用中,如果需要对占用空间比较大的文件操作,需要监听SD卡的状态,Android中对SD卡的监听状态操作步骤如下: 一.创建一个类继承于BroadcastReceiver public c ...

  4. Android SD卡存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SDcard_store.html 一 概念 SD卡存储空间比较大,当需要存取较大的 ...

  5. 关于手机的内置SD卡与外置SD卡

    对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Envir ...

  6. Android从网络某个地址下载文件、写入SD卡

    首先创建一个HttpDownloader类,获取下载文件的网络地址,将文件下载下来以String流的方式返回: public String download(String urlStr){ //url ...

  7. android setDestinationInExternalPublicDir 下载到SD卡根目录

    一:setDestinationInExternalPublicDir(“Trinea”, “MeiLiShuo.apk”);表示设置下载地址为sd卡的Trinea文件夹,文件名为MeiLiShuo. ...

  8. STM32 Unicode 与 GBK 转换 .bin文件放到SD卡是啥意思

    2个数组 : }; }; 一个是Unicode 编码,一个是GBK编码: 用c2b软件转成.bin 二进制文件放到SD卡里: SD卡放入字库 .FON STM32 代码: 代码中SD卡字库和二进制路径 ...

  9. RAM、DRAM、SD卡

    catalogue . ROM.RAM.DRAM.SRAM和FLASH的区别 . 内存工作原理 . DRAM基本结构与原理 . SD卡基本结构与原理 1. ROM.RAM.DRAM.SRAM和FLAS ...

  10. 不从SD卡启动树莓派2

    本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...

随机推荐

  1. 解决Navicat远程连接MySQL出现 10060 unknow error

    前言:今天想远程连接一下自己服务器上的MySQL,用的用的软件是Navicat,服务器上的MySQL版本为5.7 第一次连接的时候就出意外了 大概意思是 无法连接MySQL服务,解决步骤如下 第一:首 ...

  2. JavaScript与jQuery关于鼠标点击事件

    即实现鼠标点击其中一个菜单发生样式的改变,当点击下一个菜单时,当前菜单样式改变,其他菜单均变为之前样式. 用JavaScript,jQuery都可以实现,只是后者是封装的JavaScript库,具有s ...

  3. Numpy 系列(十一)- genfromtxt函数

    定义输入 genfromtxt的唯一强制参数是数据的源.它可以是字符串,字符串列表或生成器.如果提供了单个字符串,则假定它是本地或远程文件或具有read方法的打开的类文件对象的名称,例如文件或Stri ...

  4. 金融量化分析【day113】:多因子选股

    一.什么是多因子选股 在股市中征战过的朋友们应该知道,股市之道无非三点.1择时,2选股,3 仓控.精通这三点中的任何一点,都足以在股市中所向披靡.但是精通二字何其艰难!!!矫情的话多不多说,咱们进入正 ...

  5. 验证性控件的使用--验证两个文本框至少有一个不为空CustomValidator

    转:http://blog.163.com/zhaowencong_2010/blog/static/20402815220122103155643/ 有时候我们在注册一个帐号时要求我们留下电话号码, ...

  6. 如何实现Python调用C代码--python与C之间如何通信(swig)

    转载: https://www.zhihu.com/question/23003213 1. C代码如何调用Python 1.1 test #include <Python.h> int ...

  7. 2018-2019-2 实验一 Java开发环境的熟悉

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编辑.编译.运行.调试Java程序 实验知识点 1. JVM.JRE.JDK的安装位置与区别: 2. 命令行运行javac:ja ...

  8. NOI-OJ 1.7 ID:21 单词替换

    整体思路 本题如果使用scanf每次读入一个单词.比对替换后再进行输出的话就十分简单,使用这种方法必须要用数组把读入的所有单词存起来,读入的count个单词的前n-2个是原文,第n-1个是查找的单词, ...

  9. <锋利的jQuery>读书笔记

  10. npm cnpm yarn

    npm 如何下载指定版本的组件 先确保文件目录下含有 package.json 文件, 没有的话,可以通过 npm init 创建, 然后只需要在组件的后面加上 @2.8.1 版本号即可, 例如:re ...