【eMMC协议】6.6.1 - 6.6.2

6.6 Data transfer mode

  1. 使用CMD0,CMD1或者硬件复位将会终止programming操作。
  2. 如果eMMC没有开启可靠性编程这一功能,以上操作将会导致寻址操作中的局部或者全部数据处于未知状态,host 需要承担此次责任。
  3. 在使用(CMD19,CMD14)命令执行总线测试之前,需要设置数据传输的时钟频率。通过这种方式,总线测试能够给出实际的结果,如果总线测试程序以低于数据传输频率的时钟频率运行,得到的结果不一定是真实的。
  4. 这些命令如用于总线测试的命令(CMD14,CMD19),加解锁命令(CMD42),设置block长度命令(CMD16)在eMMC使用双倍速率模式传输的情况下是不能够生效的,同时这些命令应被视为非法命令不该被执行。
6.6.1 Command sets and extended settings
  1. 默认情况下,上电后或者使用参数为0x00000000的CMD0 命令复位亦或者boot 操作后,eMMC 在给定的command set中工作。这是eMMC 的standard command set,只使用DATA0 一根信号线。 主机可以通过发出SWITCH命令(CMD6)来更改 active command set ,并选择“Command Set”访问模式
  2. EXT_CSD寄存器中定义了支持的命令集以及当前选择的命令集,EXT_CSD寄存器分为两部分,Properties segment和Modes segment 。Properties segment包含有关设备功能的信息。Modes segment 反映eMMC的当前选择的模式。
  3. host 通过下发SEND_EXT_CSD 命令来读取ext_csd寄存器的值时,eMMC将发送ext_csd寄存器中的512 bytes 数据作为响应。保留的字段或者只写的字段,使用0进行填充。host也可以发下switch 命令并设置其中一种访问模式,并将其写入ext_csd寄存器的模式段,所有三种模式都访问和修改EXT_CSD字节中的一个字节,即index字段所指向的字节。
  4. Index字段可以包含0-255之间的任何值,但只有0-191是有效值。如果Index值在192 ~ 255之间,则设备不做任何修改,并且设置SWITCH_ERROR状态位。
  5. SWITCH命令既可以用于写入EXT_CSD寄存器,也可以用于更改命令集。如果使用SWITCH命令更改命令集,则忽略Index和Value字段,不写入EXT_CSD。 如果使用SWITCH命令写EXT_CSD寄存器,则忽略命令集字段,命令集保持不变。
  6. SWITCH命令响应的类型是R1b,因此,在busy信号解除后,主机应该使用SEND_STATUS命令读取设备状态,以检查SWITCH操作的结果。
