打印

SD卡问题,各种求进~~

[复制链接]
1664|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
q909832336|  楼主 | 2012-11-3 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 q909832336 于 2012-11-3 15:29 编辑

1.求一份好的技术手册~~
2.求一个可以交流的群~
3.我一张1G的卡~发送CMD8~~无论格式化是FAT16还是FAT32~得到的版本号都是0x01 ~4G的卡,版本号也为0x01~~发送CMD58,均返回0xff~
以下是相关代码:
//================================================================================================
//实现功能:读取SD卡的响应
//返回参数:response 响应标志
//================================================================================================
unsigned char SdResponse()
{
    unsigned char response,time=0;;
   
    do
    {  
      response=SdRead();
      time++;
    }
    while((response==0xff)&&(time<100));//100次以内尝试读取响应
    return response;      //返回读取的数据
}
//================================================================================================
//实现功能:发命令到SD卡
//================================================================================================
void SdCommand(unsigned char command, unsigned long argument, unsigned char CRC)
{
        unsigned char i,a[6];
         
        SD_CS=1;
        SdWrite(0xff); //提高兼容性,如果没有这里,有些SD卡可能不支持   
        SD_CS=0;

        a[0]=command|0x40;
        a[1]=((argument&0xff000000)>>24);
        a[2]=((argument&0x00ff0000)>>16);
        a[3]=((argument&0x0000ff00)>>8);
        a[4]=  argument&0x000000ff;
        a[5]=  CRC;
        
        for(i=0;i<6;i++)
        {   
  SdWrite(a);
        }      
}
/******************************************************************
- 功能描述:检测SD卡版本,SD卡分为SD与SDHC,通过CMD8进行判断,SD与
             SDHC的初始化以及寻址方法都不尽相同
- 隶属模块:SD/SDHC模块
- 函数属性:内部
- 参数说明:无
- 返回说明:SD卡的版本号,0x05为SD1.0 0x01为SD2.0
******************************************************************/
unsigned char SD_Check_Version()
{
  do
  {
    SD_CS=0;
    delay(500);
    SdCommand(8,0x1aa,0x87);
   
    sd_ver=SdResponse();
    SD_CS=1; //关闭片选
    SdWrite(0xff);  //按照SD卡的操作时序在这里补8个时钟
   
  }
  while(sd_ver == 0x04);
  return sd_ver; //返回版本值
}
/******************************************************************
- 功能描述:获取SD卡的寻址方式
- 隶属模块:SD/SDHC模块
- 函数属性:内部
- 参数说明:无
- 返回说明:调用成功,返回0x00,否则返回INIT_CMD1_ERROR (sd.h中有定义)
******************************************************************/
unsigned char SD_Get_Addr_Mode() //获取SD卡的寻址方式,是字节寻址,还是块寻址
{
SD_CS=0;
SdCommand(0x7a,0,0x00); //写入CMD58
addr_mode=SdRead();SdRead();SdRead();SdRead(); //后三次读取空读
SD_CS=1;
SdWrite(0xff); //按照SD卡的操作时序在这里补8个时钟
return addr_mode&0x40; //返回版本值
}

相关帖子

沙发
xxlin1984| | 2012-11-7 10:10 | 只看该作者
SD卡物理层完整协议(EN).pdf (4.7 MB)
这份比较难找的给你了,其他的自己上网搜吧。
SD卡的命令通讯只是SD基本读写操作,与文件系统不搭界。两个层次的东东,互相独立。

使用特权

评论回复
板凳
wangkangming| | 2012-11-7 16:52 | 只看该作者
感谢2楼,确实挺难的啊!

使用特权

评论回复
地板
hyminzhu| | 2012-12-3 16:55 | 只看该作者
二楼好人

使用特权

评论回复
5
jlu203| | 2014-2-13 09:47 | 只看该作者
二楼的资料为什么不能下载?

使用特权

评论回复
6
tyw| | 2014-2-13 13:39 | 只看该作者
7
gaoshengxian| | 2014-2-13 18:42 | 只看该作者
tyw 发表于 2014-2-13 13:39
〓◆ SD卡相关专辑 26册 22.9M ◆〓

哥,你实在是太给力了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