自学内容网 自学内容网

嵌入式基础 -- SDIO协议

SDIO 硬件、协议与 Linux 驱动技术文档

1. SDIO 简介

SDIO(Secure Digital Input Output)协议是SD存储卡的物理接口扩展,允许通过SD总线连接和控制各种I/O设备,如Wi-Fi、蓝牙、GPS模块等。SDIO协议在标准的SD协议基础上扩展,实现了存储和I/O功能的兼容。

2. SDIO 的物理接口和信号

SDIO使用标准的SD物理接口,共有九个针脚,其中五个用于数据传输,四个用于电源和控制信号。

  • 数据线
    • DAT[0:3]:四条数据线,用于并行数据传输。SDIO设备可以在1位模式或4位模式下工作。
  • 命令线
    • CMD:命令线,主机通过这条线向SDIO设备发送命令,设备也通过这条线向主机发送响应。
  • 时钟线
    • CLK:时钟线,由主机提供的时钟信号,所有数据传输都以此为参考时钟。
  • 电源线
    • VDD:电源供给,一般为3.3V。
    • VSS1和VSS2:地线。
  • 卡检测信号
    • CD/DAT3:用于检测卡是否插入。

3. SDIO 的电气特性

  • 电压范围:标准SDIO设备工作电压为3.3V,一些低功耗设备可能支持1.8V。
  • 时钟频率:SDIO设备的时钟频率范围通常为0到50MHz,具体速率由主机控制器设定。
  • 传输模式:SDIO设备可以工作在单线模式或四线模式。

4. SDIO 主机控制器

SDIO主机控制器是管理SDIO设备的核心硬件模块,负责发送命令、接收响应、处理数据传输以及管理时钟和电源。

主机控制器的关键功能:

  1. 命令发送与接收:通过CMD线向SDIO设备发送命令,并接收设备的响应。
  2. 数据传输管理:管理通过DAT[0:3]的数据传输,在1位或4位模式下进行。
  3. 时钟控制:生成并提供CLK信号,所有的SDIO传输都基于此时钟同步。
  4. 电源管理:控制VDD电压的供应,必要时可以对设备进行供电控制。
  5. 中断管理:处理SDIO设备发出的中断信号。
  6. 多设备支持:在同一条SD总线上管理多个设备,通过设备的RCA来区分。

典型的主机控制器类型:

  • SDHCI(SD Host Controller Interface):常见的SD主机控制器标准。
  • 平台专用控制器:例如ARM SoC中的定制SDIO控制器。

5. SDIO 设备端硬件实现

SDIO设备通常是集成了特定功能的I/O设备,例如Wi-Fi或蓝牙模块。SDIO设备包含若干硬件模块来支持协议操作和功能实现。

设备端的关键模块:

  1. 协议控制器:处理SDIO命令和数据传输。
  2. 功能块(Function Blocks):每个功能块执行特定功能(如Wi-Fi、蓝牙)。
    • Function 0:通用控制功能。
    • Function 1及以上:具体的I/O功能。
  3. 寄存器结构
    • CCCR(Card Common Control Register):控制设备的整体行为。
    • FBR(Function Basic Register):控制具体功能块的操作。
    • CIS(Card Information Structure):存储设备描述信息。
  4. 数据缓冲器:用于临时存储数据块,以提高传输速度。
  5. 中断管理:通过CMD52命令或硬件中断线发出中断请求。

6. SDIO 通信流程

SDIO通信流程基于命令和响应的模式进行,包括设备的初始化、数据传输和中断处理。

初始化流程:

  1. 设备检测:主机通过CMD0复位设备。
  2. OCR读取:主机发送CMD5读取设备的操作电压范围。
  3. 初始化功能块:主机通过CMD52命令启用功能块并读取设备信息。
  4. RCA分配:主机通过CMD3为设备分配唯一的RCA。

数据传输流程:

  1. 选择功能块:通过CMD52命令选择功能块。
  2. 块数据传输:通过CMD53命令进行多字节数据传输。

中断处理:

  1. 中断请求:SDIO设备向主机发送中断信号。
  2. 中断响应:主机使用CMD52命令查询中断状态。

7. SDIO 在 Linux 内核中的实现

Linux内核对SDIO设备的支持通过MMC子系统提供,具体实现如下:

  • 主机控制器驱动:位于 drivers/mmc/host/ 目录,管理与SD/SDIO设备的物理通信。
  • SDIO协议实现:位于 drivers/mmc/core/sdio.c 文件,定义了SDIO协议相关的命令解析、寄存器读写、数据传输和中断处理逻辑。
  • 设备驱动:SDIO设备的驱动位于设备的 drivers/net/wireless/drivers/bluetooth/ 目录。

8. 典型 SDIO 设备和应用

  • Wi-Fi模块:用于高速无线数据传输,典型设备如Broadcom、Realtek的Wi-Fi芯片。
  • 蓝牙模块:SDIO用于蓝牙设备通信,实现快速响应。
  • GPS模块:通过SDIO接口连接GPS芯片,实现定位数据传输。

9. 总结

SDIO协议的硬件实现基于SD卡的物理接口,支持多功能I/O设备的通信。通过主机控制器与设备的协同工作,SDIO实现了存储与I/O功能的集成,支持多种I/O设备应用。SDIO协议的硬件实现不仅支持单字节数据传输,还可以通过块模式实现大数据量传输,适合高速无线通信设备等场景。


原文地址:https://blog.csdn.net/sz66cm/article/details/142978407

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!