OpenEdv-开源电子网

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

SD上电后,主机要向SD卡发送74个时钟,并且CMD为高,为什么例程源码是发送74个cmd0的命令?

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-8-12
在线时间
5 小时
发表于 2019-10-15 14:22:57 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 晁晁 于 2019-10-15 14:24 编辑

2F7896F5-CCEF-4224-8ADB-0F9BC6E9F0BD.png
The host shall supply power to the card so that the voltage is reached to Vdd_min within 250ms and start to supply at least 74 SD clocks to the SD card with keeping CMD line to high.  




看SD卡 2.0 协议,上电后,主机要向 SD 发送74个时钟,并且 CMD 要为高。

为什么例程源码里,这部分是发送74 次的CMD0命令,这块不明白。

  1. for(i=0;i<74;i++)
  2.         {
  3.                 SDIO_CmdInitStructure.SDIO_Argument = 0x0;//发送CMD0进入IDLE STAGE模式命令.
  4.     SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_GO_IDLE_STATE; //cmd0
  5.     SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_No;  //无响应
  6.     SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  7.     SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;  //则CPSM在开始发送命令之前等待数据传输结束。
  8.     SDIO_SendCommand(&SDIO_CmdInitStructure);                          //写命令进命令寄存器
  9.                
  10.                 errorstatus=CmdError();
  11.                 if(errorstatus==SD_OK)break;
  12.         }
复制代码



求大神解答。
        


最佳答案

查看完整内容[请看2#楼]

发多一点并没有毛病,所以如果你一定要纠结,可以改法发送9个字节即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-10-15 14:22:58 | 显示全部楼层
发多一点并没有毛病,所以如果你一定要纠结,可以改法发送9个字节即可。
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-8-12
在线时间
5 小时
 楼主| 发表于 2019-10-16 09:25:19 | 显示全部楼层
正点原子 发表于 2019-10-15 14:22
发多一点并没有毛病,所以如果你一定要纠结,可以改法发送9个字节即可。

是不是可以这样理解,在发送cmd0的时候,是在等待Vdd 电压稳定到 Bus master supply voltage.即也是在延时74个时钟。如果cmd0命令发送成功了,那就表示电压稳定到可以发送命令的时候了?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 20:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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