声明:本篇文章参考SD卡协议V1.0、SD卡协议V2.0、SD卡协议V1.0、SD卡协议简化规格V3.0、正点原子部分资料、野火部分资料。

真的服的是,网上这么多分享什么SD卡协议的文章,在CSDN中都要下载积分。

真的是垃圾堆里刨食

所有人都想你下它的资料赚积分,还有些介绍SD卡的文章,那是直接复制的别人的文章,连图片链接都复制出来了,真垃圾!


SD卡协会官网:SD Association | The SD Association

https://www.sdcard.org/

还不如直接去官网下载官方文档,就算网站慢一点!


SDIO

SD卡(Secure Digital Memory Card)

SDIO全称是安全数字输入/输出接口。多媒体卡(MMC)、SD卡、SD I/O卡都有SDIO接口。

SD I/O 卡本身不是用于存储的卡,它是指利用SDIO传输协议的外设。

SDIO接口的设备举例
SD I/O卡

Wi-Fi 卡

GPS 卡

以太网卡

……

SD存储卡

SD(不大于 2GB)

SDHC(大于 2GB,不大于 32GB)

SDXC(大于 32GB,不大于 2 TB)

MMC卡 可以说为SD卡的前身,现在使用少
CE-ATA 设备 是专为轻薄笔记本硬盘设计的硬盘高速通信接口

SD卡图片及其接口定义

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

SD卡外部接口

(图片来源:SanDisk Secure Digital (SD) Card Product Manual, Rev. 2.2)

SD卡由9个引脚进行通讯,支持SPI、SDIO两种模式,但是在两种模式下引脚定义略有不同:

SDIO和SPI模式下的SD卡引脚功能
引脚 1 2 3 4 5 6 7 8 9
SD卡模式 CD/DAT3 CMD VSS VCC CLK VSS DATO DAT1 DAT2
SPI模式 CS MOSI VSS VCC CLK VSS MISO NC NC

SD卡物理结构

(图片来源:SanDisk Secure Digital (SD) Card Product Manual, Rev. 2.2)

