热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

声明:本篇文章参考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卡引脚功能
引脚123456789
SD卡模式CD/DAT3CMDVSSVCCCLKVSSDATODAT1DAT2
SPI模式CSMOSIVSSVCCCLKVSSMISONCNC

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模式下应用。

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

DSR16驱动级寄存器(Driver Stage Register)。配置卡的输出驱动。
CSD*128卡的特定数据(Card Specific Data)。提供SD卡操作条件相关信息和数据。
SCR*64SD配置寄存器(SD Configuration Register)。SD卡特殊特性信息。
OCR*32操作条件寄存器(Operation conditions register)。主要为SD卡的操作电压等信息。
SSR512SD状态(SD Status)。SD卡专有特征的信息。
CSR32卡状态(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卡模式针脚定义
针脚名称类型描述
1CD/DAT3I/O/PP卡监测数据位 3
2CMDPP命令/回复
3VSSS
4VCCS供电电压
5CLKI时钟
6VSS2S
7DAT0I/O/PP数据位 0
8DAT1I/O/PP数据位 1
9DAT2I/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接口


针脚名称类型描述
1CSI片选(低电平有效)
2DII数据输入
3VSSS
4VCCS供电电压
5CLKI时钟
6VSS2S
7DO0数据输出
8NCNC
9NCNC

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

晚安 ~


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
author-avatar
梧桐树信息科技
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有