在数据传输模式中,各种状态之间的转换关系概括为:
所有数据读取命令可以通过停止命令终止(CMD12)在任何时间。数据传输终止SD卡返回到传输状态。读命令:块读操作(CMD17),多个块读操作(CMD18),发送写保护(CMD30),发送普通命令的SCR(ACMD51)和读模式(CMD56) 停止命令(CMD 12)可以随时终止所有数据写入命令。写命令也会在取消选择命令(CMD 7)之前停止。写命令有:块写操作(CMD24,CMD25)、编程命令(CMD27)、锁定/解锁命令(CMD42)以及写模式下的普通命令(CMD56)数据传输一旦完成,SD卡会退出数据写状态,进入Programming状态(传输成功)或者Transfer状态(传输失败)
如果一块写操作被停止,但写操作包含较后一块的长度和CRC校验正确,数据将被编程到SD卡(从缓存写入闪存吗?)
SD卡可以提供缓存模式,这意味着控制器可以在较后一个写块被编程到Flash时发送下一个数据。
SD卡初始化和识别过程:
在发送CMD 8命令后,扩展ACMD 41指令,参数中包含更多HCS部分,响应中包含CCS(Card容量状态)部分。高碳钢参数不会响应CMD8命令SD卡。当控制器向不响应CMD 8的卡发送ACMD 41指令时,CMD 8位应设置为零。如果发送SDHC卡ACMD41高碳钢0命令,SDHC卡返回响应,繁忙的标记WeiYongYuan 0,忙代表国家。HCS标识符用于指示SD卡是否已完成初始化,如果HCS为零,如果HCS为零,则控制器重复ACMD 41指令SD卡,仅检查**接收到的ACMD 41指令的HCS位。
SD卡响应CMD 8而发送的ACMD 41指令的响应包含CCS部分,控制器仅用HCS标志位1检查响应中包含的CCS位。CCS = 1表示SDHC卡,或者作为标准SD卡。
然后控制器发送ALL_SEND_CID(CMD 2)命令来查询每个卡的CID(一卡标识)值,而未被标识的SD卡(处于就绪状态)发送一个CID值作为响应。发送CID值后,SD卡进入可识别状态(标识状态),控制器发送CMD 3(SendRelatedADDR)命令。每个SD卡需要发送一个新的相对地址(RCA),以便在随后的数据传输模式中寻址。RCA后发送。站到SD卡的状态,在这种状态下,如果控制器新RCA SD卡分布,它可以发送另一个CMD3命令到SD卡。较后发布的RCA是SD卡的真正RCA。