2. SDIO符合性测试标准介绍:SD协会规范、测试项分类
咱们做SDIO测试,首先得搞清楚标准是谁定的,测哪些东西。说白了,这套规矩是SD协会(SD Association,简称SDA)定的。我早期入行时,总觉得看规范文档特别枯燥,后来吃过几次亏才明白——规范里每一句话,背后都可能是一个坑。
2.1 SD协会规范体系
SD协会定义的规范文档很多,跟我们硬件测试最相关的,主要是这几本:
| 规范名称 | 版本参考 | 覆盖范围 |
|---|---|---|
| SD Physical Layer Specification | Ver6.0 / 7.0 | 电气特性、时序、命令格式 |
| SDIO Card Specification | Ver4.0 / 4.1 | I/O功能、中断、多块传输 |
| SD Host Controller Specification | Ver4.20 | 主机端寄存器、DMA接口 |
| SD Compliance Test Specification | 最新修订版 | 测试用例、判定标准 |
很多人以为只要看SDIO Card Spec就够了。错。我做第一个项目时,只看了IO相关章节,结果电气特性没过,后来才发现Physical Layer里定义了信号上升时间和下降时间的限值。嗯,从那以后我学乖了,这两本必须一起看。
2.2 测试项三大分类
SDIO符合性测试,按测试维度可以分为三大类:电气测试、时序测试、协议测试。这三者之间是层层递进的关系。电气不过,时序就不用看了;时序不满足,协议层跑得再花哨也是白搭。
我画了一张图,帮你看清这三类测试的关系:
2.3 电气测试:最基础也最容易忽略
电气测试,说白了就是检查物理层的信号质量。你用示波器看波形,该高的时候高,该低的时候低,不能毛刺一片。
核心测试项包括:
- 输出电压电平(VOH / VOL):主机输出高电平要在0.625×VDD以上,低电平要在0.25×VDD以下。我见过不少方案用1.8V供电,结果高电平只到1.1V,直接被判失败。
- 上升/下降时间:太快会产生过冲,太慢会导致时序窗口不够。规范要求在2ns~10ns之间(具体看工作模式)。
- 驱动能力:输出电流要够,否则带不动负载。特别是当SDIO线路上并联了ESD保护器件时,很容易吃掉驱动余量。
2.4 时序测试:卡在中间最难受
电气测试过了,接下来就是时序。这一块是排查过程中最磨人的,因为问题往往不是一眼能看出来的。
关键时序参数:
| 参数 | 符号 | 典型限值(DS模式) |
|---|---|---|
| 时钟频率 | fCLK | 0~25 MHz |
| 建立时间(CMD/DAT → CLK) | tSU | ≥ 3 ns |
| 保持时间(CLK → CMD/DAT) | tH | ≥ 2 ns |
| 数据输出延迟 | tODLY | ≤ 14 ns |
你想想看,现在SDIO最高跑到了UHS-I模式下的104MHz。频率越高,时序裕量越小。我调试过一个WiFi模组,低速模式下一切正常,切到高速就随机丢包。查了三天,发现是保持时间差了0.5ns。嗯,就是这零点几纳秒的事。
排查建议:
- 用示波器测量时钟和数据线之间的相对延迟
- 检查PCB上CLK线是否比数据线长太多或短太多
- 留意IO Cell内部的延时可调寄存器,有时需通过软件微调
2.5 协议测试:业务逻辑的照妖镜
电气和时序都OK了,终于可以测协议了。协议测试主要验证命令和响应的交互是否按照规范来。说白了,就是看你的设备会不会说人话。
协议测试的几个核心方向:
- 命令/响应格式:检查CMD索引、响应类型、CRC7校验。我最常遇到的是设备在发送响应时CRC算错了,或者把响应类型弄混了。
- 状态机转换:SDIO卡有一张完整的状态转移图。比如卡在disconnect状态下收到CMD7,应该返回什么?规范里写得清清楚楚。
- 数据块传输:包括块长度、块计数、CRC16校验。多块传输时还要检查停止命令的时序窗口。
- 中断机制:SDIO特有的卡中断功能。中断信号必须在指定窗口内拉低,否则主机可能漏检。
2.6 三类测试的排查优先级
做个简单的总结。我排查问题时,永远遵循这个顺序:
- 第一步:示波器看波形,确认电气参数合规
- 第二步:用时序分析工具量建立/保持时间
- 第三步:逻辑分析仪抓协议,验证命令响应交互
- 第四步:跑完整的符合性测试用例,逐条过
这个顺序不是随便定的。电气问题是根源,时序问题是桥梁,协议问题是表象。底子没打好,上面怎么修都白搭。
好了,这一章的内容就是这些。标准体系搞清楚了,测试项分类也明白了,后面各章我们就针对这些测试项,一个一个讲具体的失败案例和排查方法。