OpenEdv-开源电子网

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

原子哥,,我写的SD卡初始化成功了,可是读取SD卡内存时,只读出0MB,这个问题??

[复制链接]

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
发表于 2013-10-23 06:32:05 | 显示全部楼层 |阅读模式

我仔细的看了下,发现问题在这里,可是又没发现问题,

sd_size=SD_GetSectorCount();程序调用这个来读内存,

////获取SD卡的总扇区数(扇区数)  
//返回值:0: 取容量出错
//       其他:SD卡的容量(扇区数/512字节)
//每扇区的字节数必为512,因为如果不是512,则初始化不能通过.               
u32 SD_GetSectorCount(void)
{
    u8 csd[16];
    u32 Capacity; 
    u8 n;
   u16 csize;          
 //取CSD信息,如果期间出错,返回0
    if(SD_GetCSD(csd)!=0) return 0;    
    //如果为SDHC卡,按照下面方式计算
    if((csd[0]&0xC0)==0x40)  //V2.00的卡
    { 
  csize = csd[9] + ((u16)csd[8] << 8) + 1;
  Capacity = (u32)csize << 10;//得到扇区数      
    }else//V1.XX的卡
    { 
  n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2;
  csize = (csd[8] >> 6) + ((u16)csd[7] << 2) + ((u16)(csd[6] & 3) << 10) + 1;
  Capacity= (u32)csize << (n - 9);//得到扇区数  
    }
    return Capacity; 
}
可是结果是内存为0,就是说 ((取CSD信息,如果期间出错,返回0))这个问题,再看一下,

u8 SD_GetCSD(u8 *csd_data)
{
    u8 r1; 
    r1=SD_SendCommand(CMD9,0,0x01);//发CMD9命令,读CSD
    if(r1==0)
 {
     r1=SD_receivedata(csd_data, 16,RELEASE);//接收16个字节的数据
    }
 SetSD_CS//取消片选
 if(r1)return 1;
 else return 0;

是这个函数问题,可是我是用原子哥的程序,怎么会这样呢,求元子哥

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-23 10:15:34 | 显示全部楼层
我的程序也不是所有卡都支持的,你最好可以用我们原版程序测试下,看看支持不,如果不支持,那就换卡吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
 楼主| 发表于 2013-10-23 15:27:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我的就2G的卡
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 15:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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