STM32外设SDIO应用之SD卡Word文档下载推荐.docx

上传人:b****5 文档编号:20666275 上传时间:2023-01-24 格式:DOCX 页数:32 大小:173.70KB
下载 相关 举报
STM32外设SDIO应用之SD卡Word文档下载推荐.docx_第1页
第1页 / 共32页
STM32外设SDIO应用之SD卡Word文档下载推荐.docx_第2页
第2页 / 共32页
STM32外设SDIO应用之SD卡Word文档下载推荐.docx_第3页
第3页 / 共32页
STM32外设SDIO应用之SD卡Word文档下载推荐.docx_第4页
第4页 / 共32页
STM32外设SDIO应用之SD卡Word文档下载推荐.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

STM32外设SDIO应用之SD卡Word文档下载推荐.docx

《STM32外设SDIO应用之SD卡Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《STM32外设SDIO应用之SD卡Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。

STM32外设SDIO应用之SD卡Word文档下载推荐.docx

2、SD模式

1、STM32的SDIO适配器原理框图:

47

46

[45:

40]

[39:

8]

[7:

1]

宽度

32

数值

-

说明

开始位

传输位

命令索引

参数

CRC7

结束位

2、SD命令格式

3、SD通用命令

类型

响应格式

缩写

CMD0

bc

[31:

0]填充位

GO_IDLE_STATE

重置所有卡为空闲状态

CMD2

bcr

R2

ALL_SEND_CID

要求所有卡发送CID号(任何连在总线上的卡都必须响应)

CMD3

R6

SEND_RELATIVE_ADDR

要求卡发送一个新的相对地址(RCA)

CMD4

16]DSR

[15:

SET_DSR

规划所有卡的DSR

CMD7

ac

16]RCA

R1b

SELECT/DESELECT_CARD

使卡在备用和传输状态或者编程和断开状态之间切换。

在这两种情况下,当接收到的相对地址与自己的相同时卡被选中,不同时卡取消选中,而相对地址是0时,所有卡都不被选中,之后主机可能会执行如下操作:

1、使用其它的相对地址来选中卡

2、重新发送命令3更改卡的相对地址为0,再发送命令7,参数相对地址为0选中该卡

CMD8

12]保留

[11:

8]电源电压

0]检验模式

R7

SEND_IF_COND

发送SD存储卡的接口条件,包括主机支持的电压范围及询问卡是否支持。

保留位应当设置为“0”

CMD9

SEND_CSD

寻址卡并让其发送它的特殊数据寄存器(CSD)

CMD10

SEND_CID

寻址卡并让其发送识别号(CID)

CMD12

STOP_TRANSMISSION

强制卡停止传输

CMD13

R1

SEND_STATUS

寻址卡并让其发送状态寄存器的数据

CMD15

0]保留

GO_INACTIVE_

STATE

使被寻址的卡进入不活跃状态,该命令用在主机明确想要去激活某张卡

CMD16

0]块大小

SET_BLOCKLEN

如果是标准容量SD存储卡,该命令为随后的块操作命令(读、写及上锁)设定块大小(单位为字节)。

块大小默认为512字节。

只有当该命令是CSD所允许时,才是一个合法的内存访问命令。

如果卡是高容量SD存储卡,使用该命令不会影响内存的读写命令,块大小总是固定的512字节。

该命令会影响卡上锁/解锁命令。

在这两种情形下,如果块大小被设置超过512字节,卡将会设置BLOCK_LEN_ERROR位

CMD17

adtc

0]数据地址

READ_SINGLE_BLOCK

如果是标准容量SD存储卡,该命令会读取由SET_BLOCKLEN命令所设置大小的块。

如果卡是高容量SD存储卡,读取的块大小固定位512字节,不受SET_BLOCKLEN命令影响

CMD18

READ_MULTIPLE_BLOCK

使卡连续传输数据块到主机,直到被停止传输命令中断。

块大小的详细说明同上

CMD24

WRITE_BLOCK

如果是标准容量SD存储卡,该命令会写由SET_BLOCKLEN命令所设置大小的块。

CMD25

WRITE_MULTIPLE_BLOCK

连续写数据块到卡,直到被停止传输命令中断。

CMD27

PROGRAM_CSD

对CSD中可编程的位编程

CMD28

SET_WRITE_PROT

如果卡有写保护功能,该命令设置指定组的写保护位。

写保护特性设置在卡的特殊数据区(WP_GRP_SIZE)。

高容量SD存储卡不支持该命令

CMD29

CLR_WRITE_PROT

如果卡有写保护功能,该命令清除指定组的写保护位。

CMD30

0]写保护数据的地址

SEND_WRITE_

PROT

如果卡有写保护功能,该命令要求卡发送写保护位的状态。

CMD32

ERASE_WR_BLK_START