(图片来源:[野火]《STM32库开发实战指南》

SD卡一般有五个寄存器,下表标记“ * ”。*

(本表参考:SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00 September 25, 2006)

SD卡寄存器及其功能
名称 宽度(bit) 描述
CID* 128

卡识别号(Card identification number)。

提供制造商ID、OEM/应用ID、产品名称、版本、序列号、制造日期等(唯一)。

RCA* 16

相对地址(Relative card address)。仅SDIO模式下应用。

卡的本地系统地址,可动态变化。初始化时,动态地址由卡建议,主机核准。

DSR 16 驱动级寄存器(Driver Stage Register)。配置卡的输出驱动。
CSD* 128 卡的特定数据(Card Specific Data)。提供SD卡操作条件相关信息和数据。
SCR* 64 SD配置寄存器(SD Configuration Register)。SD卡特殊特性信息。
OCR* 32 操作条件寄存器(Operation conditions register)。主要为SD卡的操作电压等信息。
SSR 512 SD状态(SD Status)。SD卡专有特征的信息。
CSR 32 卡状态(Card Status)。卡状态信息。

SD卡命令

SD 卡系统的命令被分为多个类,每个类支持一种“卡的功能设置”。

SD卡部分常用命令:

(图片来源:[野火]《STM32库开发实战指南》

下面详细介绍命令,主要参考【Linux驱动学习】SD卡规范学习 - sickworm - 博客园

参考手册:SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00 September 25, 2006

(由于参考手册中表有些在两页上,有些表中内容繁杂,故下面表均拷贝自参考博客)

Basic Commands(class 0)(基本命令)

用于重置、切换SD卡状态,获取相关信息。上面野火提供的表中均已介绍

Block-Oriented Read Commands(class 2)(面向块读取命令)

读单个、多个块数据,设置块长度。上面野火提供的表中均已介绍

Block-Oriented Write Commands(class 4)(面向块写命令)

写单个、多个块数据,设置块长度。上面野火提供的表中均已介绍

Block Oriented Write Protection Commands(class 6)(面向块的写保护命令)

设置、取消对应地址的数据的写保护,可以使其他程序无法写入指定的地址,达到保护目的。用的情况不太多。

Erase Commands(class 5)(擦除命令)

把对应的块数据擦除。上面野火提供的表中均已介绍

Lock Card(class 7)(锁卡命令)

设置、取消锁卡。锁卡后需要密码才能访问SD卡。上面野火提供的表中均已介绍

Application-specific Commands(class 8)(特定于应用程序的命令)

CMD55,使用ACMD前必须先发送的命令;CMD56是标准的读、写命令,会读、写一个block的数据。上面野火提供的表中均已介绍

I/O Mode Commands(class 9)(输入/输出模式命令)

预留给SDIO设备使用(CMD5也是预留给SDIO设备),在SD卡官方文档中没有说明具体用途

SD官方文档规定:所有未来保留命令、响应的码字长度应为48位。(如果有)

Application Specific Commands used/reserved by SD Memory Card(SD存储卡使用/保留的特定于应用程序的命令)

SD卡专用命令:MMC卡无法使用这些命令,里面包括如设置数据总线位宽,获取SD卡信息(寄存器)。上面野火提供的表中介绍了部分

SD 卡主机模块系统旨在为各种应用程序类型提供一个标准接口。在此环境中,需要有特定的客户/应用程序功能。为实现这些功能,在标准中定义了两种类型的通用命令:特定应用命令 (ACMD) 和常规命令 (GEN_CMD)。要使用 SD 卡制造商特定的 ACMD 命令如 ACMD6,需要在发送该命令之前无发送 CMD55 命令,告知 SD 卡接下来的命令为特定应用命令。CMD55 命令只对紧接的第一个命令有效,SD 卡如果检测到 CMD55 之后的第一条命令为 ACMD 则执行其特定应用功能,如果检测发现不是 ACMD 命令,则执行标准命令。


SD卡总线拓扑结构

共有六条通讯线路和三条电源线路。(自行翻译,可能有不准)

CMD 双向命令信号通道(主机和卡之间以推挽模式运行)
DAT0-3 双向数据信号通道(主机和卡之间以推挽模式运行)
CLK 主机提供给卡的信号(推挽模式运行)
VDD 提供给卡的电源
VSS[1:2] 两个地线

(图片来源:SanDisk Secure Digital (SD) Card Product Manual, Rev. 2.2)

SDIO接口

SD卡模式针脚定义
针脚 名称 类型 描述
1 CD/DAT3 I/O/PP 卡监测数据位 3
2 CMD PP 命令/回复
3 VSS S
4 VCC S 供电电压
5 CLK I 时钟
6 VSS2 S
7 DAT0 I/O/PP 数据位 0
8 DAT1 I/O/PP 数据位 1
9 DAT2 I/O/PP 数据位 2

注:S:电源供电        I:输入        O:输出        PP:I/O使用推挽驱动

SD卡允许 1 线到 4线数据信号设置。当默认的上电后,SD卡使用DAT0。初始化之后,主机可以改变线宽(即为 2 根、3 根、4 根)。当一主机连接多个SD卡时,只 可共用CLK线。

  • CLK:时钟线,由SDIO主机产生。

  • CMD:命令控制线,SDIO主机通过该线发送命令控制SD卡,如果命令要求SD卡提供应答,SD卡也通过该线传输应答信息。

  • D0-3:数据线,传输读写数据;SD卡可将 D0 拉低表示忙状态。

SPI接口

针脚 名称 类型 描述
1 CS I 片选(低电平有效)
2 DI I 数据输入
3 VSS S
4 VCC S 供电电压
5 CLK I 时钟
6 VSS2 S
7 DO 0 数据输出
8 NC NC
9 NC NC

SPI总线允许通过 2 通道传输数据。SPI兼容模式使得MMC主机系统通过小改动就可以使用SD卡。SPI模式使用字节输出。SPI模式的优点就是简化主机设计。SPI模式相对SDIO模式丧失了速度。

晚安 ~

SD卡简单介绍(个人笔记)杜绝垃圾堆里刨食相关推荐

  1. SD卡简单介绍-数据传输、模式流程

    有关SD卡接口及其内部寄存器请看这里!SD卡简单介绍 CSDN真的 ctrl+z 慎用!不知道那些工程师是怎么想的!垃圾 ~ SD总线传输 SD 总线通信是基于命令和数据传输的.通讯由一个起始位 (& ...

  2. Android SD卡简单的文件读写操作

    最近有这样的需求,把每次统计到的数据,以txt形式保存到手机SD卡或是手机内存中,遇到一些问题,记录下来. 首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xm ...

  3. sd卡数据误删怎么恢复?内存卡里的照片删了怎么恢复

    sd卡数据误删怎么恢复?内存卡,一般并用在手机.相机里面,主要是用来储存照片等数据的,内存卡的容量通常来讲是有限的,一些不需要的数据我们会选择删除,这样来腾出更多的空间,方便后续保存新的数据.不过,偶 ...

  4. 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡

    一.目的 这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录.文件的相关操作. 在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下. 物联网开发笔记(60)- 使用Micr ...

  5. SD卡介绍(基于SPEC3.0)

    1.SD卡基本介绍(Secure Digital Memrory Card) SD卡是基于MMC(MultiMedia卡)格式,是东芝在MMC卡上升级来的(所以,SD卡是支持MMC卡的协议的).SD卡 ...

  6. sd 卡驱动--基于高通平台

    点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍 ...

  7. 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  8. Arduino应用开发——SD卡

    Arduino应用开发--SD卡 目录 Arduino应用开发--SD卡 前言 1 硬件介绍 1.1 模块简介 1.2 硬件连接 2 软件编程和测试 2.1 Arduino IDE环境搭建 2.2 S ...

  9. linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

    Linux系统和SD卡读写部分程序 11.1.1 SD卡系统概念 Linux系统移植>第11章SD卡驱动移植,本章重点为SD卡协议介绍和SD卡驱动分析,后面也介绍SD卡驱动移植过程.随着SD卡存 ...

  10. SD卡学习(SDIO和SPI模式)

    SD卡学习(SDIO和SPI模式) ** SD卡的操作模式:SD卡模式(SDIO).SPI模式(默认为SD模式). 其中SD卡模式的信号线有:CLK.CMD.DAT0-DAT3,6根线. SPI模式的 ...

最新文章

  1. 牛X,一系列Chrome 灵魂插件!爱了爱了!
  2. Java中的异常和递归
  3. 如何在Python中捕获SIGINT?
  4. 想体验从活火山上滑下来的刺激感?VR来成全你
  5. JS函数式编程概念理解:函子(Functor)
  6. python基础学习笔记2
  7. java 百亿计算器_设计一个一百亿的计算器
  8. 5行Python就能爬取 3000+ 上市公司的信息?
  9. python flask oauth_Flask之 flask_httpauth(HTTPTokenAuth)
  10. linux看python包的路径_linux下 彻底修改python的包/模块导入路径
  11. NVIDIA下载老版本驱动/CUDA/Video Codec SDK的链接
  12. 史上最全的OpenCV入门教程
  13. substring字符串截取
  14. android自定义View之气球碰撞效果
  15. 微信成语接龙小程序|微擎框架|带流量主|前端+后端完整源码
  16. python订单管理系统功能_后台系统:订单管理
  17. 脸部匹配测试软件,手把手教你在浏览器中使用脸部识别软件包
  18. 我以为你懂的。懂得我是特别的
  19. Android 10.0 SystemUI状态栏显示和隐藏自定义图标
  20. 彻底对一个男人失望的瞬间

热门文章

  1. BAPI_INCOMINGINVOICE_* 预制正向凭证和贷项凭证
  2. 全面概述什么是人工智能?
  3. 复制文件夹 omitting directory
  4. PCIe 设备树详细讲解
  5. 怎么看微信撤回的效果?教你看微信已撤回的消息、图片
  6. Android appWidget——每日一句应用开发
  7. spring boot 2.0 配置logback日志
  8. 从狂热的苹果粉丝们来看中国式“杯具”
  9. video标签设置autoplay(自动播放)无效
  10. Unity手机游戏性能优化系列:针对CPU端的性能调优