一概述
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命令后,卡即进入IdleState状态.此时卡将其RCA设为0,相关寄存器设为传输稳定的最优模式.
2工作电压验证
每个卡的最高和最低工作电压存储在OCR.只有当电压比配时,CID和CSD的数据才能正常传输给主机.
SD_SEND_OP_COND(ACMD41命令用来判断卡的工作电压是否符合,如果不符合的话,卡应该放弃总线操作,进入InactiveState状态.在发送SD_SEND_OP_COND(ACMD41命令前记得要首先发送APP_CMD(CMD55.
>>>>卡的状态变换图.
ACMD41命令响应中的BUSY位也用于卡表示其还没准备好,主机此时应重发ACMD41命令,直到卡准备好.
主机在这个阶段的ACMD41中不允许改变工作电压,如果确实想改变的话,应该先发送CMD0,然后再发送改变后的ACMD41.
GO_INACTIVE_STATE(CMD15命令用于使指定地址的卡进入InactiveState模式.3卡识别过程.ALL_SEND_CID(CMD2命令用于获取卡的CID信息,如果卡处于ReadyState,它就会在CMD线上传送它的CID信息,然后进入IdentificationState模式.紧接着发送CMD3(SEND_RELATIVE_ADDR命令,用于设置卡新的地址.卡收到新的地址后进入Stand-byState模式.
2.>>>>数据传输模式.
数据传输模式下卡的状态转变图
进入数据传输模式后,主机先不停的发送SEND_CSD(CMD9命令获取卡的CSD信息.SET_DSR(CMD4用于设置卡的DSR寄存器,包括数据总线宽度,总线上卡的数目,总线频率,当设置成功后,卡的工作频率也随之改变.此步操作是可选的.
CMD7命令用于使指定地址的卡进入传输模式,任何指定时刻只能有一个卡处于传输模式.
传输模式下所有的数据传输都是点对点的,并且所有有地址的命令都需要有响应..所有读命令都可以由CMD12命令停止,之后卡进入TransferState.读命令包括单块读(CMD17,