1.SD协议版本

  • SD 1.1
  • SD 2.0
  • SD 3.0

    在看协议的时候,需要注意协议的版本,注意版本之间的差别
  • SD协议是常见的数据通信和存储卡之间的协议
  • HDMI是显示相关的协议,遵循HDMI协议
  • USB遵循USB协议,USB3.0协议的复杂度高于USB2.0
  • 主要学习的是协议的分析方法

2.system feature

SD存储芯片的技术特点



  • SD Card是slave,SD Host是Master,对SD Card进行操作
  • SD Host是存在与SoC中的一个主控设备,进行读写取外围的SD Card中的数据

  • 信号线是连接到芯片的IO上进行传输的,一般而言,信号线不是很多







3.SD Card总线介绍



  • data可以从sd host到sd card也可以从sd card传到sd host,并且是双向的总线
  • 数据传输是以block为单位的,数据传输的时候要跟着crc,多个block数据传输的时候,需要使用一个stop command进行停止传输,单个block传输不需要stop command
  • 如果SD Host想要去访问SD卡,从cmd总线上发送命令(复位\IDLE)
  • 命令分为两种:一种是当前的命令是不需要响应的,单向传输;另外一种是当前的命令需要SD卡进行响应,双向传输
  • CMD是三态总线:总线上挂接的器件可以接收总线的数据和指令,也可以控制总线,还可以不接收总线的数据和指令(从总线上断开),通过输出0,1,z进行控制状态
  • cmd总线是1bit,上面挂载着SD Host,SD Card0,SD Card1 ....
  • 默认情况下SD card处于被动接收命令的状态,同一时间只有一个模块能够控制三态总线,最初的时候是SD Host控制总线

  • SD Host会通过总线发出命令,根据地址找到SD Card,然后SD Card接收到指令之后会做出响应,如果要响应数据,需要SD Card在某个时刻控制总线(输出0,1)

  • cmd可以从SD Host传给一个SD card (address command),还可以由一个SD Host传给多个SD Card -- (Broadcast command)

  • 读写都是以block为单位操作
  • Data最多是4bit
  • busy - 写操作的时候,先将数据写到sd card中的buffer中,然后再将buffer中的数据写到sd card中;从buffer写到sd card的时间比较长,写的过程中可以返回busy(data[0]拉低)





  • 在任意情况下,start bit都是0,在command的角度,不发command的时候,总线上都是1(高阻状态),当总线上出现0的时候表示cmd传输
  • transmitter bit:0表示从card->host,1表示从host->card

4.传递数据

  • 传递一笔数据或cmd,每一笔数据是8bit(1byte),每一笔数据是如何传的?传递数据的时候是从最高位到最低位传递
  • 信号有两种模式:一种4bit全部都用,另一种只用其中1bit



5.SD Card



  • RCA - 相对卡的地址,SD Host想要读取卡中的数据,发送的指令中携带RCA值,可以用于标记卡的地址,唯一标识卡;卡收到命令之后,发现是自己的RCA,会进行一个响应
  • RCA - 上电之后sd card的RCA都可能不同,将RCA值发送给host,host下次发送命令会携带RCA
  • DSR - SD 卡驱动水平寄存器
  • CSD - SD 卡的规格信息
  • SCR - SD 卡的配置信息
  • OCR - SD 卡操作信息
  • SSR - SD 状态信息
  • CSR - Card的状态信息

  • sd card上下电之后会进行reset,上电之后通过上电检测电路进行sd card的reset,硬件复位
  • 软件复位通过sd host发送CMD0

  • address command -- 一对一的命令,根据RCA进行区分
  • broadcast command -- 一对多的命令,将命令广播到所有的卡
  • 上电之后,SD卡首先处于识别状态,复位的时候会处于SD卡识别状态;等待SD Host进行一些适配,SD Host会发送一些识别的命令(电压及是否busy等);当SD卡和SD Host进行适配之后,SD Host会发送一个CMD3,SD卡接收到CMD3命令之后会发出一个RCA,SD Host接收到RCA之后可以进行其他操作
  • SD卡发送RCA之后,进入数据传输状态data transfer mode,就可以接收SD Host的请求,进行数据传输

  • 当SD Host发送的电压等信息,SD卡接收到之后发现不匹配,SD卡就会处于inactive状态(无效状态)
  • identification mode和data transfer mode都有一些状态
  • standby - 等待状态
  • transfer - 具备传输能力状态
  • sending - data - 读
  • receiving data and programming - 写
  • disconnect - RCA不匹配,等待重新匹配





