一概述 1. SD总线模式下 CLK:时钟信号 CMD:双向命令和响应信号 DAT0-3:双向数据信号 VDD,VSS:电源和地信号 SD模式下允许有一个主机, 多个从机(即多个卡), 主机可以给从机分别地址. 主机发 命令有些命令是发送给指定的从机,有些命令可以以广播形式发送. SD模式下可以选择总线宽度, 即选用几根 DAT信号线, 可以在主机初始化后设置. 2. SD总线协议 SD模式下的命令和数据流都有一个开始位和结束位. >命令: 是在 CMD上传输的用于启动一个操作的比特流. 由主机发往从机, 可以是点对点也可以是广播的. >响应: 是在 CMD上传输的用于之前命令回答的比特流. 由从机发往主机. >数据: 是在 DAT上传输的比特流, 双向传输. 无响应模式 无数据模式 多块读操作模式 多块写操作模式 命令格式 响应格式 数据格式 SD卡上电后会自动初始化,通过给卡发送 CMD0也可以复位卡. 二.SD卡命令描述. 1.广播命令: 给所有卡都发送, 某些命令需要响应. 2.点对点命令 给指定地址的卡发送, 需要响应. SD卡系统有两种工作模式: 1. 卡识别模式. 主机上电复位后即处于此模式,它会在总线上等待卡. 卡复位后也处于此模式, 直到SEND_RCA(CMD3)命令到来. 2. 数据传输模式. 卡收到 SEND_RCA(CMD3)命令后即进入此模式. 主机识别到卡后也进入此模式. 卡状态和工作模式对照表 1. 卡识别模式. 此模式下主机复位总线所有的卡, 验证工作电压, 询问卡的地址. 这个模式下所有数据的传输都是只通过 CMD线来完成. 1) 卡的复位. 当卡上电或收到 GO_IDLE_STATE (CMD0)命令后, 卡即进入 Idle State状态. 此时卡将其 RCA设为 0, 相关寄存器设为传输稳定的最优模式. 2) 工作电压验证 每个卡的最高和最低工作电压存储在 OCR. 只有当电压比配时, CID和 CSD的数据才能正常传输给主机. SD_SEND_OP_COND (ACMD41)命令用来判断卡的工作电压是否符合, 如果不符合的话, 卡应该放弃总线操作, 进入 Inactive State状态. 在发送SD_SEND_OP_COND (ACMD41)命令前记得要首先发送APP_CMD (CMD55). 卡的状态变换图. ACMD41命令响应中的BUSY位也用于卡表示其还没准备好, 主机此时应重发ACMD41命令,直到卡准备好. 主机在这个阶段的ACMD41中不允许改变工作电压, 如果确实想改变的话, 应该先发送CMD0, 然后再发送改变后的ACMD41. GO_INACTIVE_STATE (CMD15)命令用于使指定地址的卡进入Inactive State模式. 3) 卡识...