SDIO 接口概述与协议基础
做嵌入式这么多年,我打交道最多的外设接口就是 SDIO。Wi-Fi 模块、蓝牙、GPS、NFC……很多高速无线芯片都挂 SDIO 上。刚开始不懂时序,layout 拉线随性,结果通信经常断。后来才明白——先把协议层摸透,再调时序才心里有数。
这一章咱们把 SDIO 的基本概念、和 SD、eMMC 的区别、协议分层结构过一遍。不扯虚的,全是干活用得上的东西。
1.1 SDIO 总线标准简介
SDIO(Secure Digital Input Output)是 SD 卡协会定义的扩展标准。说白了,就是把 SD 卡那根总线拿出来,接非存储类的外设。
标准版本从 1.0 到 3.0,速率从 25 MHz 到 208 MHz。我更喜欢用 4-bit 模式,配合 DDR 采样,跑 50 MHz 就能扛起大部分 WiFi 芯片的吞吐。默认电压 3.3 V,新型号也支持 1.8 V 低功耗。
总线信号线只有 6 根 + 1 根卡检测:
- CLK —— 主机提供时钟
- CMD —— 命令/响应通道(双向)
- DAT[3:0] —— 数据线,可选 1/4-bit
- CD/DAT[3] —— 复用卡检测
注意:SDIO 主机永远是主动方,从设备只响应。初始化时先发 CMD0 复位,再发 CMD5、ACMD41 等一系列握手,我在这里栽过——有些 WiFi 模块 ACK 响应慢,必须加超时重试。
1.2 SDIO vs SD vs eMMC 区别
很多新手把这三个混着用,layout 走线想省事直接套 SD 模板。结果 eMMC 跑不稳定,SDIO WiFi 丢包。我把关键差异整理成一张表,你调时序前一定对照看看。
| 对比项 | SD 卡 | SDIO 设备 | eMMC |
|---|---|---|---|
| 协议起源 | 存储卡标准 | 基于 SD 的外设扩展 | MMC 演化,JEDEC 标准 |
| 命令体系 | CMD0-64 聚焦存储读写 | 借 CMD5、CMD52/53 做 IO | MMC 命令集,与 SDIO 不兼容 |
| 数据总线 | 1/4-bit | 1/4-bit,可选 SPI | 4/8-bit,可 DDR |
| 最大时钟 | 208 MHz (UHS-II) | 208 MHz (SDIO 3.0) | 200 MHz (HS400) |
| 工作电压 | 3.3/1.8 V | 3.3/1.8 V | 3.3/1.8/1.2 V |
| 典型场景 | 存储卡、TF 卡 | WiFi/BT/GNSS 模组 | 板载存储、移动设备 eMMC |
| 热插拔 | 支持(插入检测) | 支持(但 WiFi 少见热拔) | 不支持(焊在板上的) |
我曾经踩过的坑: 把 eMMC 当做 SDIO 设备初始化——CMD0 后直接发 ACMD41,eMMC 会忽略,卡在空闲态。后来查 spec 才发现 eMMC 不走 ACMD41,得用 CMD1 做初始化。时序参数完全两套,千万别混用。
1.3 SDIO 协议分层结构
我习惯把 SDIO 协议看成三层:物理层、传输层、应用层。物理层管时钟和电气特性;传输层管命令-响应交互;应用层管你接的外设具体做了什么。画了张图,一眼就能看明白。
你看,物理层直接决定你 layout 能跑多快。传输层靠时序约束来保证边沿对齐。应用层反而是最不需要操心的——驱动层帮你封装了。
我个人的实践心得: 新手调 SDIO 时总喜欢直接在应用层打 log 看数据对不对。其实第一步应该用示波器看 CLK 和 CMD 的边沿关系,确认物理层信号质量。物理层不干净,上层调破头也没用。
1.4 初始化流程概览
SDIO 设备从上电到正常工作,要经过严格的握手。我用列表把关键步骤列出来,你对着 spec 一步步走,基本不会跑偏。
- 上电等待:VDD 稳定后至少等 74 个 CLK
- CMD0:复位所有卡到 Idle 状态
- CMD8:查询电压范围(SDIO 2.0+ 必须支持)
- CMD5(IO_SEND_OP_COND):获取 IO 功能数,确认工作电压
- ACMD41(通过 CMD55 前缀):初始化 SDIO 协议细节
- CMD3(SEND_RCA):分配相对卡地址
- CMD7:选中设备进入数据传输模式
- CMD52/CMD53:读取 CIS(卡信息结构),配置函数
小技巧: 初始化时我习惯把 CMD 和 DAT 都配置成弱上拉,防止总线悬空造成误检测。等握手完成再切到正常驱动。这个细节在高速模式下尤其重要。
好了,这一章讲完了。SDIO 的基础框架咱们心里有数。下一章开始,我们会把重点放在时钟时序参数的具体调节上,比如建立/保持时间的测量方法、驱动强度的选择、不同速率模式下的走线规则。有了协议底子,后面的实操才不会迷路。
(注:本章已覆盖 SDIO 概述、三者差别、协议分层和初始化流程。无额外图片链接,SVG 仅一张,配色符合规范。)