打印

SD卡发送命令函数菜鸟求解释

[复制链接]
1470|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyu988|  楼主 | 2012-9-14 23:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SD发送一个命令函数如下:
u8 SD_SendCommand(u8 cmd, u32 arg,u8 crc)
{
  unsigned char r1;
  unsigned int Retry = 0;
  SD_CS_DISABLE();
  SPI_ReadWriteByte(0xff);
  SD_CS_ENABLE();//片选端置低,选中SD卡
  
  /* 发送命令序列 */
  SPI_ReadWriteByte(cmd | 0x40);                     
  SPI_ReadWriteByte((u8)(arg >> 24));//参数[31..24]
  SPI_ReadWriteByte((u8)(arg >> 16));//参数[23..16]
  SPI_ReadWriteByte((u8)(arg >> 8));//参数[15..8]
  SPI_ReadWriteByte((u8)arg);    //参数[7..0]
  SPI_ReadWriteByte(crc);
   
  //等待响应,或超时退出
  while((r1 = SPI_ReadWriteByte(0xFF))==0xFF)
  {
    Retry++;
    if(Retry > 800)break;   
   }   
  //关闭片选
  SD_CS_DISABLE();
  //在总线上额外增加8个时钟,让SD卡完成剩下的工作
  SPI_ReadWriteByte(0xFF);
  //返回状态值
  return r1;
}
其中
  while((r1 = SPI_ReadWriteByte(0xFF))==0xFF)
  {
    Retry++;
    if(Retry > 800)break;   
   }
意思是不是(r1 = SPI_ReadWriteByte(0xFF))==0xFF成立 retry++,直到retry>800,break,此时r1的值为0xff。
  return r1;此时r1不是0xff吗?

(r1 = SPI_ReadWriteByte(0xFF))==0xFF不成立不就直接执行 SD_CS_DISABLE();了吗?此时r1的值是什么呢?
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

1108

帖子

14

粉丝