cube sdio fatfs 初始化sd卡_SD卡?TF卡?傻傻分不清楚?

关注、星标公众,不错过精彩内容b8223dbe71e65ee6d8cd2dc1f3c34322.png

0 1SD卡

SD卡是SecureDigitalCard的英文缩写,直译就是“安全数字卡”,正式缩写为SD,是SD协会开发的一种专有 的非易失性 存储卡格式,用于便携式设备。由于它体积小、数据传输速度快、可热插拔等优良的特性,被广泛地于便携式装置上使用。

该标准于1999年8月由SanDisk,松下(MatsushitaElectric)和东芝共同努力推出,作为对MultiMediaCard(MMC)的改进,现已成为行业标准。这三家公司组成了SD-3C,LLC,这家公司许可并执行与SD存储卡以及SD主机和辅助产品相关的知识产权。

两家公司还于2000年1月成立了非营利组织SD协会(SDA),以促进和创建SD卡标准。SDA如今有大约1,000个成员公司。SDA使用SD-3C拥有并许可的多个商标徽标,以强制遵守其规范并确保用户的兼容性。

SD卡容量

SecureDigital包括五个可提供三种不同尺寸的卡系列。这五个系列分别是原始的标准容量(SDSC),大容量(SDHC),扩展容量(SDXC),超容量(SDUC)和SDIO,它们将输入/输出功能与数据存储相结合。所述的3个形式因素是原尺寸,微型尺寸,微尺寸。

ba697478c823bd253fdd2f1d17872e73.png

SD卡外形

84590941867b91df26a85f25f78e3741.png

驱动模式

SD卡有两种驱动模式:SPI模式与SDIO模式。它们所使用的接口信号是不同的。在SPI模式下,只会用到SD卡的4根信号线,即CS、DI、SCLK与DO(分别是SD卡的片选、数据输入、时钟与数据输出)。

传输模式

SD卡共支持三种传输模式:SPI模式(独立序列输入和序列输出),1位SD模式(独立指令和数据通道,独有的传输格式), 4位SD模式(使用额外的针脚以及某些重新设置的针脚。支持四位宽的并行传输)。

SD卡三种模式的针脚定义:

4ea790d343c8ebbece5e15693a1d9432.png

SD卡内部结构及引脚如下图所示:

2f3cd795c03b0a853ed3ade2cf5681da.png

覆写保护开关

在SD卡的右面通常有一个开关,即是覆写保护开关,当覆写保护开关拨下时,SD卡将受到覆写保护,资料只能阅读。当覆写保护开关在上面位置,便可以覆写资料。由于这保护开关是选择性的,有些品牌的SD卡没有此保护掣。

9a7e6a487478c1345d03cf55e586c227.png

原理图

虽然标准SD卡是九脚,但原理图是SD卡座不是SD卡!!,所以原理图中一般都是11脚或更多。

3739707f541972bc8d27d6407719a361.png

一般10脚是检测卡是否插入,11脚是卡写保护的检测,再有其它引脚就是用于固定卡座的脚了,其实简单应用这两个脚都可以不要管的,这就是为什么SD卡原理图中的引脚版本不同引脚数目也不同了。

典型电路连接

SDIO连接模式

57d873dca0f1462c8250cf98f4e3d114.png

SPI连接模式

6330e3c7ab13e5529e6afeda307d7a0a.png

0 2TF卡

Micro SD Card,原名Trans-flashCard(TF卡),2004年正式更名为MicroSD Card,由SanDisk(闪迪)公司发明。MicroSD卡是一种极细小的快闪存储器卡,其格式源自SanDisk创造,原本这种记忆卡称为T-Flash,及后改称为TransFlash;而重新命名为MicroSD的原因是因为被SD协会(SDA) 采立。

f9e970d8baf335a11bf48be04d096fc0.png

