Micro_SD_卡(TF卡)_spi_模式实现方法

上传人:woxinch****an2018 文档编号:38635118 上传时间:2018-05-05 格式:DOC 页数:7 大小:437KB
返回 下载 相关 举报
Micro_SD_卡(TF卡)_spi_模式实现方法_第1页
第1页 / 共7页
Micro_SD_卡(TF卡)_spi_模式实现方法_第2页
第2页 / 共7页
Micro_SD_卡(TF卡)_spi_模式实现方法_第3页
第3页 / 共7页
Micro_SD_卡(TF卡)_spi_模式实现方法_第4页
第4页 / 共7页
Micro_SD_卡(TF卡)_spi_模式实现方法_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Micro_SD_卡(TF卡)_spi_模式实现方法》由会员分享,可在线阅读,更多相关《Micro_SD_卡(TF卡)_spi_模式实现方法(7页珍藏版)》请在金锄头文库上搜索。

1、Micro SD 卡(卡(TF 卡)卡) spi 模式实现方法模式实现方法 现在我们手机的内存卡多为 Micro SD 卡,又叫 TF 卡,所以 Micro SD 卡比 SD 卡常见。自己曾经 也想写写 SD 卡的读取程序,但又不想特地再去买个 SD 卡,这时想起手机内存卡不是和 SD 卡很像吗? 在网上查了以后发现 SD 卡和 Micro SD 卡其实也就大小和引脚不一样,它们的操作其实是一样的,所 以网上的 SD 卡读写代码其实可以直接拿来用。关于 SD 卡和 Micro SD 卡的引脚定义和不同可见下两表:我们可以发现 Micro SD 卡只有 8 个引脚是因为比 SD 卡少了一个 Vs

2、s。当然你也可以买个卡套套在 Micro SD 卡上,这样一来大小就和 SD 卡一样大,这时候卡套上的 9 个引脚就和 SD 卡一样了,你可 以完全当做 SD 卡来操作。spi 下电路的连接非常简单,接上电源线 Vdd 和地线 Vss,再接上 spi 的 CS,SCLK,DI(MOSI)和 DO(MISO)就可以了,其他引脚可以放空。注意 SD 卡的电源和操作电 压都为 2.7-3.6V,5V 的单片机要进行电平转换或串电阻限流。还有记得 SD 卡的CS,SCLKh 和 DI 要 用 10100K 的电阻上拉。我是套了卡套接的电路,因为 Micro SD 卡的引脚太密了,不好焊接,SD 卡 相

3、对引脚好焊。因为没有卡座,而且也没专门的 PCB 我就直接焊到卡套上,诶牺牲了一个卡套。下面 是我自己画的电路图:上面 Micro SD 卡的硬件电路就好了,下面我们讲讲 Micro SD 卡的软件驱动和指令集。SD 卡的命令格式如下,6 字节共 48 位,传输时最高位(MSB)先传输:SD 卡的 command(命令)占 6 bit,一般叫 CMDx 或 ACMDx,比如 CMD1 就是 1,CMD13 就是 13,ACMD41 就是 41,依此类推。Command Argument(命令参数)占 4 byte,并不是所有命令都有参 数,没有参数的话该位一般就用置 0。最后一个字节由 7 b

4、it CRC 校验位和 1 bit 停止位组成。在 SPI 模 式下,CRC 是被忽略的,可以都置 1 或置 0.但是发送 CMD0 时要记得加上 CRC,即最后 1 字节为 0x95(因为发送 CMD0 时还未进入 SPI 模式,PS:CMD8 也要,但一般大家都把发送 CMD8 省略了)。每次发送完一次命令后,SD 卡都会有回应。SD 卡的回应有多种格式,1 字节的 R1,2 字节的 R2 等,不过一般在 SPI 模式中我们只用到 R1,下面介绍 R1 的格式:关于 SD 卡 SPI 和 command 的发送要注意以下几点:1.SD 卡的 SPI 总线,在读入数据时 SD 卡的 SPI

5、是 CLK 的上升沿输入锁存,输出数据也是在上升沿。2.向 SD 卡写入一个 CMD 或者 ACMD 指令的过程是这样的: 首先使 CS 为低电平,SD 卡使能;其 次在 SD 卡的 Din 写入指令;写入指令后还要附加 8 个填充时钟,是 SD 卡完成内部操作;之后在 SD 卡的 Dout 上接受回应;回应接受完毕使 CS 为低电平,再附加 8 个填充时钟。 3.在 SD 卡的 Din 没有数据写入时,应使 Din 保持高电平。关于这一点我可吃透了苦头,本来也 记得要保持高电平的,结果不知怎的鬼使神差的置 0 拉低了。结果程序出现了各种奇怪的貌似偶然的错 误,比如连续两次复位会有一次失败,单

