查看: 1422|回复: 0
打印 上一主题 下一主题

SD卡读写模块8

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-6 20:41:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 模式引脚



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表