6.7 Clock control 时钟控制
EMMC总线时钟信号可以由host控制,将EMMC置于节能模式,或者控制总线上的数据流(以避免欠流或过流情况)。host可以降低时钟频率或关闭它。
host必须遵循一些限制规则:
总线频率可以在任何时候更改(在EMMC定义的最大数据传输频率和标准文档定义的区分频率的限制下)。
显然,时钟工作的情况下,EMMC才能输出数据或响应令牌。在最后一个EMMC 总线事务之后,host需要提供 8个时钟周期,EMMC识别到8个时钟周期后完成操作再关闭时钟。各种总线事务分别如下:
- 执行一条没有响应的命令。在host命令结束位之后的 8 个时钟周期。
2. 执行一条带响应的命令。在EMMC响应结束位之后的 8 个时钟周期。
3. 执行一次读数据事务。在最后一个数据块的结束位之后的 8 个时钟周期。
4. 执行一次写数据事务。在 CRC 状态令牌之后的 8 个时钟周期。
host可以关闭“忙碌”状态的EMMC的时钟。无论host时钟如何,EMMC都将内部完成编程操作。不过,host必须提供一个时钟边缘,以便EMMC关闭其忙碌信号。如果没有时钟边缘,EMMC(除非之前接收到取消选择命令(CMD7)断开连接)将永远拉低DATA0信号。
6.8 Error conditions 报错情况
6.8.1 CRC and illegal command CRC 和非法命令
所有命令均由 CRC(循环冗余校验)位保护。如果寻址的EMMC的 CRC 校验失败,则EMMC不会发出响应,并且命令不会被执行;EMMC不会改变其状态,并在状态寄存器中设置 COM_CRC_ERROR 位。
同理,如果EMMC收到了非法命令,不会改变其自身状态,也不会进行响应,并在状态寄存器中设置 ILLEGAL_COMMAND 错误位。状态图中仅显示了非错误状态分支(请参见图 25 到图 27)。表 60包含完整的状态转换描述。
有不同类型的非法命令:
1。属于EMMC不支持的类别的命令(例如只读EMMC中的写命令)。
2。当前状态下不允许接收的命令(例如传输状态下的 CMD2)。
3。未定义的命令(例如 CMD50)。
注意,COM_CRC_ERROR 和 ILLEGAL_COMMAND报错是在命令解释和验证阶段(响应模式)中检测到的。然而,由于EMMC对带有 COM_CRC_ERROR 或 ILLEGAL_COMMAND 错误的命令不进行响应,因此这些错误会在下一个有效命令的响应中显示。
6.8.2 超时条件
读/写/擦除操作超时的时间(与EMMC无关)是下面所示操作的典型访问/编程时间的 10 倍。EMMC必须在此时间段内完成命令,或者放弃并返回错误消息。如果host在规定的超时时间内没有获得响应,则应假定EMMC不会再响应,并尝试进行恢复(例如,重置设备、电源循环、拒绝等)。典型的访问和编程时间定义如下:
读取
读取访问时间定义为 CSD 寄存器中的参数 TAAC 和 NSAC(见 6.15)给出的两个时间之和。这些EMMC参数定义了读取命令结束位和数据块开始位之间的典型延迟时间。这个数字是与EMMC相关的。
写入
CSD 寄存器中的 R2W_FACTOR 字段用于计算典型块编程时间,该时间通过读取访问时间乘以该因子获得。它适用于所有写入/擦除命令(例如 SET(CLR)_WRITE_PROT、PROGRAM_CSD(CID) 和