004 Data Packet Token Format
● Data 可以经Data Line从Host发往 Device,也可以从Device 发往Host。
● Data Line :1线(DATA0),4线(DATA0 - DATA3),8线(DATA0 - DATA7)
● Pre Data Line,每个Cycle可以传输1Bit(single data rate)或2bit(dual data rate)
● eMMC 传输是以Block为单位的,每个Block后跟一个CRC,无论Write or Read 都允许单个或者多个Block传输,对于多个Block传输是以Host发送一个Stop命令为结束。
2.3.1.1传输类型SDR(3类)
① 1 Bits Bus
Start + Data + CRC7 +End ,只使用了DATA0数据线,对于1个Block(Block Length= 512 Byte),需要花费Block length *8 Cycles
② 4 Bits Bus
对于1个Block(Block Length= 512 Byte),需要花费Block length *2 Cycles
③ 8 Bits Bus
对于1个Block(Block Length= 512 Byte),需要花费Block length *1 Cycles
2.3.1.2传输类型DDR(2类)
① 4 Bits DDR
对于1个Block,需要花费Block length *2 /2=1Cycles
② 8 Bits DDR
对于1个Block,需要花费Block length /2 =0.5Cycles
● DDR模式下,DDR传输时,上升沿和下降沿都会传输数据。在上升沿传输奇数字节(1,3,5),在下降沿传输偶数字节(2,4,6)。1个data line上有二个相互交织的CRC16,上升沿的CRC组成ODD CRC16,下降沿组成Even CRC16.上升沿用于检测上升沿所有位的数据,下降沿用于检测下降沿所有位的数据。
2.3.1.3传输类型HS400(采用8 Bits of DDR)
HS400是高电平&低电平用于数据传输,对于1个Block(Block Length= 512 Byte),需要花费Block length /2= 0.5 Cycles
2.3.1.4 Multiple Block Read
Host 从eMMC Device 读取数据的流程如上图所示
● 如果Host 发送的是 Single Block Read 的Command,那么eMMC Device 只会发送一个Block的数据,一个Block的数据的字节,由Host设定或者eMMC Device 的默认值。
● 如果Host 发送的是Multiple Block Read的Command,那么eMMC Device 会持续发送数据,直到Host 主动发送Stop Command。
● eMMC Device Read DATA按照Block 读取的。
2.3.1.5 Multiple Block Write
Host 向eMMC Device 写入数据的流程
● 如果Host 发送的是 Single Block Write Command, 那么eMMC Device 只会将后续第一个Block的数据写入的存储器中。
● 如果Host 发送的是 Multiple Block Write Command,那么eMMC Device 会持续地将接收到的数据写入存储器中,直到Host主动发送Stop Command。
● eMMC Device 在接收到一个Block的数据后,会进行CARC校验,然后将校验结果通过CRC Token发送给Host。发送完CRC Token后,二种情况:
如果CRC校验成功,eMMC Device 会将数据写入到内部存储器时,此时DATA0 信号会拉低,作为Busy信号,Host会持续检测DATA 0信号,直到为高电平时,才会接着发送下一个Block的数据。
如果CRC校验失败,那么eMMC Device 不会进行数据写入,此次传输后续的数据都会被忽略。
● 往eMMC Device 写入数据都是按Block写入的。
2.3.1.6 No DATA
Host 与 eMMC Device 的通信中,有部分交互是不需要进行数据传输的,还有部分交互甚至不需要eMMC Device 的回复Response。