SD3.0协议解读四

前面的文章提到过SD卡主要分为两个操作模式,一是初始化和识别操作模式,另一种就是这篇文章需要分析的数据传输模式啦。

数据传输模式:

数据传输模式主要有六种状态,分别是Stand-by状态、Transfer状态、Sending-data状态、Receive-data状态、Programming状态、Disconnect状态。这六种状态通过不同的Command就可以切换到某种状态,换句话说,这六种状态贯穿了整个数据传输模式。

要理解数据传输模式的流程,老衲认为除了理解这六种状态,还需要对Commands有一定的了解,越熟悉越好,当然,这并不是叫你去背Commands。好了,我们来看看数据传输模式的流程框图:

老衲我第一次看到这图的时候,简直看晕了,有木有!!太恶心了吧,谁定义的协议,敢不敢再复杂一点?没办法,做IT的就是苦逼,只能慢慢一点点啃,在理解流程之前,我们必须讲协议里的英文翻译一遍,然后结合流程图理解到底是怎么一回事,最后结合代码来看,这才能真正明白数据传输的过程是怎么一回事,下面是对英文协议里数据传输模式的翻译:

数据传输模式(翻译):

在SD卡识别模式结束之前,控制器使用的时钟频率均为Fod。在数据传输模式,控制器可能会使用Fpp频率。控制器发送一条SSEND_CSD(CMD9)命令来获取SD卡CSD寄存器(Card Specific Data)里面的描述值,譬如,块长度,卡容量信息等。广播命令SET_DSR(CMD4)配置所有识别卡的驱动段。对应于应用总线LayOut(长度),卡的数量和数据传输频率,这个命令设置DSR寄存器。时钟频率在那个点上也应该从Fod切换Fpp。SET_DSR命令对Host和卡都是可选的。

CMD7 用来选择一个卡并将它置于传输状态(Transfer  state),在任何时间只能有一个卡处于传输状态。 如果已有一个卡处于传输状态, 它和主机的连接将释放,并返回到 Stand-by状态。当 CMD7 以保留相对地址“0x0000”发送时,所有卡将返回到 Stand-by 状态。这可以用来识别新的卡而不重置其他已注册的卡。 在这种状态下已有一个 RCA 地址的卡不响应识别命令(ACMD41,CMD2,CMD3)。

数据传输模式下各个状态的转换关系总结如下:


·所有的数据读命令都可以被停止命令(CMD12)在任意时刻终止。数据传输会终止,SD卡返回Transfer状态。读命令有:块读操作(CMD17)、多块读操作(CMD18)、发送写保护(CMD30)、发送scr(ACMD51)以及读模式下的普通命令(CMD56)。

·所有的数据写命令都可以被停止命令(CMD12)在任意时刻终止。写命令也会在取消选择命令(CMD7)之前停止。写命令有:块写操作(CMD24,CMD25)、编程命令(CMD27)、锁定/解锁命令(CMD42)以及写模式下的普通命令(CMD56)。

·数据传输一旦完成,SD卡会退出数据写状态,进入Programming状态(传输成功)或者Transfer状态(传输失败)如果块写操作被叫停,但是写操作包含的最终块其长度和CRC校验是正确的话,数据会被编程到SD卡(从缓存写入到Flash)。

·卡可能提供块写缓冲。 这意味着在前一块数据被操作时,下一块数据可以传送给卡。如果所有卡写缓冲已满, 只要卡在 Programming State, DAT0 将保持低电平(BUSY)。

·写CSD、CID、写保护和擦除时没有缓冲。这表明在卡因这些命令而处于忙时,不再接收其他数据传输命令。 在卡忙时 DAT0 保持低电平, 并处于 Programming State。实际上如果 CMD 和 DAT0 线分离,而且主机占有的忙 DAT0 线和其他 DAT0 线分开,那么在卡忙时,主机可以访问其他卡。

·在卡被编程(programming)时,禁止参数设置命令。参数设置命令包括:设置块长度(CMD16),擦除块开始(CMD32)和擦除块结束(CMD33)。卡在操作时不允许读命令。
·使用 CMD7 指令把另一个卡从 Stand-by 状态转移到 Transfer 状态不会中止擦除和编程(programming)操作。卡将切换到 Disconnect 状态并释放 DAT 线。
·使用 CMD7 指令可以不选中处于 Disconnect 状态的卡。卡将进入 Programming 状态,重新激活忙指示。
·使用 CMD0 或 CMD15 重置卡将中止所有挂起和活动的编程(programming)操作。这可能会破坏卡上的数据内容,需要主机保证避免这样的操作。CMD34-37 CMD50,CMD57保留。

看起来是挺晕的对吧,确实挺晕的,最好的办法就是结合代码去分析读写过程了,这个嘛,后面有机会再详细分析。

SD3.0协议解读四

时间: 2024-11-08 20:49:18

SD3.0协议解读四的相关文章

