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 11:21
小陀螺爱炒蛋 发表于 2019-1-30 14:11
描述有点混乱。。你是用stm32当做host,PC机作为slave吗?

是这样, 我这里有一个以PC作为SDIO主机、访问一个SDIO从设备的代码工程,
现在想在STM32上实现上述代码所实现的功能。
但是呢, 实际PC给SDIO从设备发命令时, 得到的响应格式并不是完全遵循SDIO手册里的数据规范,但能实现访问从机功能。
我用STM32参考PC代码工程依次发送SDIO命令时,STM32接收到命令后,会直接通过内部寄存器校验发现命令的响应不符合手册规范,在发送后续命令时,响应寄存器里的值不会被更新。

大概是这么个情况,不知道您明白了吗。
我现在已经解决这部分问题, 不过在发送数据给从机时,数据未能发出。

一周热门 更多>