OpenEdv-开源电子网

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

SD卡容量获取的问题

[复制链接]

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
发表于 2015-8-12 11:12:52 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]//获取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; }[/mw_shl_code]
[mw_shl_code=c,true] sd_size=SD_GetSectorCount();//得到扇区数 LCD_ShowNum(164,170,sd_size>>11,5,16);//显示SD卡容量 [/mw_shl_code]
问题见下楼》》》

最佳答案

查看完整内容[请看2#楼]

1,自己测试。 2,这个看SD卡白皮书。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-12 11:12:53 | 显示全部楼层
1,自己测试。
2,这个看SD卡白皮书。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-8-12 11:22:11 | 显示全部楼层
1:对于这句Capacity = (u32)csize << 10;//得到扇区数  其左移10位再结合主函数里的LCD_ShowNum(164,170,sd_size>>11,5,16);右移11位,得到的是SD卡以MB为单位的容量;(其实这里可以Capacity = (u32)csize << 9;再LCD_ShowNum(164,170,sd_size>>10,5,16);也是一样的对不?)

2:但是这句Capacity= (u32)csize << (n - 9);//得到扇区数   如果单单是左移n位得到的是SD卡以KB为单位的容量,对不?但是减9意思是除以512获得扇区数的意思,可是和主函数LCD_ShowNum(164,170,sd_size>>11,5,16);再右移11位该如何理解呢?为什么就最后也变成以MB为单位的容量了呢???
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-8-14 10:14:36 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
对于第二个问题我看了就是想不通啊!!!给我解释解释呗。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-16 22:51:57 | 显示全部楼层
回复【4楼】wodezpyzz:
---------------------------------
我没研究。也不想自己计算,呵呵。直接借别人代码来的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2016-6-5
在线时间
40 小时
发表于 2016-9-12 14:19:15 | 显示全部楼层
wodezpyzz 发表于 2015-8-14 10:14
回复【3楼】正点原子:
---------------------------------
对于第二个问题我看了就是想不通啊!!!给我解 ...

同求,兄弟
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 13:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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