6.6 Data transfer mode 当设备处于Transfer态时,使用设备自己的相对地址接收的CMD7 会被设备忽略,并且可能被视为非法命令。 在设备被分配一个 RCA 后,它不会响应识别命令:CMD1、CMD2 或 CMD3(见 6.4.4)。 当设备处于Disconnect态时,CMD7 用于通过在参数中包含设备的相对地址来选择设备并将其置于Programming态。 如果设备先前被选中并处于Programming态,则它与主机的连接被释放,并且当 CMD7(参数中的任何地址不等于设备自己的相对地址)取消选择时,它会回到Disconnect态。当设备处于Programming态时,设备会忽略带着自己的相对地址的CMD7,并且可能将其被视为非法命令。 数据传输模式下的所有数据通信都是主机和所选设备(使用寻址命令)之间的点对点。所有寻址的命令都通过 CMD 线上的响应得到确认。 总结了各种数据传输模式之间的关系: •可以随时通过停止命令(CMD12)中止所有数据读取命令。数据传输将终止,设备将回到Transfer状态。读取命令为:块读取(CMD17)、多块读取(CMD18)、发送调整块(CMD21)和发送写保护(CMD30)。 •所有数据写入命令都可以通过停止命令(CMD12)随时中止。在通过 CMD7 取消选择设备之前,必须停止写命令。写入命令为:块写入(CMD24 和 CMD25)、写入 CID(CMD26)和写入 CSD(CMD27)。 •一旦数据传输完成,设备将退出数据写入状态并进入Programming态(传输成功)或Transfer状态(传输失败)。 •如果块写入操作停止并且最后一个块的块长度和CRC 有效,则数据将被编程。 •设备可以为块写入提供缓冲。这意味着可以将下一个块发送到设备,而前一个块正在被编程。 •没有用于写CSD、写CID、写保护和擦除的缓冲选项。这意味着当设备忙于服务这些命令中的任何一个时,不会接受其他数据传输命令。只要设备忙并且处于编程状态,DAT0 线就会保持低电平。 •设备正在编程时不允许使用参数设置命令。参数设置命令有:设置块长度(CMD16)和擦除组选择(CMD35-36)。 •设备正在编程时不允许读取命令。 •将另一个设备从Stand-by状态切到Transfer状态(使用CMD7)不会终止编程操作。设备将切换到Disconnect状态并释放 DAT0 线。 •可以在断开Disconnect状态下使用CMD7 重新选择设备。在这种情况下,设备将进入Programming状态并重新激活忙碌指示。 •复位设备(使用CMD0、CMD15 或e•MMC 的硬件复位)或电源故障将终止任何未决或活动的编程操作。除非启用了可靠写入,否则这可能会使操作寻址的部分或全部数据处于未知状态。Host要防止这种情况发生。 •在执行总线测试程序(CMD19、CMD14)之前,建议设置用于数据传输的时钟频率。这样,总线测试会给出真实的结果,如果总线测试过程以低于数据传输频率的时钟频率执行,则情况可能并非如此。 •以下命令:总线测试(CMD19、CMD14)、锁定解锁(CMD42)和设置块长度(CMD16)一旦设备被配置为在双数据速率模式下运行,则不允许执行,不应执行否则视为作为非法命令。 在以下格式定义中,所有大写标志和参数都在 CSD (7.3) 中定义,其他状态标志在设备状态 (6.13) 中定义。

6.6.1 命令集和扩展设置 主机可以通过发出 SWITCH 命令 (CMD6) 并选择“命令集”访问模式来更改有效命令集。 主机通过发出 SEND_EXT_CSD 命令读取 EXT_CSD 寄存器。 

6.6.5 总线采样调整 由于读数据时,时钟是环回的,而数据是单向的,所以需要措施来保证采样时序。emmc采用的是host发时序调整块的方式,具体的实现方案因host的设计而异。

