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

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

SD命令与响应(一)

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


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

SD命令与响应(一)

SD命令与响应(一)

  



 3,其中STM32F407CMD寄存器如下

SD命令与响应(一)

SD命令与响应(一)

其代码如下:

//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,初始化流程图如下

SD命令与响应(一)


相关文章:

  • 2021-07-22
  • 2021-11-30
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-25
猜你喜欢
  • 2021-05-22
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案