SD3.0协议解读二

在阅读本文章之前,请先思考一下什么是总线,总线的作用是什么?相信大家都学过I2C总线,它由SCL和SDA两条线组成,通过这两条线就能完成各种通信.同样地,SD卡通信也需要有自己的总线模式.SD卡还比较牛逼,支持SD总线和SPI总线,老衲接触的比较多的是SD总线,所以这篇文章仅介绍SD总线,对于SPI总线老衲以后有机会再介绍. SD总线: 大家都知道总线一般支持多种频率,在默认的频率下,SD总线支持一(主)对多(从)的模式,即支持一个HOST对多个SD卡的模式.但是,在高速和UHS-I,SD总线只

SD3.0协议解读一

前言: 老衲我近期研究的是SD/MMC卡驱动,研究过的SD/MMC驱动的贫僧们都应该知道SD/MMC协议是必不可少的一部分,除非你不想研究透SD/MMC驱动,那你大可只研究driver/mmc/host目录下的文件即可.说到SD/MMC协议,网上一搜,SD3.0的协议只有英文版的资料,要想真正理解协议,英文水平差的贫僧就可吃力了,老衲英文水平实在是一般,但是网上对SD3.0协议的解读相关的中文资料实在是少的可怜.老衲怒想写写对SD3.0协议的理解,于是这一系列的SD3.0协议解读将会陆续问世..

SD3.0协议解读三

SD卡功能描述 所有主机和SD卡间的通信都是由主机控制的,这和USB是一致的,例如:U盘并没有主动通知USB控制器的能力,USB鼠标也没有主动通知USB控制器的能力,当然,SD卡也是没有主动通知SD控制器的能力的. 主机发送的命令有两种,一种是一对多,另一种自然是一对一了,他们分别是: 1.广播命令:广播命令发送给所有挂在SD总线上的SD卡,有一些广播命令需要SD卡作出响应. 2.寻址(点对点)命令:寻址命令只发送给具有相应地址的卡,并需要找到的那张卡返回一个响应. SD卡有两种模式,一种是卡识

OAuth 2.0 / RCF6749 协议解读

OAuth是第三方应用授权的开放标准,目前版本是2.0版,以下将要介绍的内容和概念主要来源于该版本.恐篇幅太长,OAuth 的诞生背景就不在这里赘述了,可参考 RFC 6749 . 四种角色定义: Resource Owner:资源所有者,即终端用户 Resource server:资源服务器,即提供资源存储访问一方 Client:通常指第三方应用 Authorization server:授权服务器 协议端点(URI):OAuth给授权过程定义了Authorization.Token和Redi

深入理解OAuth2.0协议

1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店后,只需要将泊车钥匙交给服务生,停车的事情就由服务生去处理.与主钥匙相比,这种泊车钥匙的使用功能是受限制的:它只能启动发动机并让车行驶一段有限的距离,可以锁车,但无法打开后备箱,无法使用车内其他设备.这里就体现了一种简单的"开放授权"思想:通过一把泊车钥匙,车主便能将汽车的部分使用功能(如

安全系列之二:OAuth2.0协议

本文提取出OAuth2.0规范RFC6749的主要内容,部分内容从文档复制出来,给大家讲讲第三方授权背后的故事. 先是举个知乎的QQ登录授权的例子,然后讲四种授权方式,两种令牌,接着是看看协议流程,分析知乎的QQ登录授权请求响应报文解释OAuth2.0协议,最后简单看看QQ提供第三方授权的API加深理解. 先打个预防针,在讲解四种授权,两种令牌时大家可能会有点不懂,但是跟随着协议流程走就懂了. 如果觉得排版不好,可以访问我的博客.TAT blog.bensonlin.me 如果觉得写得不错,欢迎

(转)帮你深入理解OAuth2.0协议

1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店后,只需要将泊车钥匙交给服务生,停车的事情就由服务生去处理.与主钥匙相比,这种泊车钥匙的使用功能是受限制的:它只能启动发动机并让车行驶一段有限的距离,可以锁车,但无法打开后备箱,无法使用车内其他设备.这里就体现了一种简单的"开放授权"思想:通过一把泊车钥匙,车主便能将汽车的部分使用功能(如

2015最新WebQQ3.0协议解析与实现

2015最新WebQQ3.0协议解析与实现(一) 2015最新webqq密码加密分析 2015最新WebQQ3.0协议解析与实现(三) 2015最新WebQQ3.0协议解析与实现(四) webqq协议综合篇,这个不是最新的,但是内容很全

帮你深入理解OAuth2.0协议

原文地址: http://blog.csdn.net/seccloud/article/details/8192707 1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店后,只需要将泊车钥匙交给服务生,停车的事情就由服务生去处理.与主钥匙相比,这种泊车钥匙的使用功能是受限制的:它只能启动发动机并让车行驶一段有限的距离,可以锁车,但无法打开后备箱,无