编辑: ddzhikoi 2015-08-25
Emai:xiaohua0877@163.

com SD 卡协议学习点滴 第二版本

1 SD 卡协议学习点滴

(一) 首先 SD 卡有所谓操作模式(operation mode)的概念,每种操作模式又具体对应一种 或多种状态,主机通过发送命令可以使 SD 卡在不同的状态间转换,SD 卡则接受命令,并根 据自己现在所处状态做出不同的响应. 系统上电时刻或者搜寻 SD 卡时,SD 卡控制器应该处于 SD 卡识别模式;

SD 卡在刚接入 系统时刻也处于这种模式,并且处于此模式下的 Idle 状态. SD卡识别模式 :在这种模式下,控制器会检验SD卡的工作电压范围,识别SD卡类型,并要 求它们发送各自的相对地址(Relative Card Address);

这些操作在SD卡各自的CMD线上进 行.所有的操作均使用默认的 SD卡识别时钟频率(identification clock rate) SD卡复位 :发送GO_IDLE_STATE(CMD0)到SD卡后,除处于非活动状态(Inactive state) 之外的SD卡都会进入空闲状态(Idle state);

在Idle状态,SD卡的CMD线处于输入模式, 默认相对地址为 0x0000,默认驱动寄存器设定为最低速度,最大驱动电流能力. 工作条件检测 在控制器和 SD 卡进行任何通信之前,控制器不清楚 SD 卡支持的工作电压范围,故而 控制器首先使用默认的电压发送一条 reset 指令(CMD0),紧跟着的 CMD8 指令,用于取得 SD卡支持工作电压范围数据. SD卡通过检测CMD8的参数部分来检查控制器使用的工作电压, 控制器通过分析回传的 CMD8 参数部分来校验 SD 卡是否可以在所给电压下工作.如果 SD 卡 可以在指定电压下工作,则它回送 CMD8 的命令响应字,其中包含 check voltage, check pattern.如果 SD 卡不支持所给电压,则SD 卡不会给出任何响应信息,并继续处于 Idle 状态.在PLV2.0(physical layer version2.0)下,在首次执行 ACMD41 之前,必须执行 CMD8 指令, 用以初始化 SDHC 卡, SDHC 卡根据是否接收到 CMD8 指令来鉴别控制器是否支持 PLV2.0 协议.使用低电压的控制器也必须在 ACMD41 命令之前发送 CMD8,避免可以工作在两种电压 模式下的 SD 卡因为没有接收到 CMD8, 而默认工作在高电压环境下,被误认为是只支持高 电压工作模式. : SD_SEND_OP_COND(ACMD41)命令的目的是给予SD卡控制器一个识别SD卡是否可以在所给 Vdd 范围下工作的机制,如果 SD 卡无法在指定 Vdd 范围内工作,则它会进入非活动状态 (Inactive state).要注意的是,ACMD41 是应用相关型命令,因而,每次发出的 ACMD41 命令都必须紧跟在一条 APP_CMD (CMD55) 命令之后. 在空闲态 (Idle State) 下使用的 CMD55 命令使用默认的卡相对地址(RCA)0x0000. Emai:xiaohua0877@163.com SD 卡协议学习点滴 第二版本

2 每次控制器发送 CMD0 复位 SD 卡后,都要重新进行系列初始化操作(CMD8,ACMD41...). 如果 ACMD41 指令的 OCR 比特位为 0,控制器可以查询各个 SD 卡,并决定它们共同的工作电 压范围.在作为查询的 ACMD41 指令发送之后,SD 卡并不会开始初始化过程,直到控制器重 新发送一条 ACMD41 指令. SD 卡的初始化开始于接收到 ACMD41 指令之后,ACMD 指令的 HCS(Host Capacity Support)位如果设定为

1 的话,表明控制器支持 SDHC 卡,否则表示不支持. SD卡初始化和识别过程: 在CMD8 命令发送之后的 ACMD41 指令其功能有所扩展, 在参数里多了 HCS 部分, 在响应 里面多了 CCS(Card Capacity Status)部分.HCS 参数会被不响应 CMD8 命令的 SD 卡所抛 弃.控制器向不响应 CMD8 的卡发送 ACMD41 指令时,HCS 位应该设置为零 0.如果向 SDHC 卡发送 HCS 位为

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题