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 Statu s),存放在一个32 位状态寄存器,在卡响应主机命令时作为数据传送给主机。 SD 状态(SD_Statu s),当主机使用SD_STATUS(ACMD13)命令时,512 位以一个数据块的方式发送给主机。SD_STATUS 还包括了和BUS_WIDTH、安全相关位和扩展位等的扩展状态位。 3 .4 内存组织 数据读写的基本单元是一个字节,可以按要求组织成不同的块。 Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储在CSD 寄存器。 Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,大小信息存储在CSD 寄存器。 WP Grou p: 写保护单位。大小包括几个 grou p,写保护由一位决定,对每个设备大小是固定的,存储在CSD 寄存器。 3 .5 读写操作 Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块产生一个16位的CRC 校验码,接受端根据校验码进行检...