6、步调试成功全速运行又会失败。总之在这个过程中我对时序进 行各种改变,每次解决一个问题后又会有新的问题出现,多少次动摇了我对 MicroSD 卡和 SD 卡的操作 是一样的这个看法。因为这个低级的错误耽误了我三四天,看来细心很重要啊!我已经不止一次因为不 细心浪费大量时间了,希望大家也引以为戒。好了,现在 SD 卡的命令和回应清楚了,我们下面讲讲 SD 卡的复位,初始化和读写方法。复位方法:1.拉高 CS,发送至少 74 个 clk 周期来使 SD 卡达到正常工作电压和进行同步2.选低 CS,发送 CMD0,需要收到回应 0x01 表示成功进入 idle 状态3.拉高 CS,发送 8 个时钟复位

7、时序图:初始化:复位成功后,SD 卡就进入了 SPI 模式,接着应该进行初始化。初始化说白了有两种方法: (1)发送 CMD1,(2)发送 CMD55+ACMD41。我从网上查的资料可以看到这种说法:如果是 MMC 卡就发 CMD1,SD 卡则发 CMD55+ACMD41。但是关于 Micro SD 卡要发哪种却讲的不太清楚,网上用 这两种方法都有人成功过,但有的都成功不了。我自己也碰到了这种问题,刚开始拿了自己手机上的写 着 Nokia 的 2GB 的 Micro SD 卡(应该是杂牌的)初始化了两天也没成功,快要放弃的时候想起来为什 么不换张试试呢,于是就找室友借了他的手机内存卡,是 2G

8、B 的 Apacer 的 Micro SD 卡(当然也可能 是杂牌的,室友买那卡的地方一般都是卖各种廉价电子产品的,大家都知道是杂牌的),结果一试就成 功了。后来我用了令一种方法发现也可以初始化,也就是说两种方法都可以初始化成功。但我的那种怎 么就不行呢?难道不是所有 Micro SD 卡都支持 SPI 模式。我在网上百度了半天也不能确定是不是所有 Micro SD 卡都支持 SPI 模式。但我想,现在 Micro SD 卡的生产公司很多,而且你也并不能保证你的 Micro SD 卡不是杂牌的。你并不知道生产厂家进行了那些改变,因为确实有些厂家生产的 SD 卡精简了 一些命令。所以初始化的时候

9、建议两种都试一下,不过我记得 SD 卡的说明书上推荐使用第二种方法。下面是初始化方法:(1)使用 CMD1发送 CMD1,收到 0x00 表示成功时序图如下:(2)使用 CMD55+ACMD411.发送 CMD55(表示使用 ACMDx 类命令),收到 0x012.发送 ACMD41,收到 0x00 表示成功记住 SD 卡的初始化速度不能大于 400kHz,所以一开始复位和初始化时 spi 的速率要设置低一点。读单块和多块:SD 卡读单块和多块的命令分别为 CMD17 和 CMD18,他们的参数即要读的区域的开始地址。因为考虑 到一般 SD 卡的读写要求地址对齐,所以一般我们都将地址转为块,并

10、以扇区(块)(512Byte)为单位进 行读写,比如读扇区 0 参数就为 0,读扇区 1 参数就为 19(即地址 512),读扇区 2 参数就为 29(即地址 1024),依此类推。读单块方法:1.发送 CMD17,收到 0x00 表示成功2.连续读直到读到开始字节 0xFE3.读 512 个字节4.读两个 CRC 字节读单块时序图:读多块方法:1.发送 CMD18 读,收到 0x00 表示成功2.连续读直到读到开始字节 0xFE3.读 512 字节4.读两个 CRC 字节5.如果还想读下一扇区,重复 2-46.发送 CMD12 来停止读多块操作写单块和多块:SD 卡用 CMD24 和 CMD

11、25 来写单块和多块,参数的定义和读操作是一样的。写单块方法:1.发送 CMD24,收到 0x00 表示成功2.发送若干时钟3.发送写单块开始字节 0xFE4.发送 512 个字节数据5.发送 2 字节 CRC(可以均为 0xff)6.连续读直到读到 XXX00101 表示数据写入成功7.继续读进行忙检测(读到 0x00 表示 SD 卡正忙),当读到 0xff 表示写操作完成写单块时序图:写多块方法:1.发送 CMD25,收到 0x00 表示成功2.发送若干时钟3.发送写多块开始字节 0xFC4.发送 512 字节数据5.发送两个 CRC(可以均为 0xff)6.连续读直到读到 XXX00101 表示数据写入成功7.继续读进行忙检测,直到读到 0xFF 表示写操作完成8.如果想读下一扇区重复 2-7 步骤9.发送写多块停止字节 0xFD 来停止写操作10.进行忙检测直到读到 0xFF上面介绍了 Micro SD 卡的硬件连接,复位、初始化、读写单块和多块的实现方法,其实你还可 以读取 SD 卡 ID,给 SD 卡命名,设置密码,改变一次读写的大小,这里就不多介绍,大家可以自己看 SD 卡的官方资料。下一篇文章我就贴出自己写的基于 nios ii 的 Micro SD 卡程序,程序在实现了上面介 绍的功能外,还增加了读 CSD,CID 寄存器的功能。

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号