SD总线协议
命令(Command)
分为2种,一种是带地址的,一种是广播。SDIO的命令都是由主机发起,在CMD线上传输。
应答(Response)
应答是对命令的响应。应答可以是特定地址的SD卡发回来的,也可以是挂在总线上的所有SD卡发回来的,应答也在CMD线上传输。
数据(Data)
数据可以在主机和SD卡之前传输,通过Data0或者Data0-Data3.数据传输都是以块(Block)为单位的,为512字节的倍数。数据块后边会紧跟一个crc校验。
SD总线传输的命令有3种
这3种分别为:命令无应答、命令有应答、命令有应答有数据。
写SD卡时,主机需要检查数据总线是否busy。
命令的传输格式
命令按照比特位划分含义而非字节,命令总是以bit0开始(CMD上拉到VCC,空闲时为高电平),bit1结束,第二bit为1。总长度为48bits,即6个字节。
应答的传输格式
应答按照比特位划分含义而非字节,应答总是以bit0开始,bit1结束,第二bit为0,。总长度有2种,一种是6个字节,一种是17个字节。
数据的传输格式
数据传输有2种方式,一种是标准字节(8bit)传输,一种是扩展字节(512b)传输。按比特流传输时,一次传输64个字节。
不论哪种数据传输类型,CRC都是各条线上自己校验自己的。4线传输时,应答只有DATA0有效,DATA1-DATA3忽略。