SD协议-命令响应
1.CRC

- 发送命令或数据的时候,都需要经过芯片的IO口,SD Host和SD卡是通过PCB的走线连接在一起的,SD Host IO --> PCB线 --> SD Card IO,PCB走线容易受到电磁干扰,所以在传递的数据的时候可能出现错误
- 在进行数据或者指令传输的时候,会跟一段数据的编码(CRC),CRC的位宽通常比数据位宽小很多

- 在传输数据和命令的时候,发送端有一个CRC生成器,当数据发送完之后,再传输CRC生成器生成的CRC(CRC-m)
- 在接收端,不断接收数据,一边接收数据,也会一边生成自己的CRC(CRC-s),然后通过比较器cmp比较CRC-m和CRC-s,如果相同,就表示数据没有问题
- 如果CRC-m和CRC-s如果不同,有两种情况,数据传输出现错误或者CRC传输的时候出现错误,就不能使用这一笔数据,接收端会发送信息给发送端,将接收到数据并出错的信息返回给发送端,发送端一般会再次发送一次数据
- CRC的作用主要是为了校验发送的数据是不是传输正确
1.1 CRC生成

- 对于CMD来讲使用的是CRC7,7bitCRC
- CRC生成多项式:CRC7,最高次幂是7,系数为1;其他次幂前的系数是0或者是1
- 最高次幂是多少就有多少个寄存器,data out和data in做异或逻辑,输入到第一个寄存器
- x3之前的系数是1,就在第三个寄存器后面加异或逻辑,哪一项系数是1,就在其所在次幂的寄存器之后加一个异或逻辑

- DATA位宽比较宽,使用的是CRC16
2.Command种类及格式

- bc(Broadcast) - 命令总是从SD Host发送给SD Card,SD Host发送一些命令,所有的SD Card都会收到这个命令
- bcr - Broadcast with response,需要SD卡进行回复
- ac - Address command(point-to-point command),没有data transfer
- actc - Address data transfer command,比如CMD发送出去之后附带有数据返回或者输出
- SD Host在进行读写的时候,只会要求一个SD Card进行读写
- 最高位是1bit,0表示开始
- transmission bit:0表示响应回来的数据,1表示发送的命令
- command index:CMD3,4,5,6,7,具体的命令编号通过[45:40]进行体现
- argument:命令附带的参数,比如电压等信息,体现在这里面
- CRC7:CRC7编码
- 最低位1bit,1结束
2.1 CMD类型

- CMD0 - 所有的SD Card都会回到IDLE状态
- CMD2 - SD Card返回CID
- CMD3 - SD Card返回RCA,SD Host收到RCA之后,会进行存储
- CMD4 - 设置DSR(Driver Stage),设置驱动等级,挂载的SD Card越多或者总线越长,驱动能力需求越强,在standby状态下可以通过CMD4设置驱动能力
- CMD7 - argument中会携带RCA,SD Card收到之后会进行比对RCA值,相同则转到data transfer state

