OpenEdv-开源电子网

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

走过的路过的帮忙看看啊,SD卡问题

[复制链接]

13

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2013-6-21
在线时间
0 小时
发表于 2013-11-10 19:32:04 | 显示全部楼层 |阅读模式
在论坛找了一下,有很多人问,但是一直没有结果啊

        csize = csd[9] + ((u16)csd[8] << 8) + 1;
Capacity = (u32)csize << 10;这里为什么要左移10位的左移10位不是乘以1024吗?和512怎么联系上啊,2.0协议也看了,不知道怎么弄的,麻烦大神给指点一下啊,谢谢啦
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-10-31
在线时间
5 小时
发表于 2013-11-10 22:18:32 | 显示全部楼层
好多问题不会呀。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-10 22:37:24 | 显示全部楼层
看函数的备注:
//获取SD卡的总扇区数(扇区数)   
//返回值:0: 取容量出错 
//       其他:SD卡的容量(扇区数/512字节)
//每扇区的字节数必为512,因为如果不是512,则初始化不能通过.   
u32 SD_GetSectorCount(void)

返回值,你一定要个单位,在这里单位就是:512字节。比如,返回1,表示SD卡的容量是512字节。
返回1M,说明SD卡容量是512M。

为什么这么写?
因为SD卡最大容量现在已经远远超出4GB了,而4GB=2^32次方。
说白了,你用u32来表示,以字节为单位,那么最大就能表示4GB的卡的大小,再大就溢出了。
而,如果我返回是512字节,那么最大就是多少?512*4G。

understand?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2013-6-21
在线时间
0 小时
 楼主| 发表于 2013-11-11 11:54:28 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,Capacity = (u32)csize << 10;得到的是什么啊
回复 支持 反对

使用道具 举报

13

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2013-6-21
在线时间
0 小时
 楼主| 发表于 2013-11-11 11:55:00 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
左移10不是乘1024吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 04:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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