OpenEdv-开源电子网

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

初始化SD请教

[复制链接]

49

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-3-27
在线时间
9 小时
发表于 2013-4-25 20:06:42 | 显示全部楼层 |阅读模式

//初始化SD卡
u8 SD_Initialize(void)
{
    u8 r1;      // 存放SD卡的返回值
    u16 retry;  // 用来进行超时计数
    u8 buf[4]; 
 u16 i;

 SD_SPI_Init();  //初始化IO
  SD_SPI_SpeedLow(); //设置到低速模式
  for(i=0;i<10;i++)SD_SPI_ReadWriteByte(0XFF);//发送最少74个脉冲
 retry=20;
 do
 {
  r1=SD_SendCmd(CMD0,0,0x95);//进入IDLE状态
 }while((r1!=0X01) && retry--);
  SD_Type=0;//默认无卡
 if(r1==0X01)
 {
  if(SD_SendCmd(CMD8,0x1AA,0x87)==1)//SD V2.0
  {
   for(i=0;i<4;i++)buf=SD_SPI_ReadWriteByte(0XFF); //Get trailing return value of R7 resp
   if(buf[2]==0X01&&buf[3]==0XAA)//卡是否支持2.7~3.6V
   {
    retry=0XFFFE;
    do
    {
     SD_SendCmd(CMD55,0,0X01); //发送CMD55
     r1=SD_SendCmd(CMD41,0x40000000,0X01);//发送CMD41
    }while(r1&&retry--);
    if(retry&&SD_SendCmd(CMD58,0,0X01)==0)//鉴别SD2.0卡版本开始
    {
     for(i=0;i<4;i++)buf=SD_SPI_ReadWriteByte(0XFF);//得到OCR值
     if(buf[0]&0x40)SD_Type=SD_TYPE_V2HC;    //检查CCS
     else SD_Type=SD_TYPE_V2;  
    }
   }
  }else//SD V1.x/ MMC V3
  {
   SD_SendCmd(CMD55,0,0X01);  //发送CMD55
   r1=SD_SendCmd(CMD41,0,0X01); //发送CMD41
   if(r1<=1)
   {  
    SD_Type=SD_TYPE_V1;
    retry=0XFFFE;
    do //等待退出IDLE模式
    {
     SD_SendCmd(CMD55,0,0X01); //发送CMD55
     r1=SD_SendCmd(CMD41,0,0X01);//发送CMD41
    }while(r1&&retry--);
   }else//MMC卡不支持CMD55+CMD41识别
   {
    SD_Type=SD_TYPE_MMC;//MMC V3
    retry=0XFFFE;
    do //等待退出IDLE模式
    {              
     r1=SD_SendCmd(CMD1,0,0X01);//发送CMD1
    }while(r1&&retry--); 
   }
   if(retry==0||SD_SendCmd(CMD16,512,0X01)!=0)SD_Type=SD_TYPE_ERR;//错误的卡
  }
 }
 SD_DisSelect();//取消片选
 SD_SPI_SpeedHigh();//高速
 if(SD_Type)return 0;
 else if(r1)return r1;    
 return 0xaa;//其他错误
}

其中,判断SD卡类型,看不懂,还有 if(r1<=1)为什么 r1<=1


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-25 20:37:54 | 显示全部楼层
回复【楼主位】朱静:
---------------------------------
看<SD卡2.0协议>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

80

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2013-1-1
在线时间
6 小时
发表于 2013-4-26 02:44:21 | 显示全部楼层
你的第一个红色:
①   if(buf[0]&0x40)SD_Type=SD_TYPE_V2HC;    //检查CCS

答案:CMD58
         CMD58读取卡的状态,一个重要的标志位CCS,会影响到读写操作中地址数据的设定
         CCS为1时为高版本卡,数据地址为页单位,512字节为一页
         CCS为0时,地址为以字节为单位实际地址
         CCS置位与否也取决于ACMD41中对HCS:30bit的置位请求

第二个红色:
②  if(r1<=1)

答案:ACMD41和CMD1
         ACMD41是为卡供电命令,供电前卡的状态为空闲(idle),R1的返回值为0x01,供电后为动作状态(ready)即(0x00)
         一些早期的卡认为ACMD41是非法命令,只能用MMC的CMD1命令供电。


第三条红色:
③SD_SendCmd(CMD16,512,0X01)!=0 .....这条的作用是检查能否设置512byte,成功返回值为0


大概是这样子吧...不对的地方多多保函....
LZ参考这个应该可以: http://flashcs3.blog.163.com/blog/static/199720314201331973111436/
回复 支持 反对

使用道具 举报

49

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-3-27
在线时间
9 小时
 楼主| 发表于 2013-4-26 08:26:09 | 显示全部楼层
谢谢了
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-10 17:05:46 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
函数SD_SendCmd(CMD8,0x1AA,0x87)
的0x1aa与0x87表示的是什么,有什么的特殊含义吗,或者说在
发送相应的命令时,则同时也要发送0x1aa与0x87
又或者说CMD8对应0x1aa与0x87
还是由计算得来,
求解!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-10 17:37:59 | 显示全部楼层
0X87是CRC校验值。
当cmd=CMD8,参数=0X1AA的时候,计算出的CRC就是0X87。
这个CMD8必须有CRC值,而其他指令 ,则没有这个强制性要求,所有就有发送CMD8的时候,看到0X87这个值了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-11 16:13:27 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
还有一点疑问,SD_SendCmd(CMD8,0x1AA,0x87) 
中的命令参数是怎么得来的,表示的含义又是什么?
像SD_SendCmd(CMD0,0,0x95)中的0,
在发送命令的同时发送相应的cRc,但命令参数有什么意义了,
在看《列说stm32》和32中文手册时都没看到相应的解释,
而新手很难理解,特求
有木有介绍这样相应指令的手册或书,求推荐!


回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-11 16:28:51 | 显示全部楼层
回复【7楼】电光火石:
---------------------------------
看SD卡2.0协议。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-11 16:46:58 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
在哪里有,能否上传一下
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-11 20:27:56 | 显示全部楼层
回复【9楼】电光火石:
---------------------------------
战舰板/mini板的最新光盘资料里面都有。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-12 21:29:22 | 显示全部楼层
没看到啊,名字是叫《SD卡2.0协议》吗?
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-12 21:29:33 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
没看到啊,名字是叫《SD卡2.0协议》吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-12 22:35:49 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-13 20:04:06 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-13 20:40:29 | 显示全部楼层
回复【14楼】电光火石:
---------------------------------
超链接。把你的鼠标指针放那三个字上,是不是变成个小手了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-3-26
在线时间
0 小时
发表于 2013-5-15 09:40:51 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 04:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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