emmc 命令协议

来源:互联网 发布:忆江南的知作者怎么写 编辑:程序博客网 时间:2024/05/29 17:59


所有的命令都是固定的长度48位

所有命令都是以0开始的,紧接着是传输的方向(主机发出的就为1,设备发出的就为0),接下来的6位是命令的索引,这是一组二进制码(0~63),设备就是对这六位译码,区分是哪种命令,还有一些命令需要arg值(比如地址),这一段的长度为32位,所有的命令都会被CRC7保护着,所以CRC保护的是之前的40位,最后以1结束。

上升沿采样,第一个bit为0为start位,第二个bit是1代表host发出,后面的6个bit为011001为cmd25写数据指令,后面的32bit为argument

命令的应答
应答也是由CMD传输的,由左边的位开始传输,应答位的长度根据应答的类型而定。应答是以0开始的,紧接着是传输的方向(设备 = 0 ),接下来的值根据类型不一样也不一样,除了R3以外都会被CRC7保护着,每条命令都是以1结束的。
一共有五种类型的命令应答形式: R1 ,R1b,R2,  R3,  R4,  R5
R1:

该应答的长度为48位,45:40显示的是命令的索引,39:38是32位的设备状态。
R1b和R1的区别只是在DAT0上存在忙信号的传输

R2:(CID、CSD寄存器)

该应答的长度为136位,CID的内容会作为CMD2和CMD10的应答发送给主机,CSD的内容会作为CMD9的应答发送给主机,仅仅只有CID和CSD的[127:1]被传输,最后一位被应答的结束位所代替。

R3:(OCR寄存器)

该应答的长度为48位,OCR寄存器的值会作为CMD1的应答发送给主机。

 R4:(Fast IO)

该应答位的长度48位,ARG部分包括RCA的值、寄存器的值、寄存器的值, 如果操作成功,状态位就会被置位

R5:(中断请求)

该应答的长度为48位,如果应答是主机自己发送的,那么RCA的值为0x0000。

注:
无论是单倍数据率模式还是双倍数据率模式,主机的命令和设备的应答都是在时钟的上升沿采样的。



为了让大家看的更加直观,我后面会陆续把各个应答的波形上传上来,以供参考

2 0