目录
一、一个容易被忽略的问题
做嵌入式开发的时候,遇到过这种情况:板子打样回来,固件烧进去了,上电之后eMMC就是不认。换一颗芯片好了,再换一颗又不行。查来查去,最后发现是电源的问题。
eMMC对上电时序是有要求的。没按要求来,芯片可能处于不确定状态,初始化失败、读写异常、甚至不响应命令,都是常见现象。

二、eMMC有几路电源?

eMMC通常需要三路电源:
VCC:NAND闪存的核心供电。一般是3.3V,也有1.8V的版本。这一路电流需求最大,读写的时候瞬时电流能到几百毫安。
VCCQ:IO接口供电,给CMD、DATA、CLK这些信号线用。电压必须跟主控的IO电平匹配,否则逻辑冲突。常见配置是1.8V或3.3V。
VDDi:内部控制器的核心供电。一般是1.8V或1.2V,由芯片内部稳压或外部提供。
有些型号把VDDi也做到内部了,外部只接VCC和VCCQ。具体看规格书。
三、上电时序有什么要求?
JEDEC规范里对上电时序有明确要求,大致几点:

第一,VCC和VCCQ要先上电。这两个电源稳定之后,其他信号才能开始动作。VDDi可以跟VCC一起上,也可以在VCC之后上。
第二,电压上升要平稳。从0V升到工作电压的时间,建议在0.1ms到35ms之间。太慢了芯片可能进不了正确状态,太快了电源可能带不动。
第三,上电后要等一段时间才能发命令。VCC和VCCQ稳定之后,至少要等1ms,芯片内部完成复位,才能发CMD0。
第四,掉电也有要求。断电的时候,先把CLK、CMD、DATA拉低,再关电源。避免信号线通过保护二极管倒灌电流给芯片供电。
米客方德eMMC规格书里都有这几条时序参数,画板子之前对一下。
四、时序没做好会出什么问题?
情况一:VCC上电太慢
电压爬升时间超过35ms,芯片可能检测不到有效的电源状态,初始化失败。示波器抓一下VCC波形,看从0V到3.3V用了多久。
情况二:VCC和VCCQ不同步
VCCQ先上电,VCC后上,IO口可能先有电,电流从信号线倒灌进NAND核心,芯片工作异常。解决办法是把两路电源用同一个PMIC控制,或者加电源时序芯片。
情况三:上电后等待时间不够
VCC稳定之后马上发命令,芯片还没准备好,CMD0不响应。软件里加一段延时,等芯片复位完成再发命令。一般等1-5ms就够了。
情况四:掉电时信号线没拉低
断电的时候,主控IO口可能还保持着高电平,电流通过保护二极管流进eMMC,导致芯片不完全断电,下次上电时状态混乱。解决办法是在关机流程里先把SDIO接口关掉,再断电。
五、怎么排查上电时序问题?
第一步,示波器抓波形
同时抓VCC、VCCQ、CMD三根线。看VCC和VCCQ的上升时间,看CMD什么时候被拉高。
第二步,确认电源芯片的EN脚时序
如果VCC和VCCQ用的是同一个PMIC的不同通道,检查EN脚的时序。有时候EN脚是由主控IO控制的,主控还没起来,电源就上错了顺序。
第三步,测一下掉电波形
断电的时候,看VCC和VCCQ是不是同时掉。如果一个掉得慢,另一个掉得快,也可能有问题。
第四步,用SDIO分析仪抓初始化过程
看CMD0有没有响应,ACMD41有没有返回。如果卡在某个命令超时,大概率是上电时序或者电压不匹配。
米客方德的FAE那边遇到过不少类似案例,很多都是电源设计的小细节没注意到。手上有规格书,对着时序参数查一遍,大部分问题都能定位到。
六、电源设计建议
用PMIC统一管理:不要用LDO分开供电,PMIC的时序控制更可靠。米客方德工业级eMMC对电源要求没那么严,但按规范设计总归没坏处。
电容别乱加:VCC对地电容太大,上电时间会变慢。建议按规格书推荐的来,一般2.2uF到10uF就够了。电容太大,上电时间可能超35ms。
考虑加复位芯片:如果主控的IO上电时序不可控,可以在RST_N上加一个复位芯片,等电源稳定之后再释放复位。
电源走线要够宽:eMMC读写时瞬时电流大,电源走线太细会产生压降。建议VCC走线宽度至少0.5mm,尽量靠近芯片。
eMMC启动失败,很多时候不是芯片坏了,是电源没伺候好。
上电时序要满足:VCC和VCCQ先上电,电压上升平稳,稳定后等1ms再发命令。掉电时先把信号线拉低,再关电源。
排查的时候,示波器抓波形是最直接的办法。看VCC和VCCQ的上升时间,看CMD有没有响应。大部分问题都能在波形上找到线索。

2481

被折叠的 条评论
为什么被折叠?



