第3章 SDIO物理层电气特性:电压、电流、上升/下降时间、眼图要求
讲物理层电气特性,说白了就是搞清楚信号在线上到底长什么样。很多工程师一上来就调软件协议,结果卡在莫名其妙的不通上,十有八九是电气特性没达标。我做过几轮 SDIO 验证,最深的一个体会是:波形好看不一定能通,但波形难看一定通不了。
3.1 电压域与电平标准
SDIO 卡支持两档电压:3.3V 传统模式 和 1.8V 高速模式(部分卡也兼容 1.2V,但主流是 1.8V)。卡在初始化阶段通过 CMD0 和 CMD8 协商电压,然后切换。
| 电压档位 | VOH min | VOL max | 典型工作场景 |
|---|---|---|---|
| 3.3V | 2.7V | 0.6V | 普通 SD/MMC 卡,低速调试 |
| 1.8V | 1.55V | 0.35V | UHS-I 高速模式,eMMC |
| 1.2V | 1.05V | 0.25V | 未来低功耗设计(较少见) |
电压切换时要注意:主机必须在切换前先把驱动强度调到对应档位,否则瞬间过冲可能打坏卡。我建议在 GPIO 控制电源域的管脚上预留 RC 缓冲,确保切换缓坡进行。
3.2 电流驱动能力
SDIO 接口的驱动电流分几个等级,通常对应输出阻抗控制。主机侧一般提供 4 级驱动强度可配:Type A(弱)、Type B(标准)、Type C(强)、Type D(增强)。卡侧则相对固定。
- Type A(8mA):适合短走线、单卡场景,功耗低。
- Type B(16mA):最常见选择,多数主机默认值。
- Type C(24mA):长走线或高负载(多卡分线)时启用。
- Type D(32mA):极少用,容易引入振铃。
我个人习惯在 FPGA 或 SoC 的 IO 配置里先选 Type B,跑起来后抓一下眼图,如果眼睛张开太小就改成 Type C。注意,驱动能力不是越大越好——过冲会恶化时序裕量。
3.3 上升/下降时间与信号完整性
上升/下降时间(tr / tf)是信号完整性的硬指标。SDIO 规范要求:在 20%~80% 幅度之间,上升和下降时间应控制在 0.5ns ~ 30ns(具体取决于时钟频率和总线模式)。
| 总线模式 | 最大频率 | tr / tf 建议范围 |
|---|---|---|
| DS(默认速度) | 25 MHz | 3 ns ~ 30 ns |
| HS(高速) | 50 MHz | 1 ns ~ 10 ns |
| UHS-I SDR50 | 100 MHz | 0.5 ns ~ 5 ns |
| UHS-I DDR50 | 50 MHz(双沿) | 0.5 ns ~ 5 ns |
你想想看,如果上升时间只有 0.2ns,信号在 PCB 上会振荡好几个周期才稳定,眼图里面全是毛刺。我遇到过一块板子,CLK 走线长了 3cm,没做阻抗控制,结果 HS 模式下一个时钟沿振荡了近 2ns,卡直接不认时钟。
3.4 眼图测量与模板
眼图是物理层的最终评判。SDIO 规范给出了明确的眼图模板(Mask),要求所有数据线和时钟线的眼图必须避开模板内的禁区。
// 以 1.8V 为例,眼图模板关键坐标(单位 V,ns)
// 模板中心对应采样点
X轴:-0.25 UI ~ +0.25 UI (UI = 单位间隔)
Y轴:0.35V ~ 1.55V (1.8V 模式的电压窗口)
禁区形状:六边形
顶点1: (-0.25 UI, 0.35V)
顶点2: (-0.15 UI, 0.10V)
顶点3: (+0.15 UI, 0.10V)
顶点4: (+0.25 UI, 0.35V)
顶点5: (+0.25 UI, 1.55V)
顶点6: (-0.25 UI, 1.55V)
实际操作时,我习惯用示波器的「自动眼图测试」功能,设置触发源为 CLK,然后累加 1000 个以上波形。如果眼图开口不够大,先检查时钟抖动,再检查数据线上的串扰。
- 电压不在眼图模板 Y 轴范围内 → 检查电源纹波、PI 滤波
- 眼图水平开口 < 0.5 UI → 检查时钟抖动(抖动 < 0.1 UI)
- 眼图上下不对称 → 检查驱动阻抗匹配(差分对等长)
- 眼图内有毛刺 → 检查信号回流路径、过孔数量
知识体系:从电气特性到测试失败
这张图把整个排查思路串起来了。从左到右是四个核心参数,往下是影响这些参数的因素,再往下汇聚到眼图测量,最后分叉到 PASS 或 FAIL 的处理。我在实际项目里就是照着这个路径一步步走的,很少有例外。
3.5 实测建议与避坑
最后分享几个我亲身踩过的坑,希望能帮你少走弯路。
- 避坑1: 我曾经用 500MHz 示波器测 200MHz SDIO 信号,上升沿被探头带宽吃掉,眼图看起来永远不合格。后来换成 1GHz 探头才真相大白。测高速信号,示波器带宽至少是信号频率的 5 倍。
- 避坑2: 卡侧和主机侧的驱动强度必须匹配。有一次我把主机侧设为 Type D,卡侧还是 Type B,结果上电瞬间驱动电流倒灌,直接打坏了一颗卡。后来在 FPGA 里加了软启动,才解决。
- 避坑3: 眼图模板不能只看单边沿。我曾经只抓了 CLK 上升沿的眼图,结果卡在等特时间隔(等待时隙)时信号衰减严重,数据眼图完全闭合。建议数据线和时钟线都抓,特别是多卡分线时。
嗯,到这里物理层电气特性的核心内容就差不多了。记住一个原则:先看电压,再量沿时间,最后开眼图。顺序不能乱,否则你可能会在噪声里找半天,结果发现只是电源纹波超标。