eMMC5.0协议规定了5种总线数据模式,前三种速度模式可以兼容协议4.5版本之前的协议,后面两种可以支持HS200和HS400模式,本文系统设计的时候没有设计到,也不进行具体的介绍。
表1.种速度模式
模式名 | 数据速率模式 | IO电压 | 总线位宽 | 时钟速率 | 数据传输速率 |
兼容MMC模式 | SDR | 3/1.8/1.2V | 1、4、8bit | 0~26MHz | 26MHz |
高速SDR模式 | SDR | 3/1.8/1.2V | 1、4、8bit | 0~52MHz | 52MHz |
高速DDR模式 | DDR | 3/1.8/1.2V | 4、8bit | 0~52MHz | 104MHz |
HS200模式 | SDR | 1.8/1.2V | 4、8bit | 0~200MHz | 200MHz |
HS400模式 | DDR | 1.8/1.2V | 8bit | 0~200MHz | 400MHz |
eMMC设备的内部寄存器
如下表2所示,总共有6种。它们可以得到设备的相关内容以及设置工作时的控制对象,在读写数据前的步骤操作相对应的寄存器实现。协议中明确定义所用寄存器的含义。
表2.协议规定的寄存器
名称 | 大小(Bytes) | 描述 | 选用要求 |
CID | 16 | 设备识别寄存器,包含识别设备的号码 | 强制 |
RCA | 2 | 相关设备地址,在初始化过程中由主机控制器动态分配的系统地址 | 强制 |
DSR | 2 | 驱动等级寄存器,配置设备的输出驱动 | 可选 |
CSD | 16 | 设备具体数据寄存器,包含了设备操作状态的具体信息 | 强制 |
OCR | 4 | 操作状态寄存器,通过广播命令获取寄存器信息,包含设备的供电类型 | 强制 |
EXT_CSD | 512 | 扩展设备具体数据寄存器,包含设备的容量和当前模式信息 | 强制 |
设备识别寄存器
这是128bits的寄存器,里面存放单个设备的信息,它符合eMMC协议,当设备处于识别状态的时候,信息能够被主机访问。具体信息见下表3列出了具体意义。
图3. 设备识别寄存器位
相对地址寄存器
这是16bits的寄存器,一旦设备被识别,设备会被主机指定相对的地址,它存在其中。当传输数据的时候,主机利用这些信息选择设备,规定这个寄存器默认的值为0X0001。如果地址变成0X0000,那么只有发送CMD7指令才可让设备处于Stand-byState
才可用。
驱动等级寄存器
这是16bits的寄存器,它规定设备的等级,设备能通过主机进行设置来增强设备的性能,例如总线的长度、传输的速率等参数。在设备具体数据寄存器中包括了这个寄存器使用方式的内容。这个寄存器的默认值是0x404。