6.6.7 读数据 没有数据传输时,DAT0-DAT7 总线电平为高电平。 传输的数据块由每个 DAT 线上的起始位 (LOW) 组成,然后是一个连续的数据流。  数据流在每条 DAT 线上以结束位 (HIGH) 结束。 面向块的数据传输的有效载荷受单数据速率模式下的一个 CRC 校验和或双数据速率模式下的两个 CRC 校验和保护,在每条 DAT 线上。 在单数据速率模式下,数据传输的基本单位是一个块,其最大bit数在 CSD (READ_BL_LEN) 中定义。 如果设置了 READ_BL_PARTIAL,则还可以传输开始和结束地址完全包含在一个物理块(由 READ_BL_LEN 定义)内的较小块。 CRC 附加到每个块的末尾,以确保数据传输的完整性。 CMD17 (READ_SINGLE_BLOCK) 启动块读取,完成传输后,设备返回Transfer态。 在双数据速率模式下,一个块读取的数据大小始终为 512 字节,不支持部分块数据读取,并且在每个块的末尾附加两个 CRC,一个用于偶数字节,一个用于奇数字节。 CMD18 (READ_MULTIPLE_BLOCK) 开始传输几个连续的块。

6.7 Clock control  主机可以使用 e•MMC 总线时钟信号将设备置于节能模式,或控制总线上的数据流(以避免欠载或超载情况)。允许主机降低时钟频率或将其关闭。 主机必须遵守一些限制: •总线频率可以随时更改(在设备定义的最大数据传输频率和标准文档定义的识别频率的限制下)。 显然必须提供时钟设备才能输出数据或响应令牌。在最后一个 e•MMC 总线事务之后,主机需要在关闭时钟之前提供 8个时钟周期让 Device 完成操作。各种总线事务如下: •无响应的命令。主机命令结束位后 8 个时钟。 •带有响应的命令。设备响应结束位之后的 8 个时钟。 •读取数据事务。最后一个数据块的结束位之后的 8 个时钟。 •写入数据事务。 CRC 状态令牌后 8 个时钟。 允许主机关闭“忙碌”设备的时钟。无论主机时钟如何,设备都会完成编程操作。但是,主机必须为设备提供时钟边沿以关闭其忙信号。如果没有时钟边沿,设备(除非先前通过取消选择命令 (CMD7) 断开连接)将永久强制 DAT0 线关闭。

6.10 commands 6.10.1 command类型 4类: •bc:广播类,无响应 •bcr:有响应的广播 •ac:点对点command,DAT线上无数据 •adtc:点对点command,DAT线上有数据。 先传左边bit,可以理解成MSb。 6.10.2 command格式 长度固定48bit,“0”+“1”+6bit索引+32bit参数+7bit CRC+“1” 6.10.3 Command classes e•MMC 系统的命令集分为12类。(每类都可能存在index为0~56之中的若干种) 每个类都支持设备功能的一个子集。 0 类是强制性的,所有设备都应支持。其他类要么仅对特定设备类型是强制性的,要么是可选的。 支持的设备命令类 (CCC) 编码为每个设备的设备特定数据 (CSD) 寄存器中的参数,为主机提供有关如何访问设备的信息。

6.12 Responses  所有响应都通过CMD线发送。 响应传输总是从响应码字对应的位串的左边位开始。 代码长度取决于响应类型。 响应始终以起始位(始终为“0”)开始,然后是指示传输方向的位(设备 =“0”)。 表 63 – 表 67 中用“x”表示的值表示变量条目。 除类型 R3 外,所有响应都受 CRC 保护(CRC7 的定义见 0)。 每个命令代码字都由结束位(始终为“1”)终止。 有五种类型的响应。 它们的格式定义如下: •R1(正常响应命令):代码长度48 位。 位 45:40 指示要响应的命令的索引,该值被解释为二进制编码数字(0 到 63 之间)。 设备的状态以 32 位编码。 •R1b 与R1 相同,在数据线DAT0 上传输一个可选的忙信号。 R1和R1b的格式和CMD的基本一致。 •R2(CID、CSD 寄存器):代码长度 136 位。 CID 寄存器的内容作为对命令 CMD2 和 CMD10 的响应发送。 CSD 寄存器的内容作为对 CMD9 的响应发送。 只有 CID 和 CSD 的位 [127...1] 被传输,保留位 [0] 被响应的结束位替换。 R2的格式和CMD差比较多,“00111111”+127bit寄存器信息+“1” •R3(OCR 寄存器):48bit。OCR 寄存器的内容作为对 CMD1 的响应发送。 •R4 (Fast I/O):码长 48 位。 参数字段包含被寻址设备的 RCA、要读取或写入的寄存器地址及其内容。 如果操作成功,则置位参数中的状态位。 •R5 (Interrupt request): 48 bits.如果响应由host产生,参数里的RCA域应为0x0。

6.15 时序 6.15.1 Command and response 主要是约束了不同的command命令下,response对于command的延时要求。  

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。