STM32F4——SD卡相关操作
一、简介:
SD卡从MMC基础发展而来,一种记忆设备,广泛用于便携设备,SD卡按容量分为:SD卡(0~2G)、SDHC卡(2~32G)和SDXC卡(32G~2T)。对于SD的使用过程中相应引脚和对应模式如下图所示:
二、相关寄存器:
对于SD卡相关寄存器如下图所示:
三、SD卡相关操作及指令:
1、初始化;
SD卡的初始化操作是相对比较复杂的,流程图如下:
【图片】
基本操作过程为:
(1)首先是给卡上电(设置SDIO_POWER[1:0]=11)。
(2)上电后发送CMD0命令,对卡进行软复位。
(3)因为只有2.0版本以后卡才支持CMD8命令,2.0版本以后的卡和MMC卡不支持该命令,所以可以发送CMD8命令,做出第一步的判断。
(4.1)如果发送CMD8后有响应,则发送ACMD41命令,发送ACMD41命令带一个参数位HCS=1,表示主机支持SDHC高容量SD卡,如果SD卡为SDHC卡就会做出相应,同时在响应(OCR)的信息中CCS位为1,如果响应(OCR)中的CCS位为0,表示为SD2.0标准容量卡。
(4.2)如果发送CMD8命令没有相应,则发送ACMD41命令时参数位HCS=0,则可以用于判断其他两种卡类型,如果卡对ACMD41命令有响应则为SD1.X类型的卡,如果没有响应则为MMC卡。如此一来就可以判断卡的类型并做出相应的初始化。
2、单块数据读取:
(1)CMD16命令(用于设置数据块大小)。(2)等待响应(R1)。(3)CMD17指令(开始读取单块数据)。(4)等待响应(R1)。
3、多块数据读取:
(1)CMD16命令(用于设置数据块大小)。(2)等待响应(R1)。(3)CMD18指令(开始读取数据)。(4)等待响应(R1)。(5)依次接收数据。(6)发送CMD12指令(用于结束传送)。(7)等待响应(R1)。
4、单块写数据:
(1)CMD16命令(用于设置数据块大小)。(2)等待响应(R1)。(3)发送CMD13指令(用于查询卡的状态)。(4)等待READY_FOR_DATA位=1。(5)发送CMD24指令(开始写入数据)。
5、多块数据写入:
(1)CMD16命令(用于设置数据块大小)。(2)发送ACMD23指令(用于擦除数据块)。(3)发送CMD25指令(开始写入数据块)。(4)依次写入需要写入的数据。(5)发送CMD13指令(用于查询卡的状态)。(6)等待写入过程结束。
STM32F4——SD卡相关操作相关推荐
- Arduino ESP8266 Micro SD卡读写操作实例
Arduino ESP8266 Micro SD卡读写操作实例 相关篇<Arduino ESP8266 Micro SD卡读写操作实例> 接线说明 Micro SD ---- ESP826 ...
- FPGA之SD卡读写操作
(呕心沥血,写了接近三个小时.我觉得如果耐心看的话,真的会有所帮助哦哈哈哈.看在博主这么kindhearted的份上,点个赞吧!!!!) 学到后面发现例程文件越来越多,代码越来越恶心了.SD卡,I2C ...
- SD卡相关分区内容设置 x210 SD卡烧录方法
SD卡 内存(RAM)与外存(ROM)的区别: RAM:random access memory.随机访问存储器.特点是任意字节读写(随机访问),掉电丢失. ROM:read only memory. ...
- SD卡/iNand操作指令movi
1.SD卡/iNand操作指令movi (1)开发板如果用SD卡/EMMC/iNand等作为Flash,则在uboot中操作flash的指令为movi(或mmc) (2)movi的指令都是movi r ...
- android SD卡相关
另外文章 http://blog.csdn.net/Fybon/article/details/25904215 Android 外部存储权限分析 http://blog.csdn.net/zjb ...
- android外部sd卡,Android 操作外部SD卡问题
在android4.4.2的系统上面操作可卸载的外部扩展卡,就是俗称的TF卡,怎么可以增删改呢? 我这里有点特殊原因: 1.不是说Environment.getExternalStorageDirec ...
- android sd卡相关avc,Android 5.x 权限问题解决方法
(0)关于selinux的基础知识,可以参见http://www.cnblogs.com/shell812/p/6379321.html:TE语言规则,参见http://www.cnblogs.com ...
- STM32F1 HAL库读写SD卡的操作要点
本文采用的HAL库版本为STM32Cube_FW_F1_V1.8.0(带Patch-CubeF1 1.8.4). 知识点一:SD卡数据线位宽的配置 SD卡可以采用1位数据线模式,也可以采用4位数据线模 ...
- android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录
步骤 1 获取sd卡的路径 File root =Environment.getExternalStorageDirectory(); 2 确定要写文件的路径 String path =root.ge ...
最新文章
- linux 用户和权限管理
- android 设置控件的透明度
- [转载]玩转Asp.net MVC 的八个扩展点
- 插入排序、选择排序、快速排序以及归并排序(附Python代码)
- mysql as_mysql AS子句
- java list加入listview_Android ListView自动生成列表条目的实例
- LeetCode Algorithm 面试题 02.06. 回文链表
- asp.net C# 直接读取或访问其它网站的URL示例
- java多线程之Semaphore信号量详解
- 黑客已经盗了 $15,945,221.72 美元!
- 关于spring+springMVC+myBatis的一些基础配置以及整合
- 告诉你三个实用的换性别特效软件
- matlab电子类元件库仿真元件,matlab电力系统仿真元件讲课讲稿.doc
- Python xlrd、xlwt 用法说明
- Transaction
- 《A Neural Layered Model for Nested Named Entity Recognition》
- 在前端爬虫或者插件中,淘宝API/接口调用里签名算法sign是如何实现的?
- WPF做的金山词霸页面
- C++自学历程——启程篇
- 2016腾讯实习生招聘在线笔试总结(移动开发)