eMMC SLEEP(CMD5)

一、概述

设备可以通过SLEEP/AWAKE(CMD5)实现sleep状态到standby状态的切换。

在sleep状态,eMMC功耗最小。在这个状态介质设备只对RESET命令(CMD0带参数0x00000000或者0xF0F0F0F0 或者H/W复位)和SLEEP/AWAKE(CMD5)响应(在SLEEP状态下再次发送SLEEP命令eMMC是否响应,这一点协议并没有定义)。其他所有命令被无视。状态在Standby和Sleep之间切换的超时时间定义在EXT_CSD寄存器的S_A_TIMEOUT.在Sleep状态的最大电流消耗定义在EXT_CSD寄存器的S_C_VCC和S_C_VCCQ。

二、命令

Sleep命令:在SLEEP/AWAKE(CMD5)的参数中的位15设置为1.

Awake命令:在SLEEP/AWAKE(CMD5)的参数中的位15设置为0.

([31:16]是CMD3设置的RCA地址)

三、寄存器

S_A_TIMEOUT [217] :定义了从sleep到awake状态(从wake到sleep状态)切换的最大超时时间。

计算公式:Sleep/Awake Timeout = 100ns * 2^S_A_TIMEOUT

取值范围如上图,最大寄存器值定义为0x17,等于838.86毫秒超时。0x18到0xFF之间的值是保留的。

S_C_VCC[220] and S_C_VCCQ[219] :定义了睡眠状态下最大VCC电流消耗。

计算公式:

Sleep current = 1µA * 2^X : register value = X >0

Sleep current = no value (legacy): register value = 0

取值范围如上图,最大寄存器值定义为0x0D,等于8.192mA。0x0E和0xFF之间的值是保留的。

四、流程

Sleep命令被用作启动Standby状态到Sleep状态的切换。介质设备通过下拉DAT0线指示转换阶段繁忙。在繁忙期间不应发送任何进一步的命令。当介质设备停止下拉DAT0线时,进入Sleep状态。

Awake命令被用作启动Sleep状态到Standby状态的切换。介质设备通过拉低DAT0线指示转换阶段繁忙。在繁忙阶段不应发送任何进一步的命令。当介质设备停止下拉DAT0线时,进入Standby状态。

五、其他

在Sleep状态下,可以关闭Vcc的电源,进一步节省功耗。只有在已经进入Sleep状态后才允许关闭Vcc的电源(介质设备已经停止下拉DAT0线)。在Awake命令被允许启动之前,Vcc电源至少恢复到最小操作电压水平。

一个锁定的设备可以被置为sleep state,通过设备使用cmd7取消设备选择,然后执行sleep命令。这将允许设备在锁定的状态时减少功耗。锁定的设备随后可以退出睡眠状态,并通过Awake命令进入待机状态。在设备已经进入睡眠再锁定设备是不允许的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值