stm32的SDIO接口命令响应不对

2019-07-21 05:29发布

本帖最后由 xiaokun 于 2019-1-23 16:03 编辑

最近在做SDIO接口相关的东西,将原本以PC作为sdio主机的代码移植到STM32上。以STM32F103作为SDIO主机,来访问一个SDIO接口设备(应该是这样理解,非SD卡)。
按照PC端代码对从设备的访问步骤,依次发送带不同参数的CMD52、CMD5、CMD5、CMD3、CMD7等命令完成SDIO初始化。
在PC端发送时,每个命令会收到对应的响应数据(RESPCMD、RESP1两个寄存器,这部分数据并未完全遵循SDIO手册规范,但实测功能可用)。
STM32发送时,第一个CMD5命令接收到与PC端相同的响应数据,(这个数据不符合手册规范,片内SDIO相应寄存器STA标志位如CCRCFAIL会置位);
接着发送后面的CMD5等命令时,接收到的响应寄存器数据没有更新,用示波器观察命令线波形,发现波形对应的数据实际是与PC端对应命令响应数据一致的。
是因为上一个命令响应数据不符合规范,STM32的SDIO识别为错误,所以不改变对应的响应寄存器RESP1的数据吗



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
小陀螺爱炒蛋
2019-07-21 13:06
小陀螺爱炒蛋 发表于 2019-1-30 16:16
响应不符合手册规范是指哪个响应,指的是CMD5的response吗?有抓到response数据是多少吗?发来看下呢

CMD52后的第二个CMD5response就不符合手册规范了。
不过现在我让初始化执行了两次, 在第二次时, 各命令的response响应在RESP1寄存器里能够读出和PC端一样的数据了。

现在问题是, 我初始化之后,要给从机发一个数据块(512字节)数据,调用CMD53命令,之后用DMA给SDIO->FIFO发数据, 数据似乎没发过去。 示波器的D0信号线一直为高电平、

一周热门 更多>