SD卡的状态机

  • SD卡初始状态时IDLE状态
  • SD Host发送CMD8,SD卡接收到CMD8之后会进行物理规格版本的验证,进行适配
  • SD 卡上电之后会进行初始化,初始化后会对SD卡中表示busy状态的寄存器进行更新
  • SD Host发送ACMD41,SD卡会将当前卡是不是busy的状态信息返回给SD Host,同时,SD卡接收到ACMD41的时候,会进行电压范围的核对,如果SD卡的电压和SD Host的电压不适配,SD卡会进入inactive state
  • ACMD - Application,ACMD41 - SD卡会返回寄存器的值,表示卡是不是上电完成,卡在完成上电之后,会更改相应寄存器的值;ACMD41包含了SD Host具体的电压范围
  • **当SD卡接收到ACMD41并且不处于busy状态,SD卡就会进入ready status,可以进行相应的处理
  • SD Host发送CMD2,SD卡,SD卡接收到CMD2,会返回一些信息(CID)给SD Host,SD Host拿到这些信息之后可以进行一些判断,然后SD卡就进入identification state,表示卡已经完成了初步的识别**
  • SD Host会发送CMD3,SD卡会返回一个RCA,当SD卡发送RCA之后,SD卡从identification state转到到data transfer state
  • data transfer state具备初步传输数据的能力
  • standby模式可以看作是SD卡data transfer state的空闲状态,在standby模式下,如果接收到来自SD Host的CMD3,就可以发送一个新的RCA
  • 在任何状态下,接收到SD Host的CMD0命令,SD卡会恢复到IDLE状态,SD卡恢复到IDLE状态并不是复位,复位是对寄存器的值进行复位,这里是对SD卡的状态机进行复位
  • SD卡的状态机和Sd Host的状态机是不同的,根据SD卡的状态转移来决定SD Host的状态

  • 上电之后,SD卡处于输入状态,只作为slave进行接收信息
  • 上电之后,所有的SD card的RCA值是0x0000,SD card收到CMD3之后,会重新发布RCA,然后更新寄存器的值
  • 上电之后,SD card还有一个默认的driver stage register的值
  • 上电之后,sd card和host之间不知道是否支持当前电压,所以通过CMD0进行复位的时候,host会在CMD0中携带一个电压值;可以使用CMD8检查sd card是不是支持当前电压
  • inactive状态只能通过硬件复位实现

  • ACMD41,进一步核对电压是不是匹配,SD卡会返回OCR(operation condition register)寄存器的值给SD Host,OCR中有1bit表示当前卡是不是上电完成,是不是busy
  • 在发送ACMD指令之前都要跟一条CMD55,告诉SD卡下一条指令是ACMD类型的指令;CMD55会携带一个RCA值0x0000

  • CMD2-获取SD卡的id,通知SD卡将CID返回给Host,Host可以进行判断,将CID存储起来,建立与RCA的对应关系,可以得到确定的身份令牌

  • card在identification mode下频率是fod,频率比较低,在data transfer mode下的频率为fpp,频率比较快
  • Data transfer mode下,host通过发送cmd9,get CSD,cmd4设置DSR,此时会切换时钟频率,cmd7用于选择某一张卡进入到transfer mode,cmd7中可以携带RCA,然后card根据RCA转到transfer mode下,cmd7如果发送的RCA为0x0000,所有的卡都会回到standyby的状态下

6.总结

  1. Idle state

    CMD8

    CMD55

    ACMD41

    CMD0

    2.Ready Status/Inactive Status

    CMD2

    3.Card Identification state

    CMD3

    4.Data transfer state/Stand by state(Date transfer状态的空闲态)

    CMD3

