没有合适的资源?快使用搜索试试~ 我知道了~
首页华清远见Linux MMC SD驱动详解(本人培训内部资料)
华清远见Linux MMC SD驱动详解(本人培训内部资料)
4星 · 超过85%的资源 需积分: 12 86 下载量 198 浏览量
更新于2023-03-16
评论 2
收藏 493KB DOC 举报
华清远见Linux MMC SD驱动详解(本人培训内部资料)关于MMC SD讲的很详细。
资源详情
资源评论
资源推荐
一、 SD 数据包的封装与命令协议相关
1. SD 卡命令格式
sd卡的指令被封装成48位的数据包,每次传送这48位的数据包。数据包的内容
包括起始位、结束位、传输位、命令索引、传输参数和7位CRC校验码。其具
体格式分布如下图
Bit 位置 47 46 [45:40] [39:08] [07:01] 00
Bit 宽度
1 1 6 32 7 1
值
“0” “1” x x x “1”
说明
Start bit
Transmission
bit
Command
index
Argument CRC7 End bit
其中的命令索引位是[45:40],里面可以封装各种命令,具体的命令表将在下
面给出。不同的命令会对应不同的回应(respond),回应有三种(R1,R2,R3,R6)
格式,在命令表中的选项会给出。
2. SD 卡命令索引表
CMD
简略语 指令说明 SPI 模式
自变量 回应
0 GO_IDLE_STATE
这是使
card
初始
化到
Idle
状态的
指令
.CS
信号设
在
Low
的状态时
,
接到本指令
后
,card
将转换到
SPI
模式
.
None R1
1 SEND_OP_COND
接到本指令
后
,card
将做
R3
回
应
(
含有
OCR
数
据
).
根据
OCR
值
,
可以得知
card
能
工作电压范
围
.OCR
数据最高
值位的
1bit
是用
来确认
card
内部
处理是否结束
(Ready/Busy
轮
询
).
None R1
2 ALL_SEND_CID
接到本指令后
,
处于
Ready
状态
的
card
将传送
CID
数据
.
在
MMC
模式下
,
数
据被送到
CMD
信
号
,
在
CID
数据的
每
1bit
传送
后
,CMD
信号状
态将与该
card
内
部状态相比较
,
如
果不一致
,
將中止
数据传送
,card
返
回到
Ready
状态
.
如果相一致
,
该
card
将认为已被
选中
,
然后转换到
Identification
状
态
.
3 SET_RELATIVE_ADDR
本指令会为已转
换到
Identification
状态的
card
分配
一个相对
card
地
址
(RCA).
当
RCA
分配后
,card
将转
换到
Stand-by
状
态
,
对以后的
CMD2
和
CMD3
不回应
.
4 NOP
这是用来设定
DSR(DriveState
寄存器
)
的指令
,
但是本
car
不支持
DSR.
7 SELECT/DESELECT_CARD
本指令是用来选
择一张
card,
让它
在
Stand-by
状态
和
Transfer
状态之
间转换的指令
.
如
果给
card
设定已
分配到的
RCA
地
址
,card
将从
Stand-by
状态转
换到
Transfer
状
态
,
并将回应以后
的读取指令及其
他指令
.
如果给
card
设定
RCA
以
外的地址
,card
将
转换到
Stand-by
状态。当
RCA=0000h
时
,card
将无条件
地转换到
Stand-
by
状态
.
9 SEND_CSD
接到本指令后
,
将
传送
CSD
数据
.
None R1
10 SEND_CID
接到本指令后
,
将
传送
CID
数据
.
None R1
11 READ_DAT_UNTIL_STOP
接到本指令后
,
将
从设定的地址传
送
P2ROM
数据
,
直到接到指令
CMD12
为止
.
12 STOP _TRANSMISSION
本指令强行终止
CMD11
和
CMD18
的处理
None R1
13 SEND_STATUS
接 到 本 指 令 后 ,
将传送状态寄存
器的信息.
None R2
15 GO_INACTIVE _STATE
接到本指令后,将
转 换 到 休 止
(inactive)状态.
16 SET_BLOCKLEN
本指令用来设定
Block 长度. 对象
是 以 后 的 指 令
CMD17 和
CMD18.
31:00]
block
length
R1
17 READ_SINGLE _BLOCK
接到本指令后,将
从自变量设定的
地 址 传 送 1 个
block 长 度 的 数
据.(block 长度由
指 令 CMD16 设
定).
[31:00]
data
address
R1
18 READ_MULTIPLE _BLOCK
接到本指令后,将
从自变量设定的
地 址 连 续 传 送
block 长 度 的 数
据,直到接到指令
CMD12 为 止 .
(block 长 度 由 指
令 CMD16 设定).
[31:00]
data
address
R1
23 SET_BLOCK _COUNT
本指令是给紧跟
[31:16]set to 0 R1
的 指 令 CMD18
设 定 要 传 送 的
block 数量.
[15:00]number
of block
24 WRITE_BLOCK
接到本指令后,将
写1个block 长度
的数据到自变量
设定的地址.
(block长度由指
令CMD16设定).
[31:0] data
address
R1
25 WRITE_MULTIPLE_
BLOCK
接到本指令后,将
连续写block长度
的数据到自变量
设定的地址,直到
接到指令CMD12
为止.(block长度
由指令CMD16设
定).
[31:0] data
address
R1
58 READ_OCR
接 到 本 指 令
后 ,Card 将 传 送
OCR 数据.
None R3
59 CRC_ON_OFF
本指令是用来设
定 CRC 选 项 为
ON 或 OFF. 在
SPI 模 式下 ,CRC
的初始值设定为
OFF.[CRC 选 项
[bit=1] 表 示 CRC
ON;[CRC 选 项
[bit=0] 表 示 CRC
OFF.
[31:01]
stuff bits
[00:00]
CRC
option
R1
3. 命令回应
1) R1 模式
对象指令
CMD0 : GO_IDLE_STATE
CMD1 : SEND_OP_COND
CMD9 : SEND_CSD
CMD10:SEND_CID
CMD12:STOP_TRANSMISSION
CMD16:SET_BLOCKLEN
CMD17:READ_SINGLE_BLOCK
CMD18:READ_MULTIPLE_BLOCK
CMD23:SET_BLOCK_COUNT
CMD59:CRC_ON_OFF
7 6 5 4 3 2 1 0
0 0 0
2) R2 模式
CMD13:SEND_STATUS
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0
3) R3 模式
对象指令
CMD58:READ_OCR
39 38 37 36 35 34 33 32 0
0 0 0 OCR
in idle state
illegal command
communication CRC
error
address error
parameter error
out of range
communication CRC error
in idle state
illegal command
address error
parameter error
剩余38页未读,继续阅读
Quietly
- 粉丝: 57
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论12