eMMC 硬件接口:信号定义、封装、供电要求
做 eMMC 开发,第一件事不是读协议,而是把硬件接口搞明白。我见过不少同事上来就调软件,结果板子贴上去根本不工作——最后发现是引脚接错了。嗯,这一章我们就来聊聊 eMMC 的物理层:信号怎么定义、封装长什么样、供电需要注意什么。
信号定义
eMMC 5.1 接口信号不算多,但每条线都有讲究。我习惯把它们分成三类:数据线、控制线和电源线。
| 信号名 | 类型 | 功能描述 | HS400 下的特殊要求 |
|---|---|---|---|
| CLK | 输入 | 主机提供时钟 | 最高 200 MHz,需匹配阻抗 |
| CMD | 双向 | 命令与响应线 | 开漏/推挽切换 |
| DAT0~DAT7 | 双向 | 8 位数据总线 | HS400 必须使用 8 位模式 |
| RST_n | 输入 | 硬件复位(低有效) | 可选,建议保留 |
| VCC | 电源 | 主电源 2.7~3.6 V | 纹波 < 50 mV |
| VCCQ | 电源 | I/O 电源 1.8 V 或 3.3 V | HS400 必须 1.8 V |
你注意看,CMD 和 DAT 线都是双向的,而且工作模式会变。上电初始化阶段用开漏模式,之后切换到推挽模式。我当时调试一块开发板,发现偶尔识别不到 eMMC,查了很久,原来是上拉电阻选错了——开漏模式下阻抗不匹配,信号上升沿太慢。
封装类型
eMMC 芯片最常见的封装是 BGA (Ball Grid Array)。我常用的有 153-ball 和 169-ball 两种。153-ball 尺寸小,适合手机、平板;169-ball 多了一些测试引脚,常用于工控产品。
看引脚排列图时,我个人习惯先找到 CLK 和 RST_n 这两个关键信号,因为它们通常放在角落。然后是电源和地——VCC 和 VCCQ 一般成对出现,旁边会配很多 GND 球。为什么要配这么多地?因为高速信号需要低阻抗回路,你想想看,如果地回路太长,信号完整性就会崩。
另外,封装里还有一个 NP (No Connect) 引脚,厂商会在数据手册里注明哪些球是悬空的。千万别自作主张把它们连到电源或地,我曾经遇到过一块板子,因为把 NP 引脚接了地,导致 eMMC 内部短路,整批板子报废。
供电要求
eMMC 5.1 对供电有两路要求:VCC 给存储核心供电,VCCQ 给 I/O 接口供电。HS400 模式下 VCCQ 必须固定为 1.8 V,不能像早期标准那样支持 3.3 V。
为什么一定要 1.8 V?因为 HS400 的时钟频率高达 200 MHz,信号摆幅如果太大,功耗和 EMI 都受不了。1.8 V 信号能有效降低功耗,同时保证上升/下降时间够快。
| 参数 | VCC 范围 | VCCQ 范围 (HS400) | 备注 |
|---|---|---|---|
| 工作电压 | 2.7 V ~ 3.6 V | 1.7 V ~ 1.95 V | 建议稳压输出 |
| 纹波噪声 | < 50 mVp-p | < 30 mVp-p | 高频退耦电容要紧贴芯片 |
| 上电顺序 | 先 VCC,再 VCCQ | 可同时上电 | VCCQ 不能先于 VCC |
| 掉电顺序 | 先 VCCQ,再 VCC | — | 否则内部闩锁 |
另外,退耦电容的布局也很关键。VCC 和 VCCQ 引脚旁边各放一个 0.1 µF 陶瓷电容,最好再并联一个 4.7 µF 钽电容。电容要离引脚尽可能近,走线越短越好。我曾经在项目中为了省空间,把电容放在 1 cm 之外,结果 200 MHz 时钟时电源纹波飙到 100 mV,HS400 模式直接挂掉。
总结一下 eMMC 硬件接口,其实就三个核心点:信号别接错、电源别反序、布局留好地。搞定了这些,你就能把精力放在更上层的高速模式切换上了。嗯,硬件基础打得牢,后面调 HS400 时序才有底气。