文档详情

SD卡协议学习点滴(一).PDF

发布:2017-06-15约7.81千字共7页下载文档
文本预览下载声明
Emai:xiaohua0877@163.com SD 卡协议学习点滴 第二版本 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。 1 Emai:xiaohua0877@163.com SD 卡协议学习点滴 第二版本 每次控制器发送CMD0 复位SD 卡后,都要重新进行系列初始化操作(CMD8,ACMD41...)。 如果ACMD41 指令的OCR 比特位为0,控制器可以查询各个SD 卡,并决定它们共同的工作电 压范围。在作为查询的ACMD41 指令发送之后,SD 卡并不会开始初始化过程,直到控制器重 新发送一条ACMD41 指令。 SD卡初始化和识别过程: SD 卡的初始化开始于接收到ACMD41 指令之后,ACMD 指令的HCS (Host Capacity Support)位如果设定为1 的话,表明控制器支持SDHC 卡,否则表示不支持。 在CMD8 命令发送之后的ACMD41 指令其功能有所扩展,在参数里多了HCS 部分,在响应 里面多了CCS (Card Capacity Status)部分。HCS 参数会被不响应CMD8 命令的SD 卡所抛 弃。控制器向不响应CMD8 的卡发送ACMD41 指令时,HCS 位应该设置为零0。如果向SDHC 卡发送HCS 位为0 的ACMD41 命令,SDHC 卡返回的响应,其busy 标识位永远为0,代表忙状 态。HCS 标识位用来表明SD 卡是否已经完成初始化,如果未完成,HCS 为零,否则为1,如 果HCS 为0,控制器会重
显示全部
相似文档