SD协议-基本概念的更多相关文章

  1. (转载)OC学习篇之---协议的概念和用法

    在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Jav ...

  2. OC中协议的概念以及用法

    OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...

  3. OC学习篇之---协议的概念和用法

    这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字 ...

  4. HTTP 协议基础概念和报文结构

    基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...

  5. 【TCP/IP】二、协议的概念

    一.概念 1.tcp/ip是通信协议的统称. 2.协议就是计算机与计算机之间通过网络实现通信时,事先达成的一种约定.这种约定,使那些不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间,只要 ...

  6. HTTP协议的概念作用和特点

    Web交互的基本流程 请求:客户端根据服务器地址把数据发送给服务器的过程叫请求. 相应:服务器将请求的处理结果发送给浏览器的过程叫响应. 什么是HTTP? 概念:超文本传输协议. HTTP有什么作用? ...

  7. SMGP3.0协议的概念知识

    该项目主页在https://code.google.com/archive/p/smgp/,可以使用VPN进去看看,该项目是开源的,根据SMGP3.0协议写的API,我们要用的话直接调用就好了,这里主 ...

  8. Http协议——基本概念

    一.浏览网页的过程 用户输入一个url,浏览器根据url给web服务器发送一个Request,web服务器接收到Request后进行处理,并返回浏览器一个Response,可以响应一个静态页面或者图片 ...

  9. JAVAEE 和项目开发(第一课:浏览器和服务器的交互模式和HTTP协议的概念和介绍)

    互联网的发展非常迅速,但是万变不离其宗.学习 web 开发,需要我们对互 联的交互机制有一定的了解.为了更好的理解并掌握 Servlet,在正式学习 Servlet之前需要对 web 开发中客户端和服 ...

  10. TCP协议基本概念

    TCP协议最主要的特点 TCP是面向连接的运输层协议.这就是说,应用程序在使用TCP协议之前,必须要建立TCP连接,且在传输完毕后,还要断开连接. 每一条TCP连接只能有两个端点,每一条TCP连接只能 ...

随机推荐

  1. Scrapy-settings.py常规配置

    # Scrapy settings for scrapy_demo project # # For simplicity, this file contains only settings consi ...

  2. 数字孪生和GIS融合:激发数字孪生技术的进步潜力

    数字孪生技术和地理信息系统(GIS)的融合,为数字孪生领域带来了巨大的进步和创新.这种强大的联合不仅扩展了数字孪生技术的应用领域,还提供了更全面.更精确的数据支持,从而推动了数字孪生技术的发展和应用. ...

  3. C++ Qt开发:QSqlDatabase数据库组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QSqlDat ...

  4. 【Python】人工智能-机器学习——不调库手撕贝叶斯分类问题

    1. 作业内容描述 1.1 背景 数据集大小150 该数据有4个属性,分别如下 Sepal.Length:花萼长度(cm) Sepal.Width:花萼宽度单位(cm) Petal.Length:花瓣 ...

  5. 云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘

    摘要:数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载. 本文分享自华为云社区<[云图说]第270期 云数据库GaussDB(for MySQL)事务拆 ...

  6. 浅析华为云基于HBase MTTR上的优化实践

    摘要:主要介绍华为云在HBase 2.x内核所做的一些MTTR优化实践. 本文分享自华为云社区<华为云在HBase MTTR上的优化实践>,作者: 搬砖小能手. 随着HBase在华为云的广 ...

  7. CG行业云渲染服务的演进之路

    摘要:影视动画.特效制作等行业渲染需求量增多,4K/6K以及各高分辨率会陆续成为主流,本地算力与存储资源已无法满足现有任务量.而随着大环境的演变,CG行业发展已进入发展快车道.来自赞奇科技的CEO金伟 ...

  8. 政企上云网络适配复杂,看华为云Stack有妙招

    摘要:政企数据中心部署云资源池后,网络架构变得复杂,如何在数据中心内无缝集成云资源池.如何协同云上业务和云下传统业务的互通.如何解决云上业务的安全合规等新问题出现. 本文分享自华为云社区<[华为 ...

  9. 想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

    摘要:Kubernetes 很多看起来比较"繁琐"的设计的主要目的,都是希望为开发者提供更多的"可扩展性",给使用者带来更多的"稳定性"和& ...

  10. [BitSail] Connector开发详解系列四:Sink、Writer

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Sink Connector BitSail Sink Connector交互流程介绍 Sink:数据写入组件的生 ...