设置第一个擦除组的地址

CMD33

ERASE_WR_BLK_END

在连续的擦除范围内,设置最后一个擦除组的地址

CMD38

ERASE

擦除先前选择的数据块

CMD42

LOCK_UNLOCK

用来设置/重置密码或对卡上锁/解锁。

数据块的大小由SET_BLOCK_LEN命令设置。

CMD55

APP_CMD

指示卡下一个命令是应用相关命令而不是一个标准命令

CMD56

1]填充位

0读/写

GEN_CMD

在通用或应用相关命令中,或者用于向卡中传输一个数据块,或者用于从卡中读取一个数据块。

如果是标准容量SD存储卡,数据块的大小由SET_BLOCK_LEN命令设置。

如果卡是高容量SD存储卡,数据块的大小固定位512字节。

当读/写位为“1”时,主机从卡读取数据,为“0”时写数据到卡里

4、SD应用命令

ACMD6

2]填充位

[1:

0]数据线宽度

SET_BUS_WIDTH

定义用于数据传输的数据线宽度(‘00’表示1位,‘10’表示4位)。

允许的数据线宽度由SCR寄存器给出

ACMD13

SD_STATUS

返回SD状态

ACMD18

预留给SD安全应用

ACMD22

SEND_NUM_WR_BLOCKS

返回已写块的数量(未出错)。

如果WRITE_BL_PARTIAL是‘0’,ACMD22的单位总是512字节。

如果WRITE_BL_PARTIAL是‘1’,

ACMD22的单位是写命令执行时的数据块大小

ACMD23

23]填充位

[22:

0]块数量

SET_WR_BLK_

ERASE_COUNT

在写数据前设置预写块的数量(用于更快的多块写命令)。

默认为‘0’(一个写数据块)

ACMD25

ACMD26

ACMD38

ACMD41

[31]保留

30HCS(OCR[30])

[29:

24]保留

[23:

0]供电电压窗口(OCR[23:

0])

R3

SD_SEND_OP_COND

发送主机的容量支持信息(HCS)到被访问的卡,并利用CMD线询问其工作条件寄存器(OCR)中的内容。

当卡接收到SEND_IF_COND命令时,HCS变得有效,保留位应当设置为0。

CCS位将被设置成对应OCR[30]中的内容

ACMD42

0设置

SET_CLR_CARD_DETECT

连接[1]或不连接[0]5万欧姆的电阻到卡CD/DAT3(引脚1)信号线上

ACMD43

...

ACMD49

ACMD51

SEND_SCR

读取SD配置寄存器(SCR)

5、响应格式

域宽度

X

卡状态

135

134

[133:

128]

[127:

127

111111

OCR寄存器

16

卡新的相对地址(RCA)

卡状态23,22,19,12:

20]

[19:

16]

18]

20

001000

000000

可接受的电压范围

检测响应

注:

R1b与R1格式相同,但可以选择在数据线上发送一个繁忙信号。

收到这些命令后,依据收到命令之前的状态,卡可能变为繁忙。

主机在收到此响应时应当检测忙状态。

R7中可接受的电压范围定义如下:

0000b

未定义

0001b

2.7-3.6

0010b

为低电压范围保留

0100b

1000b

其它

6、部分命令详解

CMD8用于初始化符合物理规范2.00版本的SD存储卡。

当卡处于空闲状态时,CMD8才是有效的。

该命令有两种功能:

a.电压检测:

检测卡是否能在主机提供的电压下工作

b.扩充现有的命令及响应

CMD8能通过重新定义某些现有命令的保留位,增加其新的功能。

ACMD41就是被这样被扩展后用于初始化高容量SD存储卡。

CMD8命令格式:

其中电源电压定义如下:

电源电压

当卡处于空闲状态,主机应当在发送ACMD41前发送CMD8。

在参数段,电源电压段是主机提供的电压值,而检测模式段可以是任何数值。

若主机支持卡的工作电压,卡会把接收到的电源电压及检测模式数值在命令响应中原样返回给主机。

若主机不支持卡的工作电压,卡不作响应并停留在空闲状态。

ACMD41命令格式:

ACMD41用来进一步检查主机是否支持卡的工作电压,通过其命令参数中的HCS来区分是高容量卡(SDHC)还是标准容量卡(SDSC)。

7、SD卡寄存器

SD卡寄存器有:

卡识别寄存器(CID),相对卡地址寄存器(RCA),驱动级寄存器(DSR),

特殊数据寄存器(CSD),SD卡配置寄存器(SCR),工作状态寄存器(OCR),SD状态寄存器(SSR),卡状态寄存器(CSR)。

7.1工作状态寄存器(OCR)

OCR的格式如下表

OCR位

OCR段定义

0-3

10

11

12

13

14

15

2.7-2.8

2.8-2.9

17

2.9-3.0

