在数据传输模式中,各种状态之间的转换关系概括为:
所有数据读取命令可以通过停止命令终止(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_send_op_cond(ACMD 41)命令的目的是给SD卡控制器一种机制来识别SD卡是否可以在给定的Vdd范围内工作,如果SD卡不能在*的Vdd范围内工作,它将进入非活动状态(非活动状态)。需要注意的是,ACMD 41应用了一个相关的命令,因此每个发出的ACMD 41命令都必须紧跟APP_CMD(CMD 55)命令。在自由状态(空闲状态)使用CMD55命令使用默认卡相对地址0 x0000(RCA)。
每次控制器发送CMD 0重置SD卡时,都会重新执行一系列初始化操作(CMD 8、ACMD 41。)。..)。
如果ACMD41指令的OCR位是0,控制器可以查询SD卡,并决定他们共同的工作电压范围。在将ACMD 41指令作为查询发送之后,sd卡不会启动初始化过程,直到控制器重新发送ACMD 41指令为止。