SD卡操作原理学习

SD操作
一、      概述
1、简介
SD卡是基于flash的存储卡。
SD卡和MMC卡的区别在于初始化过程不同。
SD卡的通信协议包括SDSPI两类。
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_STATUSACMD13)命令时,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]—VSS2根地线。
 
在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽(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个时钟后卡已准备就绪)用来实现同步。
每个总线控制器必须能执行ACMD41CMD1CMD1要求MMC卡发送操作条件。在任何情况下,ACMD41CMD1必须通过各自的CMD线分别发送给每个卡。
 
5      寄存器 5.1 OCR(Operating Conditions Register)
32位的操作条件寄存器存储了VDD电压范围。SD卡操作电压范围为2~3.6V。然而从内存中访问数据的电压是2.7~3.6VOCR显示了卡数据访问电压范围,结构如下表所示。
3-8 OCR寄存器定义
36ai
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个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。SDMMC卡的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]
5ASCII字符
SD128反光雨衣
产品版本(PRV
BCD
8
[65:56]
2个二进制编码的十进制数
产品版本(301
序列号(PSN)
Binary
32
[55:24]
32位无符号整数
产品序列号
保留
 
4
[23:20]
 
 
生成日期(MDT)
BCD
12
[19:8]
yym(从2000年的偏移量)
:Apr 2001=0x014
CRC7校验和(CRC)
Binary
7
[7:1]
CRC Calculation: G(x)=x7+3+1
M(x)=(MID-MSB)*x119+...+(CIN-LSB)*x0
0]=Remainder[(M(x)*x7)/G(x)]
 
CRC7
未用
 
1
[0:0]
 
 
1、格式为“n.m”,如“6.2”表示为0110 0010

本文发布于:2024-09-23 08:12:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/97358.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   操作   命令   地址   总线   数据线   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议