当处于设备认证模式时,主机重置设备,验证操作电压范围和访问模式,认证设备并为总线上的设备分配相对设备地址(RCA)。设备认证模式下的所有数据通信都只能使用CMD Line。
一、命令
CMD0
发送命令带参数00000000(可在除Inactive状态的任何状态使用),设备进入idle状态
进入idle状态的其他方法:
- 完成boot操作之后;
- 在pre-boot状态下,在CMD line low(命令行低位)持续不到74个时钟之后;
- 如果上电之后设备没有boot启动。
CMD0的其他参数:
- FFFFFFFA :启动备用引导操作(在pre-boot状态下);
- F0F0F0F0 :重置设备到pre-idle状态;
- 其他参数:在除inactive状态下发送除FFFFFFFA和F0F0F0F0的参数,重启设备,然后进入idle状态。
CMD1(SEND_OP_COND )
要求处于idle状态的设备在CMD行上的响应中发送其OCR寄存器内容,匹配电压范围和访问模式。
访问模式:00 字节访问模式(小于等于2GB) 10扇区访问模式(大于2GB)(目前市面上的eMMC都是4GB以上,所以大多是扇区访问模式)。
如果设备busy,设备应该响应0x00FF8080(小于等于2GB)或0x40FF8080(大于等于2GB)
如果设备ready,设备应该响应0x80FF8080(小于等于2GB)或0xC0FF8080(大于等于2GB)
设备接收到CMD1后,要在1S内完成初始化。
CMD2(ALL_SEND_CID)
要求设备在CMD行上发送它的CID号码,每个设备的cid是唯一的。
CMD3(SET_RELATIVE_ADDR)
为设备分配RCA(相对地址)(0地址除外,但是分配也不会报错)
二、认证流程
主机在open-drain模式下开始设备认证流程
1、总线激活后,主机将要求设备发送它的有效操作条件(发送cmd1,匹配电压范围和访问模式),不兼容的设备发送到inactive状态,CMD1响应的busy位表示设备仍然处于上电/复位流程,并且没有准备好通信,主机必须重复CMD1直到busy位清除,设备进入ready状态;
2、主机发送CMD2,请求所有设备发送唯一的CID码,每个认证周期接收一个设备的CID,设备进入identification状态;
3、主机发送CMD3分配设备的RCA(用于在未来的数据传输中定位设备),一旦RCA被接收,设备切换到standby状态,并且设备不对之后的认证周期反应。此外,该设备将其输出驱动器从open-drain到push-pull。
三、命令流程:
CMD0-> CMD1->...->CMD1->CMD2->CMD3
认证流程中不接收其他命令(CMD0除外),发送其他的命令会响应超时,直到设备接收到正确的命令。