- CMD8 - check电压值
- CMD9 - 给SD A通信就发送A的RCA,返回CSD
- CMD10 - 返回CID值
- CMD12 - stop transmission(用于multiple block transfer)
- CMD13 - 返回状态信息
- CMD17,18 - single,multiple block transfer, SD Card处于data transfer state
- 存在一些保留的指令,方便增加指令
SD协议-命令响应的更多相关文章
- HTTP协议请求响应过程和HTTPS工作原理
HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer p ...
- HTTP协议请求响应模型
HTTP协议请求响应模型:以”用户登录“这个场景来描述 第一步:客户端发起请求到API接口层,操作:用户在客户端填写用户名和密码,点击登录,发送请求. 第二步:api接收到客户端发起的用户请求,api ...
- HTTP协议:响应消息
一.请求消息:客户端发送给服务器端的数据 数据格式: 1.请求行 2.请求头 3.请求空行 4.请求体 二.响应消息:服务器端发送给客户的数据 数据格式: 1.响应行: 1.组成:协议/版本 响应状态 ...
- IMAP协议命令(详细)
参照:http://www.cnblogs.com/qiubole/archive/2007/11/23/970180.html 转载:http://blog.sina.com.cn/s/blog_5 ...
- MFC中菜单的命令响应顺序
响应只可以由Doc,View,MainFrame以及APP四个类完成. 响应顺序是: 点击某菜单项,框架类最先接到菜单命令消息. 框架类把接收到得这个消息交给它的子窗口,即视图类. 视图类根据命令消息 ...
- 9. http协议_响应状态码_页面渲染流程_路由_中间件
1. http协议 超文本传输协议 协议详细规定了 浏览器 和 万维网服务器 之间互相通信的规则 客户端与服务端通信时传输的内容我们称之为报文(请求报文.响应报文) 常见的发送 get 请求方式 在浏 ...
- 自制操作系统Antz(11)——实现shell(下)命令响应
我已经规范了系统代码风格,类似于按照linux分包,把各部分功能区分开了 Antz系统更新地址 Linux内核源码分析地址 Github项目地址 在之前的任务中,我们已经通过直接操作显卡驱动完成了简单 ...
- HTTP协议—HTTP响应头和请求头
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息. HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可 ...
- Web协议详解与抓包实战:HTTP1协议-HTTP 响应行(3)
一.HTTP 响应行 二.响应码分类:1xx 三.响应码分类: 2xx 1. 201 Created: 有新资源在服务器端被成功创建 2.207 Multi-Status:RFC4918 ,在 WEB ...
- HTTP协议之响应头Date与Age
HTTP没有为用户提供一种手段来区分响应是缓存命中的,还是访问原始服务器得到的.客户端有一种方法能判断响应是否来自缓存,就是使用Date首部.将响应中Date首部的值与当前时间进行比较,如果响应中的日 ...
随机推荐
- StringBuilder 导致堆内存溢出
StringBuilder 导致堆内存溢出 原始问题描述: Exception in thread "main" java.lang.OutOfMemoryError: Java ...
- Easy App Locker - 给你的 mac 应用加锁保护你的隐私
Easy App Locker可以对Mac上的单个应用进行密码保护.维护Mac上的隐私. 像如果你的某个应用存在隐私数据就可以使用该软件将此应用上锁,这样当你的朋友使用你的 mac 时你就不用担心你的 ...
- XXL-Job与Elastic-Job详细对比
1. 失败处理策略 失败处理策略 XXL-Job Elastic-Job 失败重试 支持,最多重试三次.重试时间间隔可配置. 支持,最多重试十次.重试时间间隔可配置. 失败告警 支持,可配置告警接收人 ...
- [架构]辨析: 高可用 | 集群 | 主从 | 负载均衡 | 反向代理 | 中间件 | 微服务 | 容器 | 云原生 | DevOps | ...
词汇集 灾备 冷备份 双机热备份 异地容灾备份 云备份 灾难演练 磁盘阵列(RAID) 故障切换 心跳监测 高可用 集群 主从复制(Master-Slave) 多集群横向扩容(master-clust ...
- LeetCode 双周赛 101,DP/中心位贪心/裴蜀定理/Dijkstra/最小环
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 这周比较忙,上周末的双周赛题解现在才更新,虽迟但到哈.上周末这场是 LeetCode 第 ...
- 随手记:redis 开发注意事项
Redis开发建议 1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵.建议根据业务只将高频热数据存储到Redis中 ...
- Mysql中的数据类型注意事项
整型数据类型 MySQL数据类型 含义(有符号) tinyint 1字节,范围(-128~127) smallint 2字节,范围(-32768~32767) mediumint 3字节,范围(-83 ...
- 3. 面向对象编程(OOP):
面向对象编程的本质就是:以类的方式组织代码.以对象的组织(封装)数据 抽象:就是把不同的物品的共同点剥离出来,构成一个类.如每个人都有2条腿,我们可以把2条腿剥离出来 构成一个类 类与对象的关系 类: ...
- Albert理论详解:用矩阵分解与跨层参数共享减少参数量
1.介绍 Albert是Bert的一个变种,它在Bert的基础上减少了参数量,使整个模型更加的"轻量化",同时也保持了Bert的性能,但值得注意的是,Albert虽然显著地减少了参 ...
- Optional避免频繁判空的神器
1. 创建Optional //创建空的 Optional Optional<Object> optional = Optional.empty(); //创建非空的 Optional 如 ...