18

3.0-3.1

19

3.1-3.2

3.2-3.3

21

3.3-3.4

22

3.4-3.5

23

3.5-3.6

24-29

30

卡容量状态(CCS)1

31

卡供电状态(busy)2

1、当卡的供电状态位被设置时,该位才有效

2、如果卡没有完成启动程序,该位会被设置为低

OCR的第15~23位分别对应着一个电压值,表示可支持电压。

若返回的命令响应R3中对应的OCR位为1,则表示这个SD卡支持该位对应的电压值。

第30位即为CCS位,若响应R3中这一位为一则表示这个SD卡为高容量卡,否则为标准容量卡。

只要卡处于忙状态,对应的位(31)就会被设置为低。

7.2卡识别寄存器(CID)

卡识别寄存器有128位,它包含的卡的识别信息在卡识别阶段使用。

每张卡都有一个唯一的识别号码。

CID的格式如下表:

位宽

对应位

生产商标识(ManufacturerID)

MID

120]

原始设备制造商/应用标识(OEM/ApplicationID)

OID

[119:

104]

产品名称(Productname)

PNM

40

[103:

64]

产品修订版本(Productrevision)

PRV

[63:

56]

产品序列号(Productserialnumber)

PSN

[55:

24]

生产日期(Manufacturingdate)

MDT

CRC7校验和(CRC7checksum)

CRC

未使用,总为1

7.3特殊数据寄存器(CSD)

特殊数据寄存器提供关于如何访问卡内数据的信息,它定义了数据格式、纠错类型、最大数据访问时间,DSR寄存器是否可用等等。

该寄存器可编程的部分(条目中标有W或E,见下)可被CMD27改变。

下表中条目的类型按如下定义:

R表示可读的,W

(1)表示只可写一次,W表示可写多次。

CSD版本1.0格式如下:

字段

CSD架构(CSDstructure)

CSD_STRUCTURE

00b

R

126]

000000b

[125:

数据读取时间1(datareadaccess-time-1)

TAAC

xxh

112]

数据读取时间2单位100时钟周期(datareadaccess-time-2inCLKcycles(NSAC*100))

NSAC

[111:

最大数据传输速率(max.datatransferrate)

TRAN_SPEED

32h或5Ah

96]

卡命令集(cardcommandclasses)

CCC

01x110110101b

[95:

84]

最大读数据块长度(max.readdatablocklength)

READ_BL_LEN

xh

[83:

80]

允许读块的一部分(partialblocksforreadallowed)

READ_BL_PARTIAL

1b

79

写块偏差(writeblockmisalignment)

WRITE_BLK_MISALIGN

xb

78

读块偏差(readblockmisalignment)

READ_BLK_MISALIGN

77

应用DSR(DSRimplemented)

DSR_IMP

76

[75:

74]

规格尺寸(devicesize)

C_SIZE

xxxh

[73:

62]

最小电压时的最大读电流(max.readcurrent@VDDmin)

VDD_R_CURR_MIN

xxxb

[61:

59]

最大电压时的最大读电流(max.readcurrent@VDDmax)

VDD_R_CURR_MAX

[58:

最小电压时的最大写电流(max.writecurrent@VDDmin)

VDD_W_CURR_MIN

53]

最大电压时的最大写电流(max.writecurrent@VDDmax)

VDD_W_CURR_MAX

[52:

50]

设备大小乘数(devicesizemultiplier)

C_SIZE_MULT

[49:

47]

使能块擦除(erasesingleblockenable)

ERASE_BLK_EN

擦除扇区的大小(erasesectorsize)

SECTOR_SIZE

xxxxxxxb

39]

写保护组大小(writeprotectgroupsize)

WP_GRP_SIZE

[38:

32]

使能写保护组(writeprotectgroupenable)

WP_GRP_ENABLE

保留(不使用)

[30:

29]

写速度系数(writespeedfactor)

R2W_FACTOR

[28:

26]

最大写数据块大小(max.writedatablocklength)

WRITE_BL_LEN

xxxxb

[25:

22]

允许写块的一部分(partialblocksforwriteallowed)

WRITE_BL_PARTIAL

00000b

[20:

文件格式组(Fileformatgroup)

FILE_FORMAT_GRP

R/W

(1)

复制标志(OTP)(copyflag(OTP))

COPY

永久的写保护(permanentwriteprotection)

PERM_WRITE_PROTECT

临时写保护(temporarywriteprotection)

TMP_WRITE_PROTECT

R/W

文件格式(Fileformat)

FILE_FORMAT

xxb

10]

[9:

未用,总是1

CSD版本2.0格式如下:

01b

数据读取时间(datareadaccess-time)

0Eh

数据读取时间单位100时钟周期(datareadaccess-timeinCLKcycles(NSAC*100))

00h

84

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1