SD命令与响应(一)

1,SDIO命令分为ACMD和CMD,ACMD发送前,必须先发送CMD55.SDIO的命令和响应都是通过SDIO_CMD传输的。

任何命令都是固定的48位。命令格式如下:


    所有命令都是由主机(我用的CPU是STM32F407ZET6)发出,其中起始位,传输位,结束位,CRC7都是由SDIO硬件控制,我们设置的是命令索引和参数部分。命令索引在SDIO_CMD寄存器设置,参数在SDIO_ARG里设置。


2,一般情况下,SD卡接收到命令之后,都会回复一个应答,这个应答称之为响应,响应也是在CMD线上串行传输的。响应又分为长响应和短响应。响应格式如下:



  



扫描二维码关注公众号,回复: 4096024 查看本文章

 3,其中STM32F407CMD寄存器如下



其代码如下:

//SDIO·发送命令函数

//cmdindex:命令索引
//waitrsp:期待的响应

//arg:参数

void SDIO_Send_Cmd(u8 cmdindex,u8 waitrsp,u32 arg)
{
         u32 tmpreg;
SDIO->ARG=arg;
tmpreg=SDIO->CMD; 
tmpreg&=0XFFFFF800; //清除cmdindex和waitrsp
tmpreg|=cmdindex&0X3F; //设置新的cmdindex  
tmpreg|=waitrsp<<6; //设置新的waitrsp
tmpreg|=0<<8; //无等待
        tmpreg|=1<<10; //使能命令通道状态机
SDIO->CMD=tmpreg;
}

4,初始化流程图如下



猜你喜欢

转载自blog.csdn.net/yannanfei0105/article/details/79809736
sd