第一章 SDIO接口概述:协议基础、信号定义与工作模式
各位同学,咱们今天聊聊SDIO。SDIO,全称Secure Digital Input Output,是在SD卡规范上扩展出来的一套接口协议。说白了,它既能当存储卡用,也能接WiFi模块、蓝牙模块、GPS、摄像头这些外设。我做硬件这些年,SDIO的调试坑没少踩,刚开始总觉得它就是“高速SPI”,结果吃了不少亏。这章咱们把基础打牢,后面讲阻抗匹配和信号完整性才有意义。
1.1 SDIO协议基础
SDIO协议脱胎于SD卡规范,但比SD卡灵活得多。它支持两种总线模式:SD模式和SPI模式。SD模式是主流,咱们重点讲它。SD模式下,总线架构是主从结构,一个主机(比如CPU的SDIO控制器)可以挂多个从设备(比如一个WiFi模块、一个蓝牙模块),通过设备地址来区分。
我记着有个项目,客户把两个SDIO设备挂在同一总线上,结果读写总出错。后来才发现,设备地址冲突了——因为有些便宜的SDIO从机设备地址是固定的,没法改。嗯,选型时一定要确认地址可配置。
核心要点:SDIO协议基于命令-响应机制。主机发命令,从机回响应。数据可以1位、4位或8位(仅SD模式支持8位)并行传输。时钟频率从0到最大208MHz(SD 6.0规范),但实际PCB上能跑多少,就看你的信号完整性功底了。
协议分层大致是这样:
- 物理层:定义电气特性、信号线、时序。
- 命令层:定义命令格式、命令索引、响应类型。
- 数据传输层:数据块读写、流式传输、CRC校验。
- 应用层:具体功能(如WiFi扫描、蓝牙配对)。
在实际PCB设计里,咱们最关心物理层和数据传输层。电气特性直接决定走线阻抗、匹配、串扰。
1.2 信号定义
SDIO接口在SD模式下有9根线:
| 信号名称 | 方向 | 功能描述 |
|---|---|---|
| CLK | 主机→从机 | 时钟信号,所有操作同步于此 |
| CMD | 双向 | 命令/响应线,三态门驱动 |
| DAT0~DAT3 | 双向 | 数据线,可配置1位、4位或8位模式 |
| VDD | 电源 | 供电(典型3.3V或1.8V) |
| VSS | 地 | 电源地 |
| CD/DAT3(可选) | 输入 | 卡检测或复用为DAT3 |
注意:CMD和所有DAT线都是双向推挽输出,但主机输出时从机必须三态,反之亦然。这个切换时序很关键,我曾遇到过从机释放总线太慢,导致主机下一笔命令被从机残留数据干扰——一个示波器才抓出来。
避坑:SDIO总线在高速时(>50MHz),走线必须做阻抗控制。我见过不少工程师把CMD和DAT线当普通GPIO随便拉,结果时序余量全没了。CLK信号更是重中之重,它如果反射严重,整个总线都乱套。
信号电平:SDIO支持两种电压——3.3V和1.8V。UHS-I模式(Ultra High Speed Phase I)强制用1.8V。如果你的主芯片最高只支持3.3V,那就不能接UHS-I设备,除非加电平转换。我自己习惯在原理图阶段就把电平转换预留上,省得后面改板。
1.3 工作模式
SDIO的工作模式,按数据传输方式分三大类:
- 默认模式(Default Speed):时钟最高25MHz,4位数据,最大吞吐12.5MB/s。适合中低速外设,比如简单的触控屏。
- 高速模式(High Speed):时钟最高50MHz,4位数据,最大吞吐25MB/s。这是目前绝大多数SDIO设备的标准模式,比如常见的WiFi模块(88W8801等)。
- UHS-I模式(Ultra High Speed Phase I):时钟最高208MHz,支持SDR12(12.5MB/s)、SDR25(25MB/s)、SDR50(50MB/s)、DDR50(50MB/s,双沿采样)和SDR104(104MB/s)。注意:UHS-I必须用1.8V信号,且对PCB布局要求极高。
另外,还有SPI模式作为备胎。SPI模式只用CLK、CMD(作为MOSI)、DAT0(作为MISO)、DAT3(作为CS),外加VDD和VSS。这个模式主要用于低速MCU或调试。我当年在产品调试阶段,有时候先用SPI模式把通信调通,再切回SD模式,能省不少事。
小技巧:设计时尽量把SDIO总线所有信号(CLK、CMD、DAT0-DAT3)等长布线。如果无法完全等长,CLK要比数据线稍短一点(数据线先到,CLK后到),这样能保证建立时间。误差控制在200mil以内,高频时最好50mil。
1.4 本章知识结构图
为了帮大家理清思路,我画了一张结构图,把SDIO的协议基础、信号定义、工作模式串起来。你可以把它当作索引,后面各章节都会回到这张图上。
这张图把SDIO的知识骨架画出来了。从左到右分别是协议基础、信号定义、工作模式,底部是PCB设计的重点——这些都是咱们后续章节要深挖的东西。你想想看,理解了这三块,后面讲阻抗匹配、串扰抑制、参考层设计、过孔优化时,就知道该针对哪根线、哪种速率做处理了。
1.5 小结
本章咱们把SDIO的底牌亮了一遍:协议怎么跑、线怎么定义、模式怎么选。说白了,SDIO就是一套全双工高速串行总线(时钟独立),设计难点在于高速信号完整性。我个人习惯在项目开始前先确定工作模式(默认/高速/UHS-I),再据此确定走线阻抗目标(常见50Ω单端,差分未用),然后层层拆解。