它的体积为15mm x 11mm x1mm,差不多相等于手指甲的大小,是现时最细小的记忆卡。它也能通过SD转接卡来接驳于SD卡插槽中使用。现时MicroSD卡提供128MB、256MB、512MB、1G、2G、4G、8G、16G、32G、64G、128G的容量(MWC2014 世界移动通信大会期间,SanDisk(闪迪)打破了储存卡最高64GB容量的传统,正式发布了一款容量高达128GB的Micro SD XC 储存卡。

MicroSD的体积更小且可以转换SD卡使用,TF卡的电路和引脚和SD卡是一样的。

680d4a62bdb1147981cb30de4663c4c7.png

TF卡的PCB封装

9f2454779a7c04af0cc86fabaa24b97d.png

从下图可以看出,靠近圆圈处的那个引脚没有和TF相连。

dab5bbab6c4dfdd772d93cde12d110d8.png

所以做TF封装和电路,9脚悬空

0 3TF转SD卡

TF卡可经SD卡转换器后,当SD卡使用。

eac2c71647271beaa2658c11fd70493a.png

内部电路

787f5167c8fd774ceef75417fd138cde.png

0 4注意事项

TF卡+卡套,组合起来也可以当SD卡使用,不过个很大一部分TF卡,不支持SPI访问模式,所以,SPI驱动SD卡的时候,尽可能选择大卡(SD卡),不要选择TF卡。

SD卡命令详解:

0 1SD卡简介

SD卡(SecureDigital MemoryCard)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。

SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC卡,如下表所示:

e50581c288b285a1cd03d5a50f3345ec.png

SD卡外形和接口图如下图所示:

10e19beaebf6a2e821a5624c5972a25e.png

SD卡由9个引脚与外部通信,支持SPI和SDIO两种模式,不同模式下,SD卡引脚功能描述如下表所示:

f1e3380e23bd055844bfc0075ec31377.png

0 2SD卡特点

①高容量,最大可达2TB(目前已有512GB的SD卡)。

②高安全性。

③高速,目前已有读取速度近100MB/S的SD卡。

④体积小巧,标准SD卡大小只有一张邮票大小,重量仅2g。

⑤接口简单,支持SPI和SDIO两种访问模式。

注意:TF卡+卡套,组合起来也可以当SD卡用,不过,很大一部分TF卡,不支持SPI访问模式。所以,SPI驱动SD卡的时候,尽量选择大卡(SD卡),而不要选择TF卡。

0 3SD的寄存器

SD的5个寄存器

0cea5c555f657f786550210e440ef378.png

这些寄存器的详细介绍,请参考《SD卡2.0协议.pdf》第五章

0 4SD卡的操作

4.1SD的初始化

要实现SDIO驱动SD卡,最重要的步骤就是SD卡的初始化,只要SD卡初始化完成了,那么剩下的(读写操作)就简单了,所以我们这里重点介绍SD卡的初始化。

下图参见《SD卡2.0协议.pdf》这个文档。

0077522f36809540a0ef5fa26b8fd57f.png

从SD卡初始化流程可知,不管什么卡(这里我们将卡分为4类:SD2.0高容量卡(SDHC,最大32G),SD2.0标准容量卡(SDSC,最大2G),SD1.x卡和MMC卡),首先我们要执行的是卡上电(设置SDIO_POWER

[1:0]=11),上电后发送CMD0,对卡进行软复位,之后发送CMD8命令,用于区分SD卡2.0,只有2.0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。CMD8命令格式如下表:

78c92a86f4f7dc40a8744766b39ae5ef.png

在发送CMD8的时候,通过其带的参数我们可以设置VHS位,以告诉SD卡,主机的供电情况,让SD卡知道主机的供电范围。

VHS位定义如下表所示:

47b891cd67ca3cca34d79aa5dc8d38ce.png

这里我们使用参数0X1AA,即告诉SD卡,主机供电为2.7~3.6V之间,如果SD卡支持CMD8,且支持该电压范围,则会通过CMD8的响应(R7,关于SD卡响应,请参考《SD卡2.0协议.pdf》第4.9节)将参数部分原本返回给主机,如果不支持CMD8,或者不支持这个电压范围,则不响应。

在发送CMD8后,发送ACMD41(注意:发送ACMD41之前,要先发送CMD55),来进一步确认卡的操作电压范围,并通过HCS位来告诉SD卡,主机是不是支持高容量卡(SDHC)

ACMD41命令格式如下表所示:

e8a918fce52de48e96c4ddfd3b00aa13.png

ACMD41指令响应(R3),包含了SD卡OCR寄存器内容,其定义如下表所示:

16dadc2c6a3b8b4c352b8be17e1335ec.png

对于支持CMD8的卡,主机设置ACMD41的参数HCS=1,告诉SD卡,主机支持SDHC卡。

对2.0的卡,OCR的CCS位用于表示SDHC还是SDSC;对1.x的卡,则忽略该位;

对MMC卡,则不支持ACMD41,MMC卡只需要发送:CMD0和CMD1即可完成初始化。

CMD2用于获取CID寄存器数据,CID寄存器各位定义如下表:

dc22ac9c4c3985f3c8004d5894385312.png

SD卡在收到CMD2后,将返回R2长响应(136位),其中包含128位有效数据(CID寄存器内容),存放在SDIO_RESP1~4等4个寄存器里面。通过读取这四个寄存器,就可以获得SD卡的CID信息。

CMD3,用于设置卡相对地址(RCA,必须为非0),对于SD卡(非MMC卡),在收到CMD3后,将返回一个新的RCA给主机,方便主机寻址。RCA的存在允许一个SDIO接口挂多个SD卡,通过RCA来区分主机要操作的是哪个卡。对于MMC卡,则不是由SD卡自动返回RCA,而是主机主动设置MMC卡的RCA,即通过CMD3带参数(高16位用于RCA设置),实现RCA设置。同样MMC卡也支持一个SDIO接口挂多个MMC卡,不同于SD卡的是所有的RCA都是由主机主动设置的,而SD卡的RCA则是SD卡发给主机的。

在获得卡RCA之后,我们便可以发送CMD9(带RCA参数),获得SD卡的CSD寄存器内容,从CSD寄存器,我们可以得到SD卡的容量和扇区大小等十分重要的信息。CSD寄存器我们在这里就不详细介绍了,关于CSD寄存器的详细介绍,请大家参考《SD卡2.0协议.pdf》。

至此,我们的SD卡初始化基本就结束了,最后通过CMD7命令,选中我们要操作的SD卡,即可开始对SD卡的读写操作了。

4.2SD卡读操作

SD卡单块数据块读取流程

6d64977fed295fab70c98b8a7069d52f.png

SD卡多块数据块读取流程

61155f6d53d195054d7181f5fef3078e.png

CMD16指令说明

90fec52fa32c64fd777f88453b55d588.png

CMD17指令说明

1c236570491b3797cb5593dd100a0a45.png

CMD18指令说明

87c5329c8748fa7559613baa35c1b35a.png

CMD12指令说明

a4a3d18ec2e23c4cf0099d6faed89e61.png

4.3SD卡写操作

SD卡单块数据块写入流程

4e9fb0c82c032bc623b202e6617babfd.png

SD卡多块数据块写入流程

390d9407dc9f5bf484c012cadcada14b.png

CMD13指令说明

74c78810efe49bb52d2bd0a3bba28b1d.png

R1响应:

705657e79befb835f202b78c65bade79.png

SD卡状态,请参考《SD卡2.0协议.pdf》第63页-Table4-35

CMD24指令说明

a3d30c09ce9f76f9dc0f9046e381434e.png

ACMD23指令说明

68102367992bb7c963c8665ac685890a.png

注意:发送ACMD之前,必须先发送CMD55,通知SD卡,接下来要发送的是应用命令(APPCMD),而非标准命令

CMD55指令说明

16cdfd51f76bb49f9e605a4fc2c351bc.png

CMD25指令说明

7a5d1ceb5dea32bf58fda950048ae9bc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值