一、简介:

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卡相关操作相关推荐

  1. Arduino ESP8266 Micro SD卡读写操作实例

    Arduino ESP8266 Micro SD卡读写操作实例 相关篇<Arduino ESP8266 Micro SD卡读写操作实例> 接线说明 Micro SD ---- ESP826 ...

  2. FPGA之SD卡读写操作

    (呕心沥血,写了接近三个小时.我觉得如果耐心看的话,真的会有所帮助哦哈哈哈.看在博主这么kindhearted的份上,点个赞吧!!!!) 学到后面发现例程文件越来越多,代码越来越恶心了.SD卡,I2C ...

  3. SD卡相关分区内容设置 x210 SD卡烧录方法

    SD卡 内存(RAM)与外存(ROM)的区别: RAM:random access memory.随机访问存储器.特点是任意字节读写(随机访问),掉电丢失. ROM:read only memory. ...

  4. SD卡/iNand操作指令movi

    1.SD卡/iNand操作指令movi (1)开发板如果用SD卡/EMMC/iNand等作为Flash,则在uboot中操作flash的指令为movi(或mmc) (2)movi的指令都是movi r ...

  5. android SD卡相关

    另外文章   http://blog.csdn.net/Fybon/article/details/25904215 Android 外部存储权限分析 http://blog.csdn.net/zjb ...

  6. android外部sd卡,Android 操作外部SD卡问题

    在android4.4.2的系统上面操作可卸载的外部扩展卡,就是俗称的TF卡,怎么可以增删改呢? 我这里有点特殊原因: 1.不是说Environment.getExternalStorageDirec ...

  7. android sd卡相关avc,Android 5.x 权限问题解决方法

    (0)关于selinux的基础知识,可以参见http://www.cnblogs.com/shell812/p/6379321.html:TE语言规则,参见http://www.cnblogs.com ...

  8. STM32F1 HAL库读写SD卡的操作要点

    本文采用的HAL库版本为STM32Cube_FW_F1_V1.8.0(带Patch-CubeF1 1.8.4). 知识点一:SD卡数据线位宽的配置 SD卡可以采用1位数据线模式,也可以采用4位数据线模 ...

  9. android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录

    步骤 1 获取sd卡的路径 File root =Environment.getExternalStorageDirectory(); 2 确定要写文件的路径 String path =root.ge ...

最新文章

  1. linux 用户和权限管理
  2. android 设置控件的透明度
  3. [转载]玩转Asp.net MVC 的八个扩展点
  4. 插入排序、选择排序、快速排序以及归并排序(附Python代码)
  5. mysql as_mysql AS子句
  6. java list加入listview_Android ListView自动生成列表条目的实例
  7. LeetCode Algorithm 面试题 02.06. 回文链表
  8. asp.net C# 直接读取或访问其它网站的URL示例
  9. java多线程之Semaphore信号量详解
  10. 黑客已经盗了 $15,945,221.72 美元!
  11. 关于spring+springMVC+myBatis的一些基础配置以及整合
  12. 告诉你三个实用的换性别特效软件
  13. matlab电子类元件库仿真元件,matlab电力系统仿真元件讲课讲稿.doc
  14. Python xlrd、xlwt 用法说明
  15. Transaction
  16. 《A Neural Layered Model for Nested Named Entity Recognition》
  17. 在前端爬虫或者插件中,淘宝API/接口调用里签名算法sign是如何实现的?
  18. WPF做的金山词霸页面
  19. C++自学历程——启程篇
  20. 2016腾讯实习生招聘在线笔试总结(移动开发)

热门文章

  1. Julia系列2nd -数据类型
  2. 微信小程序 rich-text 富文本图片宽度自适应的方法
  3. ESP8266远程控制开关示例超全面详细(2021-10-18)
  4. Python字典的keys函数
  5. 语音识别MFCC系列(四)——MFCC特征参数提取
  6. KB MB GB TB PB ZB或是(K M G T P Z)之间的转化
  7. 实训一:路由器的带外管理
  8. JavaFX 图形界面设计
  9. PAT甲级真题1069 数字黑洞(巧妙解法)
  10. MMDetection框架的anchor_generators.py解析与船数据解析