STM32_SDIO

目录

1:SDIO简介

2:SDIO接口特点 

3:SDIO框图 

4:SDIO命令与响应

5:SDIO块数据传输


1:SDIO简介

Secure Digital Input and Output:安全数字输入输出接口。SDIO提供APB2外设总线与多媒体卡(MMC)、SD卡,SD/IO卡以及CE_ATA设备之间的接口

2:SDIO接口特点 

  • 与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。
  • 与较早的多媒体卡系统规格版本全兼容(向前兼容)。
  • 与SD存储卡规格版本2.0全兼容。 
  • 与SD I/O卡规格版本2.0全兼容:支持两种不同的数据总线模式:1位(默认)和4位。
  • 完全支持CE-ATA功能(与CE-ATA数字协议版本1.1全兼容)。  8位总线模式下数据传输速率可达48MHz。
  • 数据和命令输出使能信号,用于控制外部双向驱动器。

3:SDIO框图 

eg:STM32F4

SDIO由两部分组成

  • SDIO 适配器块提供特定于 MMC/SD/SD I/O 卡的所有功能,如时钟生成单元、命令和数 据传输。
  • APB2 接口访问 SDIO 适配器寄存器,并且生成中断和 DMA 请求信号。

复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置)

如果多媒体卡连接到总线,则 SDIO_D0SDIO_D[3:0] SDIO_D[7:0] 可以用于数据传输(也就是前面所说支持三种不同的总线模式)。 MMC V3.31 或更低版本仅支持 1 位数据,因此只能使用 SDIO_D0
 

SDIO适配器时钟(SDIOCLK):该时钟用于驱动SDIO适配器,可用于产生SDIO_CLK时钟,对F4来说,SDIOCLK来PLLCK(48M

SDIO_CK计算公式:SDIO_CK=SDIOCLK/(2+CLKDIV)

注:在SD卡初始化时,SDIO_CK不可以超过400Khz,初始化完成后,可以设置为最大频率(但不可以超过SD卡最大操作频率)。

4:SDIO命令与响应

SDIO的命令分为:应用相关命令(ACMD)和通用命令(CMD)两部分。发送ACMD时,需先发送CMD55。
SDIO所有的命令和响应都是在SDIO_CMD引脚上面传输的,命令长度固定为48位,SDIO命令格式如下表所示:

 其中:除了命令索引和参数需要我们设置,其他都是由SDIO硬件自动控制。命令索引(如CMD0,CMD1之类)由SDIO_CMD寄存器设置,命令参数则由SDIO_ARG寄存器设置。

一般SD卡在接收到命令行,都会有一个应答(CMD0例外),这个应答我们也称之为响应。STM32的SDIO接口,支持2种响应类型:短响应(48位)和长响应(136位)。

 不论是短响应还是长响应,硬件都会自动滤除了起始位、传输位、CRC7以及结束位等信息,对于短响应,命令索引存放在SDIO_RESPCMD寄存器,参数则存放在SDIO_RESP1寄存器里面。对于长响应,则仅留CID/CSD位域,存放在SDIO_RESP1~SDIO_RESP4等4个寄存器。

SD卡总共有6类响应(R1、R1b、R2、R3、R6、R7),不多做赘述

5:SDIO块数据传输

SDIO与SD卡通信一般以数据块的形式进行传输,SDIO(多)数据块读操作
  从机在收到主机相关命令后,开始发送数据块给主机,所有数据块都带CRC校验(由硬件自动处理),单个数据块读的时候,在收到1个数据块以后即可以停止了,不需要发送停止命令(CMD12)。但是多块数据读的时候,SD卡将一直发送数据给主机,直到接到主机发送的STOP命令(CMD12)。
 
SDIO(多)数据块写操作:

  数据块写操作同数据块读操作基本类似,只是数据块写的时候,多了一个繁忙判断,新的数据块必须在SD卡非繁忙的时候发送。这里的繁忙信号由SD卡拉低SDIO_D0,以表示繁忙,SDIO硬件自动控制,不需要我们软件处理。 

先写到这里,等到什么时候可以实战做一些东西的时候,再回来继续

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章