打印
[APM32F4]

APM32外设SDIO和SD卡的配置(上)

[复制链接]
458|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 susutata 于 2023-4-26 10:10 编辑

APM32外设SDIO和SD卡的配置 - 上



01 SD Card简介

SD卡(SD Card,Secure Digital Memory Card),是一种安全数码卡。现在已经被TF卡(MicroSD)取代。TF卡已经成为最广泛应用于数码、存储等便携设备上的新型快闪存储卡。SD卡和TF卡有不同的容量标准和速度等级。

容量标准
SD卡和TF卡的容量标准如下表所示。

速度等级
速度等级如下表所示。        
SD卡的结构
SD卡的结构组成包括存储单元、存储单元的接口、电源检测、卡及接口控制器和接口驱动器。
  • 存储单元是存储数据的部件,存储单元通过存储单元接口与卡控制单元进行数据的传输;
  • 电源检测单元保证SD卡工作在合适的电压下,如果出现掉电或者异常状态时,它会使控制单元和存储单元接口复位;
  • 卡及接口控制单元控制SD卡的运行状态,包含几个特殊寄存器;
  • 接口驱动器控制SD卡引脚的输入和输出。


PIN脚定义
标准SD卡有九个对外的触点,SD模式和SPI模式下的引脚定义不同。
  • DAT线和CMD线需要接上拉电阻。
  • CD线在power up后能够作为SD模式的“卡检测”端口或SPI模式的片选端。
  • RESERVED引脚也需外接上拉电阻,避免浮空输入导致功耗的增加。


SD Mode


SPI Mode


存储单元
读写SD卡数据的基本单位是1 byte,所有数据都是以block的形式来传输的。SDHC标准卡的数据块长度为512 bytes。每个sector扇区的block大小是固定的,定义在CSD寄存器中。
->block长度可以通过CSD寄存器自定义

SD卡的寄存器

OCR
Operation Conditions Register (OCR),操作条件寄存器,存储着SD卡的VDD电压配置文件,寄存器结构如下。
CID
Card Identification Register (CID),卡标识寄存器,长度共16字节,包含唯一的卡识别码。寄存器结构如下图所示。
CSD
Card Specific Data (CSD) Register,卡描述数据寄存器,用于获取SD卡的信息。具体结构大家可以查看官方手册。

RCA
Relative Card Address (RCA),卡相对地址寄存器,此地址用于卡识别程序后寻址的主机卡通信。
->此外还有SSR和CSR等,而SPI模式下的寄存器基本一致,有些微小区别,具体可以查看官方手册。

SD总线
根据PIN脚定义可知,SD卡的MMC(MultiMediaCard)总线包括下图中的信号。
  • SD卡主从两个方向的传输都只以CLK 的上升沿有效。
  • SD卡的整个操作过程中会使用到两种不同频率的时钟来同步数据,一个是卡识别阶段的时钟频率FOD,最高为400kHz。另外一个是数据传输模式下的时钟频率FPP,默认最高为25MHz。如果通过相关寄存器配置使SD总线工作在高速模式,则最高频率可达到50MHz。



特点
1.通电后,默认情况下,SD卡只使用DAT0进行数据的传输
2.完成初始化后,SD总线允许动态配置数据线的数量

SPI总线
和普通SPI总线一样,带有SCK、CS、MOSI和MISO四个信号。SPI的相关SD配置,这里不展开,具体可以查看官方手册。

SD总线协议
SD 总线上的通信是基于命令和数据传输的。通信过程由一个起始位(“0”)启动,而由一个停止位(“1”) 终止。SD总线的基本交互过程是命令和响应的交互,一般是主机向从机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如果有数据的传递需求,则会有数据(Data)的传输参与到整个通信过程中。

命令格式
SD 命令格式固定为48bit,都是通过CMD 线连续传输的。

命令类型
命令类型共有四种,分别是:
1.Broadcast(bc),无响应广播命令,发送到所有卡,不返回任务响应;
2.Broadcast w/Response(bcr),带响应广播命令,发送到所有卡,同时接收来自所有卡响应;
3.Addressed point-to-point(ac),寻址命令,发送到选定卡,DAT 线无数据传输;
4.Addressed point-to-point data transfer(adtc),寻址数据传输命令,发送到选定卡,DAT 线有数据传输。
->另外还有两种通用命令,特定应用命令(ACMD) 和常规命令(GEN_CMD)。其中ACMD命令发送前,需要先发送CMD55 命令。

基本命令(Class 0)
block读命令(Class 2)


block写命令(Class 4)


擦除命令(Class 5)


锁卡命令(Class 7)


特定应用命令(Class 8)


SD卡特定应用命令


响应
响应由SD 卡通过CMD线向主机发出,有些命令要求响应,有些不要求,SDIO 总线共有7 种响应类型(R1 ~ R7)。
->SD 卡不支持R4和R5 类型的响应

