SDIO接口及驱动

article/2025/10/23 22:44:34

1. 简介

1.1 SDIO接口应用场景

  • SDIO 通过 SD 的 I/O 管脚来连接外部的外围 device 并传输数据。这些外围设备,我们称为 SDIO 设备,常见的有:
    • Wi-Fi card(无线网络卡)
    • CMOS sensor card(照相模块)
    • GPS card
    • GSM/GPRS modem card
    • Bluetooth card
    • Radio/TV card

1.2 SDIO速度

  • SDIO1.0标准定义了两种类型的SDIO卡:
    • 全速的SDIO卡,传输率可以超过100Mbps
    • 低速的SDIO卡,时钟频率在0至400KHz之间

1.3 SDIO传输模式

  • 支持的工作模式
    • SPI模式:标准的SPI模式
    • 1-bit 模式:cmd line、 data line、clk line、irq Line
    • 4-bit模式:1 cmd line 、3 data line、clk
  • 在SPI模式中,第8脚位被当成中断信号。其它脚位的功能和通信协定与SD记忆卡的标准规范一样。在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线
    在这里插入图片描述

2. 硬件接口

2.1 SDIO 总线

  • SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端 发送 命令开始的,Device端只要能解析命令,就可以相互通信
  • 信号线
    • CLK信号:HOST给DEVICE的 时钟信号,每个时钟周期传输一个命令
    • CMD信号:双向 的信号,用于传送 命令 和 反应
    • DAT0-DAT3 信号:四条用于传送的数据线
    • VDD信号:电源信号
    • VSS1,VSS2:电源地信号

2.2 SDIO命令

  • SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求

  • SDIO 命令由6个字节(48位)组成
    在这里插入图片描述

  • Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的

  • Response:响应是DEVICE返回的HOST的命令,作为Command的响应。也是通过CMD线传送的。

  • Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。

  • 命令与响应:SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要

  • 读命令

    • 首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应
    • 从机在收到主机相关命令后,开始发送数据块给主机,所有数据块都带CRC校验(由硬件自动处理),单个数据块读的时候,在收到1个数据块以后即可以停止了,不需要发送停止命令(CMD12)。但是多块数据读的时候,SD卡将一直发送数据给主机,直到接到主机发送的STOP命令(CMD12)。
    • 相关命令
(1)发送 CMD17 (单块)或 CMD18 (多块)读命令,返回 0x00
(2)接收数据开始令牌 0xfe (或 0xfc ) + 正式数据 512Bytes + CRC 校验 2Bytes,默认正式传输的数据长度是 512Bytes ,可用CMD16 设置块长度。

在这里插入图片描述

  • 写命令
    • 首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。
    • 数据块写操作同数据块读操作基本类似,只是数据块写的时候,多了一个繁忙判断,新的数据块必须在SD卡非繁忙的时候发送。这里的繁忙信号由SD卡拉低SDIO_D0,以表示繁忙,SDIO硬件自动控制,不需要我们软件处理
(1)发送 CMD24 (单块)或 CMD25 (多块)写命令,返回 0x00
(2)发送数据开始令牌 0xfe (或 0xfc ) + 正式数据 512Bytes + CRC 校验 2Bytes

在这里插入图片描述

  • SD卡擦出
(1)发送 CMD32,跟一个参数来指定首个要擦除的起始地址(SD手册上说是块号)
(2)发送 CMD33,指定最后的地址
(3)发送 CMD38,擦除指定区间的内容

3. Linux SDIO WIFI驱动

  • SDIO 接口的 wifi,首先,它是一个 sdio 卡 设备,然后具备了 wifi 的功能,所以 SDIO 接口的 WiFi 驱动就是在 wifi 驱动外面套上了一个 SDIO 驱动 的外壳
  • SDIO驱动代码目录:drivers/mmc 下有 mmc卡、sd卡、sdio 卡驱动
  • 驱动分层:主机驱动层(实现SDIO驱动) => 核心层(向上向下接供接口) => 设备驱动层(WiFi设备)
  • core目标(CORE层):代码位于drivers/mmc/core目录下,其中是媒体卡的通用代码。包括 core.c host.c stdio.c
  • 核心层的功能
    • 不同协议和规范的实现
    • 为 HOST 层的驱动提供了接口函数
    • 完成了 SDIO 总线注册
    • 对应 ops 操作
    • 支持 mmc 的代码
  • host目录(HOST层):host 目录(HOST 层)是根据不同平台而编写的 host 驱动
  • WiFi驱动流程:
rockchip_wifi_init_module_rkwifi //创建了一个内核线程 wifi_init_thread
—wifi_init_thread //->
——dhd_module_init
———dhd_wifi_platform_register_drv // 查找设备,注册 wifi 驱动,注册成功调用后面的 bcmdhd_wifi_plat_dev_drv_probe
————wifi_ctrlfunc_register_drv
————|—bus_find_device //查找 wifi 设备
————|—platform_driver_register(&wifi_platform_dev_driver) //注册 wifi 驱动
————bcmdhd_wifi_plat_dev_drv_probe //->
—————dhd_wifi_platform_load //两个操作
——————wl_android_init //1. wlan 初始化
——————dhd_wifi_platform_load_sdio //2. 根据 接口类型 usb、sdio、pcie 选择不同的操作
———————dhd_bus_register // 注册成功就调用 dhd_sdio.dhdsdio_probe
————————bcmsdh_register(&dhd_sdio)
————————|—bcmsdh_register_client_driver
————————|——sdio_register_driver(&bcmsdh_sdmmc_driver) //注册成功调用 bcmsdh_sdmmc_probe
————————|———bcmsdh_sdmmc_probe //->
————————|———sdioh_probe
————————dhdsdio_probe

http://chatgpt.dhexx.cn/article/dRXjGwkd.shtml

相关文章

SDIO——读写SD卡

SDIO的设备分类&#xff1a; SD / IO卡&#xff1a;这不是一种卡&#xff0c;现在已经不常用了&#xff0c;用到时再查。SD存储卡&#xff1a;分局容量不同有三种名字① < 2GB 的叫SDSC&#xff1b;② >2GB < 32GB的叫SDHC卡&#xff1b;>32GB < 2TB 的叫SDXC卡…

SDIO接口介绍

SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 1.全速的SDIO卡&#xff0c;传输率可以超过100Mbps&#xff1b; 2.低速的SDIO卡&#xf…

SDIO读写SD卡速度有多快?

前两天测试了SPI方式读写SD卡的速度《SPI方式读写SD卡速度测试》&#xff0c;今天来测试一下SDIO方式的读写速度。 测试条件&#xff1a; 单片机&#xff1a;STM32F407VET6 编译环境&#xff1a;MDK 5.30HAL库 SD卡&#xff1a;闪迪32GB/64GB TF卡 文件系统&#xff1a;FatFS R…

SDIO接口(2)——SD卡寄存器

1.SD卡寄存器 SDIO接口中定义了8个寄存器&#xff1a;OCR&#xff0c;CID&#xff0c;CSD&#xff0c;RCA&#xff0c;DSR&#xff0c;SCR&#xff0c;SSR&#xff08;仅sdio卡支持&#xff09;&#xff0c;CSR&#xff08;仅sdio卡支持&#xff09;。 这些寄存器只能通过对应…

SDIO总线(一)

SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡: 1.全速的SDIO卡,传输率可以超过100Mbps; 2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。 SDIO协议是由SD卡的协议…

[SDIO].SDIO总线详解

转自&#xff1a;https://blog.csdn.net/liuhan33025/article/details/51131848 SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 全速的SDIO…

SD 和 SDIO

SD 和 SDIO SD 和 SDIO SD&#xff08;Secure Digital&#xff09;是一种关于 Flash 存储卡的标准&#xff0c;也就是一般常见的 SD 记忆卡&#xff0c;在设计上与 MMC&#xff08;Multi-Media Card&#xff09;保持了兼容。SDHC&#xff08;SD High Capacity&#xff09;是大…

STM32——SDIO简介

一、什么是SDIO接口&#xff1f; SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output&#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可以兼容之前的SD卡&#xff0c;并且可以连接SDIO接口设备&#xff0c;比如&#xff1a…

一,sdio总线简介

sdio总线简介 一&#xff0c;简要二&#xff0c;SDIO总线物理电气特性 1&#xff0c;card电压的供电范围 2&#xff0c;信号pin脚定义 3&#xff0c;Bus Speed模式 三&#xff0c;SDIO Card类型分类四&#xff0c;SDIO Card 传输模式 一&#xff0c;简要 SDIO协议是由SD协议…

