当EMMC 进入stand-by 模式后,CMD信号线和data信号线以推挽模式进行数据传输。同时fpp时钟频率保持在fod直到EMMC的csd 寄存器被host 获取。紧接着host 会下发CMD9(SEND_CSD)获取CSD寄存器中的指定数据。
图27 EMMC 状态转换图(数据传输模式)
EMMC中通过CMD4(SET_DSR) 配置驱动端的传输命令。具体指会设置DSR寄存器的总线长度以及数据传输频率,同时时钟频率会从fod 切换到fpp。
当EMMC处于stn-by模式时,host下发参数为EMMC相对地址的CMD7命令用于选择对应的EMMC并将其切换到数据传输状态。
如果EMMC先前被选中并处于传输状态,则它与host的连接将被释放,并且当CMD7取消选择时,它将回到stand-by状态,参数中的只存在地址都不等于EMMC自身的相对地址。 当参数为预留相对设备地址“0x0000”的CMD7 命令发送后,EMMC将会回到stand-by 模式,当EMMC处于传输状态时,接收到带有EMMC自身相对地址的CMD7命令会被忽略,且有可能被视为是非法命令。
所有host和带有RCA的EMMC在数据传输模式以点对点的方式进行通信,所有的地址命令通过CMD信号线被识别并响应。
见图27,总结了多数据之间传输模式的关系。
host 下发CMD12命令后,所有的读数据命令都被禁止,数据传输终止,且EMMC切换到stand-by 状态,读命令比如:CMD17(读block),CMD18(读取多个block),CMD21(发送tunning block),CMD30 (发送写保护命令)
host下发CMD12命令后,所有的写数据命令被终止,接着CMD7 命令断开EMMC和host 的通信,写命令比如:CMD24 CMD25,CMD26(写CID) 以及CMD27(写CSD寄存器命令)
一旦数据传输完成后,EMMC将会退出写入数据状态,切换到编程状态或者数据传输状态(数据传输失败的时候)
如果块写入操作被停止,同时最后一个块的长度和CRC有效,则将对写入数据进行存储。
EMMC 中,对写入的block提供了缓存,意味着上一个块在存储的时候可以写入下一个块。
然而当写入CSD寄存器以及CID 寄存器,写保护或者擦除的时候,是不会提供缓存的,意味着当EMMC处于busy 状态时,CMD信号线上是没有命令传输的,此时当EMMC处于busy或者编程状态时候,data0 信号线将被拉低。
当EMMC 处于编程状态时 ,参数设置命令比如CMD16(设置bl