没有合适的资源?快使用搜索试试~ 我知道了~
SD操作学习笔记 SD卡操作

温馨提示


试读
29页
SD卡是基于flash的存储卡。 SD卡和MMC卡的区别在于初始化过程不同。 SD卡的通信协议包括SD和SPI两类。 SD卡使用卡内智能控制模块进行FLASH操作控制,包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理。
资源推荐
资源详情
资源评论









SD 操作学习笔记
标签: 笔记 学习 SD
卡驱动 2009-11-11 21:51
SD 卡操作 一、 概述 1、简介
SD 卡是基于 flash 的存储卡。
SD 卡和 MMC 卡的区别在于初始化过程不同。
SD 卡的通信协议包括 SD 和 SPI 两类。
SD 卡使用卡内智能控制模块进行 FLASH 操作控制,包括协议、安全算法、
数据存取、ECC 算法、缺陷处理和分析、电源管理、时钟管理。
2、功能介绍 2.1 特点
1) 主机无关的 FLASH 内存擦除和编程
读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机
无需关心具体操作的完成。当采用新型的 FLASH 时,主机代码无需更新。
2) 缺陷管理
3) 错误恢复
4) 电源管理
Flash 每个扇区有大约 10 万次的写寿命,读没有限制。
擦除操作可以加速写操作,因为在写之前会进行擦除。
3 SD 总线模式 3.1 Negotiating Operation Conditions
当主机定义了 SD 卡不支持的电压范围时,SD 卡将处于非活动状态,将忽
略所有的总线传输。要退出非活动状态唯一的方法就是重新上电。
3.2 SD 卡获取和识别
SD 卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。主机
依次分别访问每个卡,每个卡的 CID 寄存器中已预编程了一个唯一的卡标识号,
用来区分不同的卡。
主机通过 READ_CID 命令读取 CID 寄存器。CID 寄存器在 SD 卡生产过程
中的测试和格式化时被编程,主机只能读取该号。
DAT3 线上内置的上拉电阻用来侦测卡。在数据传输时电阻断开 (使用
ACMD42)。

3.3 卡状态
卡状态分别存放在下面两个区域:
卡状态(Card Status),存放在一个 32 位状态寄存器,在卡响应主机命令
时作为数据传送给主机。
SD 状态(SD_Status),当主机使用 SD_STATUS(ACMD13)命令时,
512 位 以 一 个 数 据 块 的 方 式 发 送 给 主 机 。 SD_STATUS 还 包 括 了 和
BUS_WIDTH、安全相关位和扩展位等的扩展状态位。
3.4 内存组织
数据读写的基本单元是一个字节,可以按要求组织成不同的块。
Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存
储在 CSD 寄存器。
Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,
大小信息存储在 CSD 寄存器。
WP Group:写保护单位。大小包括几个 group,写保护由一位决定,对每个
设备大小是固定的,存储在 CSD 寄存器。
3.5 读写操作
Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块
产生一个 16 位的 CRC 校验码,接受端根据校验码进行检验。读操作的块长度
受设备 sector 大小 (512 bytes)的限制,但是可以最小为一个字节。不对齐的访问
是不允许的,每个数据块必须位于单个物理 sector 内。写操作的大小必须为
sector 大小,起始地址必须与 sector 边界对齐。
Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中
的地址读取或写入连续的内存地址。操作通过一个停止传输命令结束。写操作
必须地址对齐。
3.6 数据传输速率
SD 卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据
传输。单根数据线传输最大传输速率为 25 Mbit/s,四根数据线最大传输速率为
100 Mbit/s。
3.7 数据保护
每个 sector 的数据通过 Error Correction Code (ECC)进行保护。在写 sector
时生成 ECC,在读 sector 时检验 ECC。如果发现错误,在传输前进行纠正。
3.8 数据擦除
SD 卡数据擦除的最小单位是 sector。为了加速擦除操作,多个 sector 可以
同时擦除。为了方便选择,第一个指令包含起始地址,第二个指令包含结束地

址,在地址范围内的所有 sector 将被擦除。
3.9 写保护
两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过 PROGRAM_CSD 指
令进行设置。永久保护位一旦设置将无法清除。
3.10 拷贝位
通过 CSD 寄存器中的拷贝位(copy bit)设置 SD 卡中的数据是原始数据还是拷贝数据。拷
贝位一旦设置,将无法清除,在测试和格式化时使用。
3.11 CSD 寄存器
所有 SD 卡的配置信息存储在 CSD 寄存器。通过 SEND_CSD 读取,PROGRAM_CSD 修改。
4 SPI 模式 二、 SD 卡接口描述 1 引脚和寄存器主机通过 9 个引脚和 SD 卡相连
1.1 SD 模式引脚
扩展数据线(DAT1-DAT3)上电后为输入,SET_BUS_WIDTH 命令执行后作为数
据线。即使只有 DAT0 使用,所有数据线都和外部上拉电阻连接,否则 DAT1 &
DAT2(如果未被使用)的振荡输入将引起非期望的高电流损耗。
上电后,数据线输入 50K(+/-20K)欧姆的上拉(用来进行卡侦测和 SPI 模式
选 择 ) 。 用 户 可 以 在 常 规 数 据 传 输 时 , 通 过 SET_CLR_CARD_DETECT
(ACMD42)命令分离上拉。
1.2 SPI 模式引脚
1.3 寄存器
名称 宽度 描述
CID 128
卡标识号
RCA 16
相对卡地址(Relative card address):本地系统中卡的地址,动
态变化,在主机初始化的时候确定
*SPI 模式中没有
CSD 128
卡描述数据:卡操作条件相关的信息数据
SCR 64
SD 配置寄存器:SD 卡特定信息数据
OCR 32
操作条件寄存器
主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路,当上电后卡状态切换
到 idle
状态。也可以通过 GO_IDLE (CMD0)指令来重置。