6.6.2 High-speed modes selection
  1. host如果想要提升时钟速率至26MHz以上,则需要将clk切换到支持的高速率模式,时钟频率在:26-52之间。 “HS200”或“HS400”频率在52 MHz至200 MHz。

  2. host在验证eMMC符合4.0或更高版本的标准后,必须在设备中先启用高速模式定时,然后将时钟频率更改为26MHz到52MHz之间的频率。 为了使主机切换到更高的时钟频率,必须使能高速接口定时。主机使用SWITCH命令将0x01写入EXT_CSD寄存器的Modes段中的HS_TIMING字节。 如果host试图写一个无效的值,则不会改变HS_TIMING字节,不启用高速接口模式,并且也不会设置SWITCH_ERROR位。

  3. HS200仅在VCCQ= 1.8 V或1.2 V时有效。 在HS200模式下,总线宽度设置为SDR 4bit或SDR 8bit。

  4. host初始化设备后,必须通过读取EXT_CSD寄存器中的DEVICE_TYPE字段来验证设备是否支持HS200模式。然后如果支持则可以在设备中使能HS200定时模式,然后将时钟频率更改为高于52MHz的频率。

  5. 设备上电或软件复位(CMD0)后,clk设置为默认的“Backward Compatible Timing “。如果需要,eMMC应选择HS200高速模式,并在需要时进入tuning过程。

  6. HS200切换过程:

    • 选择设备(通过发送CMD7)并确保它已解锁(通过CMD42)
    • 读取扩展CSD寄存器的DEVICE_TYPE[196]字段,以验证设备是否在适合host和eMMC的IO电压下支持HS200
    • 读取扩展CSD寄存器的DRIVER_STRENGTH[197]字段以查找支持的设备驱动等级。注意:如果不需要更改驱动程序等级,则可以跳过此步骤
    • 通过下发CMD6,设置扩展CSD寄存器的HS_TIMING[185]字段中的HS200位和Driver Strength值。 如果host试图写一个无效的值,则不改变HS_TIMING字节,不使能HS200接口clk,也不改变驱动程序等级,并且设置SWITCH_ERROR位。 在设备响应R1后,它可能发出busy信号。
    • 一旦busy信号被解除,主机可以使用HS200定时发送SEND_STATUS命令(CMD13),在它接收到传输状态指示且无报错时,这意味着eMMC被设置为HS200 模式,并且驱动程序等级被设置为所选设置。 host 可以通过下发CMD21 命令设置HS200 tuning 过程。
  7. HS400工作在VCCQ为1.8V或者1.2V的IO电压下,HS400 模式下,总线宽度设置为8线双倍速率模式,HS400 支持与DDR52 相同的命令。host 完成对eMMC的初始化之后,再读取ext_csd 寄存器的DEVICE_TYPE 字段来查看eMMC 是否支持HS400 模式, 然后在设备中启用HS400模式,将时钟频率更改为高于52 MHz的频率。 当eMMC上电或者使用CMD0 软复位之后,类似于HS200,timing将设置回默认的Backward Compatible Timing。

  8. HS400切换过程:

    • 使用Backward Compatible Timing对eMMC 进行初始化
    • 通过CMD7 命令来选择要使用的eMMC
    • 通过读取ext_csd寄存器的196字节[DEVICE_TYPE]来验证eMMC 是否支持HS400模式
    • 读取197字段,查看EMMC 所支持的驱动强度(如果不需要设置则可以跳过该步骤,需要的话host 可以改变驱动等级)
    • 将EXT_CSD寄存器的HS_TIMING[185]字段中的“Selected Driver Strength”参数设置为适合HS400运行的驱动等级,将“Timing Interface”参数设置为0x2,切换到HS200模式。
    • 在HS400目标工作频率下执行tuning过程。
    • 将EXT_CSD寄存器的HS_TIMING[185]字段中的“Timing Interface”参数设置为0x1,切换到High Speed模式,然后将时钟频率设置为不大于52 MHz的值。
    • 设置BUS_WIDTH[183]为0x06,选择双数据速率8位宽总线模式。
    • 设置EXT_CSD寄存器的HS_TIMING[185]字段中的“Timing Interface”参数为0x3,切换到HS400模式。
  9. 对于Enhanced Strobe, 主机初始化设备后,通过读取扩展CSD寄存器中的device_TYPE和Strobe_SUPPORT字段,host检查eMMC是否支持HS400模式和Enhanced Strobe。

    • 使用Backward Compatible Timing对eMMC 进行初始化
    • 通过CMD7 命令来选择要使用的eMMC
    • 通过读取ext_csd寄存器的196字节[DEVICE_TYPE]来验证eMMC 是否支持HS400模式
    • 将EXT_CSD寄存器的HS_TIMING[185]字段中的“Timing Interface”参数设置为0x1,切换到High Speed模式,然后将时钟频率设置为不大于52 MHz的值。
    • 读取197字段,查看EMMC 所支持的驱动强度(如果不需要设置则可以跳过该步骤,需要的话host 可以改变驱动等级)
    • 设置EXT_CSD寄存器的HS_TIMING[185]字段中的“Timing Interface”参数为0x3,切换到HS400模式。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A210KldK-1689326840460)(C:\Users\bw002421\AppData\Roaming\Typora\typora-user-images\1687157948387.png)]
      在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blank_time

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值