SD卡的控制方法(指令集和控制时序)
1.SD卡的命令格式:
SD卡的指令由6字节(Byte)组成,如下:
Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40) Byte2-5:Command Arguments,命令参数,有些命令没有参数 Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0
2.SD卡的命令
SD卡命令共分为12类,分别为class0到class11,
不同的SDd卡,主控根据其功能,支持不同的命令集 如下:
Class0 :(卡的识别、初始化等基本命令集)
CMD0:复位SD 卡.
CMD1:读OCR寄存器.
CMD9:读CSD寄存器.
CMD10:读CID寄存器.
CMD12:停止读多块时的数据传输
CMD13:读 Card_Status 寄存器
Class2 (读卡命令集):
CMD16:设置块的长度
CMD17:读单块.
CMD18:读多块,直至主机发送CMD12为止 .
Class4(写卡命令集) :
CMD24:写单块.
CMD25:写多块.
CMD27:写CSD寄存器 .
Class5 (擦除卡命令集):
CMD32:设置擦除块的起始地址.
CMD33:设置擦除块的终止地址.
CMD38: 擦除所选择的块.
Class6(写保护命令集):
CMD28:设置写保护块的地址.
CMD29:擦除写保护块的地址.
CMD30: Ask the card for the status of the write protection bits
class7:卡的锁定,解锁功能命令集
class8:申请特定命令集 。
class10 -11 :保留
其中 class1, class3,class9:SPI模式不支持
了解了指令的形式和具体的控制内容,下面主要解决的就是MCU与SD卡的通信问题,通信主要需要注意下面的问题:
(1)供电电压:必须是3.3V
(2) 通信模式的切换:SD卡有两种通信模式:SPI模式和SD模式,默认情况下的通信模式是SD模式,但是我们常用的模式是SPI模式,这就需要一个切换模式的方法,具体的实现方法在其他地方也都有介绍,其关键的地方就是先上电延时大于74个时钟周期后发送复位命令,复位成功(接收到0x01的响应)后,连续发送CMD55和ACMD41,直到响应0X00为止,此时SD卡已经进入SPI模式。
(3)上面所说的发送复位命令(CMD0)以及CMD55和ACMD41要有具体的实现方法,需要解决的就是时序问题,
下图就为复位的时序图,只要能够按照下图的时序进行操作,肯定能够复位成功.
本复位分为(1)上电,(2)延时74个周期以上,(3)发送命令CMD0,(4)发送命令参数0X0000,(5)发送CRC校验0X95,(6)等待响应(7)响应0X01此时得到正确响应复位成功,否则重复以上操作直到成功为止。
介绍复位的同时其他的命令也和复位命令类似,只是根据命令的作用不同有着不同的响应类型和不同的后续操作,下面给出集中常用命令的时序图。
(1)读CID寄存器时序图
说明:当发送命令并得到响应0X00后就开始准备接收CID寄存器中的内容,此时只要接收到起始标志0XFE后,之后的16个字节的内容即为CID寄存器的内容。
(2)读CSD寄存器内容时序和读CID的类似,只是此时发送的命令为CMD9
SD卡数据的读写是以块为单位:默认情况下一块的大小为512字节
(3) 读SD卡一个块(512字节)时序
(4) 写一个块(512字节)时序图
转载于:https://www.cnblogs.com/LittleTiger/p/3941055.html
SD卡的控制方法(指令集和控制时序)相关推荐
- SD卡的控制方法与时序
1 1.SD卡的命令格式: SD卡的指令由6字节(Byte)组成,如下: Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的C ...
- SD卡/iNand操作指令movi
1.SD卡/iNand操作指令movi (1)开发板如果用SD卡/EMMC/iNand等作为Flash,则在uboot中操作flash的指令为movi(或mmc) (2)movi的指令都是movi r ...
- Linux设备驱动子系统第二弹 - SD卡
1. 总论 2. 主控制器 3. 协议层 4. 块设备 1. 总论 1.1 概念 MMC - MultiMedia Card SD - Secure Digital Card 1.2 分类 按存 ...
- SD/TF卡驱动(二)--------SD卡程序初始化流程以及读写
说明: ①测试的SD卡为高容量卡,支持SD卡2.0协议,容量为16G ②采用GPIO模拟SPI时序的方式对SD卡进行驱动,很方便移植到没有硬件SPI或者SDIO的MCU,对于这类MCU,只需要将对应的 ...
- S5PV210裸机之SD卡
主流的外存设备介绍 内存和外存的区别: 一般是把这种RAM(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把ROM(read only memory, ...
- S5PV210体系结构与接口09:SD卡启动详解
目录 1. MMC技术演进 1.1 NandFlash & NorFlash芯片 1.2 MMC卡 & SD卡 & MicroSD卡(TF卡) 1.2.1 代际关系 1.2.2 ...
- 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)
嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...
- 第十一天: SD卡原理分析及SD卡启动详解
主流的外存设备 内存和外存的区别: 一般是把这种(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把ROM(read only memory,只读存储器 ...
- STM32利用SPI读写SD卡的程序详解
STM32利用SPI读写SD卡的一些程序详解 关于SD卡的基础知识这里不做过多陈述,如果有对这方面感兴趣的朋友可以直接百度一下,有很多讲SD卡的文章,这里主要是针对SD卡的读写程序实现做一些详细说明. ...
最新文章
- java程序设计第一次作业
- 基于某网站的信息爬取与保存_指定查询内容
- 8、泛型程序设计与c++标准模板库2.4列表容器
- python函数参数类型及顺序_python函数参数类型及其顺序
- java中wait的场景,wait——webdriver实用指南java版
- 比dropout更好的方法_比较自己的更好方法
- 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
- 关于RJ45插座(HR911130C)硬件连接
- TASKCTL连接不到服务端的几种情况和解决办法
- Android shape自定义形状,设置渐变色
- Ubuntu 切换中文目录为英文目录
- 大学模电实验合集丨实验二 单管共射放大电路的原理
- 老师用计算机教我们画画拼音,小学一年级语文《汉语拼音13angengingong》第三课时教学设计.docx...
- 计算apk包的安装之后占用空间以及运行时占用内存
- java手机游戏主角技能上剑魂,DNF高手来回答
- 智慧城市同城小程序 智慧城市同城标准版源码
- HTML文档中注释标记作用,html的注释有什么作用
- Sql语句中的DDL、DML、DCL的介绍
- 高考数学90分能学好计算机,高中数学,如何从90分以下突破120分?你必须做好这两个方面!...
- 一个例程学会使用——模糊逻辑工具箱