2 SD 卡总线拓扑
SD 总线有 6 根通信线和三根电源供应线:
CMD——命令线是双向信号线。主机和卡通过 push pull 模式工作。
DAT0-3——数据线是双向信号线。主机和卡通过 push pull 模式工作。
CLK——时钟是从主机到卡的信号。CLK 通过 push pull 模式操作。
VDD—VDD 是所有卡的电源供应线。
VSS[1:2]—VSS 是 2 根地线。
在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽
(physical slot)分配逻辑地址。数据通常分别传输给每个卡。然后,为了方便
处理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操
作地址。
SD 总线允许动态配置数据线数目。上电后默认 SD 卡只用 DAT0 作为数据
传输线。初始化后,主机可以改变总线宽度。这个特性使得在硬件开销和系统
性能间取得平衡。
3 SPI 总线拓扑 4 电气接口 4.1 上电
上电后,包括热插入,卡进入 idle 状态。在该状态 SD 卡忽略所有总线操作
直到接收到 ACMD41 命令。ACMD41 命令是一个特殊的同步命令,用来协商操
作电压范围,并轮询所有的卡。除了操作电压信息,ACMD41 的响应还包括一
个忙标志,表明卡还在 power-up 过程工作,还没有准备好识别操作,即告诉主
机卡还没有就绪。主机等待(继续轮询)直到忙标志清除。单个卡的最大上电时
间不能操作 1 秒。
上电后,主机开始时钟并在 CMD 线上发送初始化序列,初始化序列由连
续的逻辑“1”组成。序列长度为最大 1 毫秒,74 个时钟或 supply-ramp-up 时间。
额外的 10 个时钟(64 个时钟后卡已准备就绪)用来实现同步。
每个总线控制器必须能执行 ACMD41 和 CMD1。CMD1 要求 MMC 卡发送
操作条件。在任何情况下,ACMD41 或 CMD1 必须通过各自的 CMD 线分别发
送给每个卡。
5 寄存器 5.1 OCR(Operating Conditions Register)
32 位的操作条件寄存器存储了 VDD 电压范围。SD 卡操作电压范围为
2~3.6V。然而从内存中访问数据的电压是 2.7~3.6V。OCR 显示了卡数据访问电
压范围,结构如下表所示。
表 3-8 OCR 寄存器定义
OCR 位 VDD 电压范围
0-3
保留
4 1.6~1.7
5 1.7~1.8

6 1.8~1.9
7 1.9~2.0
8 2.0~2.1
9 2.1~2.2
10 2.2~2.3
11 2.3~2.4
12 2.4~2.5
13 2.5~2.6
14 2.6~2.7
15 2.7~1.8
16 2.8~2.9
17 2.9~3.0
18 3.0~3.1
19 3.1~3.2
20 3.2~3.3
21 3.3~3.4
22 3.4~3.5
23 3.5~3.6
24-30
保留
31
卡上电状态位(忙)
OCR 结构如下图所示。如果第 32 位(busy bit)置位,表明卡上电过程已
结束。
5.2 CID(Card Identification)
CID 寄存器长度为 16 个字节的卡唯一标识号,该号在卡生产厂家编程后无
法修改。SD 和 MMC 卡的 CID 寄存器结构不一样。
名称 类型 宽度 CID 位 内容 CID 值
厂商 ID
Binary 8 [127:120]
SD 卡 协 会
管理和分配
0x03
OEM/
Application
ID(OID)
ASCII 16 [119:104]
识 别 卡 的
OEM 或 卡
内容,由制
造商分配
0x53,0x44
产 品 名
(PNM)
ASCII 40 [103:64]
5 个 ASCII
字符
SD128
产 品 版 本
(PRV)
BCD 8 [65:56]
2 个二进制
编码的十进
制数
产 品 版 本
(30)1
序 列 号
(PSN)
Binary 32 [55:24]
32 位 无 符
号整数
产品序列号
保留
4 [23:20]
生 成 日 期
BCD 12 [19:8]
yym ( 从 如 :Apr
剩余28页未读,继续阅读
资源评论

- L5450456122012-08-08入门的好东西,少走了好多弯路
- 赖转弯2012-05-02不错,是排版有点乱,要是再整理一下,改改错别字就很好了
- dhz_hope2011-11-29不错,内容很详细,就是排版有点乱。谢谢了!

wenny198561
- 粉丝: 7
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Kylin-Server-V10-SP3-General-Release-2212-X86-64.7z.006
- 龙芯LoongArch架构寄存器名称及所有指令名称
- NMOS充电泵分立电路SABER仿真
- yolov5l_10per_ssod_defect_exp1.yaml
- termux-app_v0.118.0+github-debug_armeabi-v7a.apk
- 01-硬件设计-VPX高速连接器介绍_水果里面有苹果的博客-CSDN博客 (2023_12_7 19_14_47).html
- 河南省2019网络搭建与应用赛项赛题环境
- 电磁阀恒流驱动SABER仿真
- 河南省2019网络搭建与应用赛项赛题技能要求
- 4.1 不定积分的概念与性质.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
