OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3546|回复: 2

SDIO CMD55命令异常

[复制链接]

13

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-8-10
在线时间
23 小时
发表于 2018-6-5 14:45:36 | 显示全部楼层 |阅读模式
大家好,调试SD卡的时候,用的是SDIO接口。大多数情况下都正常,偶尔会异常。异常的时候是CMD55命令在等待响应的时候,异常进入while死循环。如下所示,而此时STA的值是0x800,表示在发送命令。此时用示波器抓数据,无法在CMD线上抓到任何数据,CLK线上也无法抓到任何数据。正常情况下是可以抓到数据的。
while(1)
  {
    status=SDIO->STA;
    if(status&((1<<0)|(1<<2)|(1<<6)))break;//CRC错误/命令响应超时/已经收到响应(CRC校验成功)
  }


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-8-10
在线时间
23 小时
 楼主| 发表于 2018-6-5 17:24:47 | 显示全部楼层
已经解决,原因是上电失败。这个函数偶尔无效SDIO_SetPowerState(SDIO_PowerState_ON);直接操作寄存器解决。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2020-7-20
在线时间
8 小时
发表于 2021-8-5 10:44:35 | 显示全部楼层
ayuexuea 发表于 2018-6-5 17:24
已经解决,原因是上电失败。这个函数偶尔无效SDIO_SetPowerState(SDIO_PowerState_ON);直接操作寄存器解决 ...

前辈,我也遇到了这个问题,请问怎么改代码?我是下面这样改的,但是我发现还是不成功。
        SDIO->POWER =SDIO_PowerState_ON;
        delay_ms(10);
        SDIO->POWER =SDIO_PowerState_ON;
  SDIO->CLKCR|=1<<8;                        //SDIOCK使能  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 00:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表