什么是 SDIO 控制器?
SDIO 控制器(Secure Digital Input Output Controller)是嵌入式系统中非常重要的一个模块,用于通过 SD 接口连接各种 非存储类外设(如 Wi-Fi 模块、蓝牙模块、FPGA、自定义从设备等)。
- 是一种扩展的 SD 主机控制器(SD Host Controller)。
- 支持 SDIO 协议标准,可以与支持 SDIO 的从设备进行数据通信。
- 属于 SD 协议的一部分,但面向的是 外设设备通信,而非存储。
- 通信采用 命令(CMD)+ 数据(DAT0~DAT3)+ 时钟(CLK)。
- 支持 中断、寄存器访问、异步数据传输等功能。
接下来对其进行详细的说明,包括定义、架构、常见用途,并以瑞芯微 RK3588 为例说明与 FPGA 设备通信的设计建议。
SDIO 通信架构
+-------------------+ +--------------------+
| RK3588 (Host) |<--->| FPGA (Slave) |
| | | |
| SDIO Controller | | SDIO Slave Logic |
+-------------------+ +--------------------+
- 主设备(Host):RK3588(或任意 ARM SoC)
- 从设备(Slave):FPGA 模拟 SDIO 设备,响应命令、返回数据
- 典型线数:CMD、CLK、DAT0~DAT3、(可选中断线)
SDIO 控制器的主要功能
| 功能类型 | 说明 |
|---|---|
| 命令控制 | 向设备发送 CMD0~CMD53 等命令 |
| 块/字节传输 | 支持多块(multi-block)与字节级传输 |
| 总线宽度 | 1-bit / 4-bit 模式可选 |
| 中断支持 | 支持设备发起中断(IRQ)到主控 |
| DMA 支持 | 部分 SoC 支持 DMA,提升吞吐量 |
RK3588 的 SDIO 控制器支持
RK3588 内置多个 SDMMC/SDIO 控制器,部分通道可配置为 SDIO 模式。
如何使用:
- 硬件连线
- CMD, CLK, DAT0~DAT3 接 FPGA 或 WiFi/BT 模块
- 可选:添加 CD(卡检测)和 WP(写保护)引脚
- 设备树配置 (Device Tree)
- 指定为
sdio模式,而非mmc存储设备模式 - 启用中断、DMA、总线宽度参数等
- 指定为