R1标准响应->如果有传输到卡的信号,那么在数据线上可能有busy的信号(R1b)出现


R2 CID,CSD寄存器响应
->CID寄存器的值是CMD2和CMD10命令的响应,而CSD寄存器内容是CMD9命令的响应


R3 OCR寄存器响应
->OCR寄存器的值是ACMD41命令的响应


R6 发布的RCA寄存器响应
->专用于CMD3的响应


R7 发布的RCA寄存器响应
->专用于CMD8命令的响应,返回卡所支持的电压范围和检测模式


数据包
使用所有wide bus时,每一次数据传输4个bit,每条线路的CRC是独立计算和校验的。SD卡只在DAT0线路上向主机发送CRC状态响应和Standard busy信号。下图中CMD53命令和ACMD13命令的两个数据包传输例子。

卡状态类型和操作模式
卡识别模式
在该模式下,主机会对所有处于“卡识别模式”的SD 卡进行复位操作,然后确认其工作电压范围,识别SD卡类型,并且获取SD 卡的相对地址(RCA)。下图是该模式下的SD卡状态转换图。
1.主机也可以发送 CMD0让所有卡软复位进入空闲状态,但当前处于Inactive State的卡不会复位 2.主机在与卡开始通信前,需要先确认双方在互相支持的电压范围内。SD 卡内的寄存器有一个电压支持范围,主机当前的电压必须在该范围内才能与卡正常通信,CMD8可以用于该操作。 3.ACMD41命令可以识别或拒绝不匹配主机电压范围的SD卡 4.CMD2命令要求所有卡返回CID 5.CMD3命令是让卡推荐一个RCA,RCA是16bit的地址,相对于使用CID(128bit)进行通信会更简化


数据传输模式
SD 卡系统处于数据传输模式下,主机才可以对其进行数据读写。数据传输模式下可以将主机SD时钟频率设置为FPP,默认最高为25MHz。
1.数据传输模式下,主机和目标卡通信都是通过RCA来点对点通信的
2.CMD7命令用来选中和取消选中卡


下篇会介绍APM32的SDIO外设,以及SD卡的驱动和应用方法。



使用特权

评论回复
沙发
sheflynn| | 2023-5-5 20:00 | 只看该作者
一个SDIO接口 能够同时接两个SD卡么

使用特权

评论回复
板凳
claretttt| | 2023-5-5 20:29 | 只看该作者
SDIO 是一种用于移动设备的存储卡接口标准,它同时支持数据读写和输入输出功能。

使用特权

评论回复
地板
minzisc| | 2023-5-5 21:28 | 只看该作者
SDIO能直接接SD卡吗              

使用特权

评论回复
5
kmzuaz| | 2023-5-5 21:37 | 只看该作者
一个SDIO口如何操作多张SD卡

使用特权

评论回复
6
youtome| | 2023-5-5 21:45 | 只看该作者
SD卡 就是一种基于SDIO标准的存储卡。

使用特权

评论回复
7
olivem55arlowe| | 2023-5-5 21:52 | 只看该作者
SDIO操作SD卡的速度瓶颈在哪里呢?

使用特权

评论回复
8
robincotton| | 2023-5-5 21:59 | 只看该作者
都想用FATFS文件系统,可以吗

使用特权

评论回复
9
backlugin| | 2023-5-5 22:36 | 只看该作者
在使用SDIO接口时,需要使用专门的SDIO驱动程序进行控制

使用特权

评论回复
10
51xlf| | 2023-5-5 23:05 | 只看该作者
SDIO读SD卡 越大越慢               

使用特权

评论回复
11
louliana| | 2023-5-5 23:24 | 只看该作者
SDIO设备等,支持高达50MHz的数据传输速率。

使用特权

评论回复
12
sdCAD| | 2023-5-5 23:30 | 只看该作者
SDIO接口在移动设备中被广泛使用

使用特权

评论回复
13
minzisc| | 2023-5-6 00:13 | 只看该作者
SDIO的SD卡的初始化流程是怎样的

使用特权

评论回复
14
sheflynn| | 2023-5-6 00:42 | 只看该作者
sdio写入sd卡速度快还是spi速度快?

使用特权

评论回复
15
jtracy3| | 2023-5-7 13:58 | 只看该作者
中断写sd卡会被其他中断影响吗

使用特权

评论回复
16
alvpeg| | 2023-5-7 14:02 | 只看该作者
SDIO标准定义了一种高速、低功耗的接口,可用于连接SD卡

使用特权

评论回复
17
hilahope| | 2023-5-7 14:08 | 只看该作者
普通的SD卡接口只支持数据读写功能,并且数据传输速率较慢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

24

帖子

3

粉丝