1、送给主机。SD 状态(SD_Status),当主机使用 SD_STATUS(ACMD13)命令时,512 位以一个数据块的方式发送给主机。SD_STATUS 还包括了和 BUS_WIDTH、安全相关位和扩展位等的扩展状态位。3.4 内存组织数据读写的基本单元是一个字节,可以按要求组织成不同的块。Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储在 CSD 寄存器。Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,大小信息存储在 CSD 寄存器。WP Group:写保护单位。大小包括几个 group,写保护由一位决定,对每个设备大小是固定的
2、,存储在 CSD 寄存器。3.5 读写操作Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块产生一个 16位的 CRC 校验码,接受端根据校验码进行检验。读操作的块长度受设备 sector 大小 (512bytes)的限制,但是可以最小为一个字节。不对齐的访问是不允许的,每个数据块必须位于单个物理 sector 内。写操作的大小必须为 sector 大小,起始地址必须与 sector 边界对齐。Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中的地址读取或写入连续的内存地址。操作通过一个停止传输命令结束。写操作必须地址对齐。
3、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 可以同时擦除。为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范
4、围内的所有 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)上电后为
5、输入,SET_BUS_WIDTH 命令执行后作为数据线。即使只有 DAT0 使用,所有数据线都和外部上拉电阻连接,否则 DAT1 & DAT2(如果未被使用)的振荡输入将引起非期望的高电流损耗。上电后,数据线输入 50K(+/-20K)欧姆的上拉(用来进行卡侦测和 SPI 模式选择)。用户可以在常规数据传输时,通过 SET_CLR_CARD_DETECT (ACMD42)命令分离上拉。1.2 SPI 模式引脚1.3 寄存器主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路,当上电后卡状态切换到 idle 状态。也可以通过 GO_IDLE (CMD0)指令来重置。2 SD 卡总线拓
6、扑SD总线有6根通信线和三根电源供应线:CMD命令线是双向信号线。主机和卡通过push pull 模式工作。DAT0-3数据线是双向信号线。CLK时钟是从主机到卡的信号。CLK通过push pull 模式操作。VDDVDD是所有卡的电源供应线。VSS1:2VSS是2根地线。名称宽度描述CID128卡标识号RCA16相对卡地址(Relative card address):本地系统中卡的地址,动态变化,在主机初始化的时候确定*SPI 模式中没有CSD卡描述数据:卡操作条件相关的信息数据SCR64SD 配置寄存器:SD 卡特定信息数据OCR32操作条件寄存器在初始化的时候,向每个卡分别发送命令,允
7、许应用检测卡并给物理槽(physical slot)分配逻辑地址。数据通常分别传输给每个卡。然后,为了方便处理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操作地址。SD总线允许动态配置数据线数目。上电后默认SD卡只用DAT0作为数据传输线。初始化后,主机可以改变总线宽度。这个特性使得在硬件开销和系统性能间取得平衡。3 SPI 总线拓扑4 电气接口4.1 上电上电后,包括热插入,卡进入 idle 状态。在该状态 SD 卡忽略所有总线操作直到接收到ACMD41 命令。ACMD41 命令是一个特殊的同步命令,用来协商操作电压范围,并轮询所有的卡。除了操作电压信息,ACMD41 的响
8、应还包括一个忙标志,表明卡还在 power-up 过程工作,还没有准备好识别操作,即告诉主机卡还没有就绪。主机等待(继续轮询)直到忙标志清除。单个卡的最大上电时间不能操作 1 秒。上电后,主机开始时钟并在 CMD 线上发送初始化序列,初始化序列由连续的逻辑“1”组成。序列长度为最大 1 毫秒,74 个时钟或 supply-ramp-up 时间。额外的 10 个时钟(64 个时钟后卡已准备就绪)用来实现同步。每个总线控制器必须能执行 ACMD41 和 CMD1。CMD1 要求 MMC 卡发送操作条件。在任何情况下,ACMD41 或 CMD1 必须通过各自的 CMD 线分别发送给每个卡。5 寄存器
9、5.1 OCR(Operating Conditions Register)32 位的操作条件寄存器存储了 VDD 电压范围。SD 卡操作电压范围为 23.6V。然而从内存中访问数据的电压是 2.73.6V。OCR 显示了卡数据访问电压范围,结构如下表所示。表 3-8 OCR 寄存器定义OCR 位VDD 电压范围0-3保留41.61.751.71.861.81.971.92.082.02.192.12.2102.22.3112.32.4122.42.5132.52.6142.62.7152.71.82.82.9172.93.0183.03.1193.13.2203.23.3213.33.4OC
10、R 结构如下图所示。如果第 32 位(busy bit)置位,表明卡上电过程已结束。5.2 CID(Card Identification)CID 寄存器长度为 16 个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。SD和 MMC 卡的 CID 寄存器结构不一样。类型宽度CID 位内容CID 值厂商 IDBinary127:120SD 卡协会管理和分配0x03OEM/ApplicationID(OID)ASCII119:104识别卡的 OEM 或卡内容,由制造商分配0x53,0x44产品名(PNM)40103:645 个 ASCII 字符SD128产品版本(PRV)BCD65:562 个
11、二进制编码的十进制数产品版本1(30)序列号(PSN)55:2432 位无符号整数产品序列号23:20生成日期(MDT)19:8yym(从 2000 年的偏移量)如 :Apr2001=0x014223.43.5233.53.624-3031卡上电状态位(忙)1、格式为“n.m”,如“6.2”表示为 0110 00105.3 CSD(Card Specific Data)CSD 寄存器包含访问卡数据所需的配置信息。SD 卡和 MMC 卡的 CSD 不同。6 数据交互格式和卡容量通常,SD 卡分为 2 个区: 用户区用户通过读写命令存储安全和非安全数据。 安全保护区(Security Protec
12、ted Area)版权保护应用程序用来保存安全相关数据,通过SD安全规范中定义的条件验证后,由主机使用安全的读写指令完成操作。安全保护区的大小大概是总大小的1%。CRC7 校 验 和(CRC)7:1CRC Calculation: G(x)=x7+3+1M(x)=(MID-MSB)*x119+.+(CIN-LSB)*x0CRC6.0=Remainder(M(x)*x7)/G(x)CRC7未用0:0三、SD 卡协议1 SD 总线协议SD总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停止位结束:命令命令是开始开始操作的标记。命令从主机发送一个卡(寻址命令)或所有连接的卡(广播命令)。
13、命令在CMD线上串行传送。响应响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受到的命令的标记。数据数据可以通过数据线在卡和主机间双向传送。卡寻址通过会话地址方式实现,地址在初始化的时候分配给卡。SD总线上的基本操作是command/response。数据传送采用块方式,数据块后接CRC校验位,操作包括单数据块和多数据块。多数据块更适合快速写操作,多数据块传输当在CMD线出现停止命令时结束。 数据传输可以在主机端设置采用单数据线或多数据线方式。块写操作在DAT0数据线写操作期间使用忙信号,无论用来传输的信号线数目是多少。命令格式如下所示:响应标记(token)根据内容不同具有四种格式,
14、标记长度。长度为48位或136位。数据块的CRC算法采用16位的CCITT多项式。在命令行中,MSB位首先传送,LSB位最后传送。当使用宽总线模式时,数据同时在4根数据线上传输。开始位、结束位和CRC在每根数据线上传送。CRC对每根数据线单独计算。CRC状态响应和Busy信号只通过DAT0由卡发送给主机。2 协议功能描述所有主机和 SD 卡间的通信由主机控制。主机发送下述两类命令:广播命令广播命令发送给所有 SD 卡,有些命令需要响应。寻址(点对点)命令寻址命令只发送给具有相应地址的卡,并需要从卡返回一个响应。对卡而言也有两类操作:卡识别模式在重置(reset)后当主机查找总线上的新卡时,处于
15、卡识别模式。重置后SD 卡将始终处于该模式,直到收到 SEND_RCA 命令(CMD3)。数据传输模式一旦卡的 REC 发布后,将进入数据传输模式。主机一旦识别了所有总线上的卡后,将进入数据传输模式。操作模式与卡状态关系:3 卡识别模式在卡识别模式,主机重置所有处于卡识别模式的 SD 卡,检验操作电压范围,识别卡并请求卡发送相对卡地址 RCA。操作对每个卡在各自的 CMD 线上单独进行,所有的数据传送只使用 CMD 线。3.1 重置GO_IDLE_STATE(CMD0)是软件重置命令,设置每个 SD 卡进入 Idle 状态。处于 Inactive状态的卡不受此命令影响。主机上电后,所有 SD
16、卡进入 Idle 状态,包括处于 Inactive 状态的卡。至少 74 个时钟周期后才能开始总线传输。上电或 CMD0 后,所有 SD 卡的命令线处于输入模式,等待下一个命令的起始位。卡通过一个默认的相对卡地址 RCA(RCA=0x0000)和默认驱动寄存器设置(最低速,最高驱动电流)初始化。3.2 操作电压范围验证SD 的物理规范标准要求所有 SD 卡能通过最小和最大供电电压间的任何电压和主机建立通信。然而,数据传输时的最小和最大电压值在操作条件寄存器 OCR 中定义,可能并不能覆盖所有的电压范围。SD 卡主机希望通过读取卡的 OCR 寄存器获取合适的电压值或弹出卡。SD 卡3.3 卡识别过程在识别时钟速率 fOD 下主机开始卡识别过程。SD 卡的 CMD 线输出驱动是 push-pull驱动。总线激活后,主机要求卡发送它们的有效操作条件(ACMD41 preceding with APP_CMDCMD55 with RCA=0x000
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1