SDIO接口(3)——SDIO总线接口

SDIO总线接口 SDIO是在SD标准上定义了一种外设接口&#xff0c;故名思义&#xff0c;就是SD的I/O接口的意思。SD本来是记忆卡的标准&#xff0c;但是现在把SD连接一些外围I/O使用&#xff0c;这样边形成了SDIO接口。SDIO本身只是一种接口技术&#xff0c;类似于SPI接口&#x…

STM32——SD卡实验(SDIO方式)

一、SD卡简介 1、什么是SD卡&#xff1f; SD卡&#xff08;Secure Digital Memory Card&#xff09;即&#xff1a;安全数码卡。它是在MMC的基础上发展而来&#xff0c;是一种基于半导体快闪记忆器的新一代记忆设备&#xff0c;它被广泛的用于便携装置上使用&#xff0c;例如…

SDIO接口(4)——SDIO通信

SDIO通信 SD总线上的通信基于命令和数据位流&#xff0c;这些命令和数据位流由起始位启动&#xff0c;并由停止位终止。 SDIO总线上的设置和控制都是通过命令来实现&#xff0c;SDIO总线上都是HOST端发起请求&#xff0c;然后DEVICE端回应请求&#xff0c;其中请求和应答中会包…

STM32 SDIO详解

目录 01、SDIO简介 02、SDIO特点 03、SDIO时钟 04、SDIO的命令与响应 05、SDIO块数据传输 06、代码 1、SDIO简介 SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output&#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可…

SDIO简介

SDIO&#xff0c;全称&#xff1a; Secure Digital Input and Output &#xff0c;即安全数字输入输出接口。它是在SD卡接口的基础上发展而来&#xff0c;它可以兼容之前的SD卡&#xff0c;并可以连接SDIO接口设备&#xff0c;比如&#xff1a;蓝牙、WIFI、照相机等。 S…

SDIO接口

一、SDIO简介 SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 1.全速的SDIO卡&#xff0c;传输率可以超过100Mbps&#xff1b; 2.低速的…

SDIO接口(1)——SDIO简介

博客系列 SDIO接口&#xff08;1&#xff09;——SDIO简介 SDIO接口&#xff08;2&#xff09;——SD卡寄存器 SDIO接口&#xff08;3&#xff09;——SDIO总线接口 SDIO接口&#xff08;4&#xff09;——SDIO通信 1.SDIO简介 SDIO(Secure Digital Input and Output)&#…

STM32——SDIO的学习(驱动SD卡)(理论篇)

目录 一、SD卡简介 1.1历史 1.2 tf卡和SD卡的区别 1.3 mmc&#xff0c;emmc&#xff0c;nand&#xff0c;flash的关系 1.4 SD卡的规格等级 1.4.1按容量分 1.4.2 class等级 1.4.3 UHS总线模式 1.4.4 UHS速度等级 1.4.5 VSC视频速度等级 二、SD卡的内部结构 三、SDIO…

SDIO(安全数字输入输出)/协议

目录 一、SDIO&#xff1a;安全数字输入输出 目录 定义 功能 二、SDIO协议 介绍 信号 协议 一般协议 写协议 读协议 命令 命令格式 命令应答 数据 三、一文搞懂SDIO 四、SDIO简介 五、SD卡引脚定义和图连接 六、SDIO协议简介 七、MMC、SD、TF、SDIO、SDMMC简…

SDIO协议

SDIO协议 1 概述 SDIO&#xff0c;全称&#xff1a;Secure Digital Input and Output &#xff0c;即安全数字输入输出接口。2 特点 ①与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式&#xff1a;1位(默认)、4位和8位。②与较早的多媒体卡系统规格版本全兼容…

硬件接口之SDIO

SDIO接口是在SD内存卡接口的基础上发展起来的接口&#xff0c;SDIO接口兼容以前的SD内存卡&#xff0c;并且可以连接SDIO接口的设备。 参考 SDIO1.0标准定义了两种类型的SDIO卡&#xff1a; 全速的SDIO卡&#xff0c;传输率可以超过100Mbps&#xff1b;   低速的SDIO卡&#…