OpenEdv-开源电子网

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

解决USB读卡器读8G卡提示要格式化问题

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2011-12-16
在线时间
0 小时
发表于 2011-12-16 17:17:15 | 显示全部楼层 |阅读模式

 上周末拿到开发板,开始测试例子,到实验27 USB读卡器时,发现用4G卡测试通过,用8G卡打开时提示需要格式化,并且格式化显示的大小是4G的。
发帖暂时无人给出解决方法只好自己分析代码,终于发现问题所在。

主要问题出在 u32 SD_GetCapacity(void) //获取SD卡的容量(字节) 这个函数,当用我的8G卡时
在这个函数中我分别在每一步打印输出了Capacity的值 

      Capacity=((u32)csd[8])<<8;    
      Capacity+=(u32)csd[9]+1;  
      Capacity = (Capacity)*1024;//得到扇区数  Capacity = ECE000
      Capacity*=512;//得到字节数    //由上步的Capacity 值计算出 Capacity = 4B107C000

很明显,最后Capacity的值是9位的十六进制数,而我们定义的Capacity 为u32,Capacity 的值溢出了!!!

解决办法:
去掉Capacity*=512;//
main()函数中
Mass_Block_Count[0]=Mass_Memory_Size[0]/Mass_Block_Size[0]; 改为 Mass_Block_Count[0]=Mass_Memory_Size[0];

手头没有16G卡,所以没有测试,按道理说16G卡应该也溢出,不知道原子哥的16G卡怎么测试通过的。

目前还有个问题就是8G卡在PC上检测到的速度明显比4G的要慢很多,大概用10多秒才能显示出来,不知道是我自己机器的事还是什么问题,大家可以测试下。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-16 17:37:20 | 显示全部楼层
靠,还真没这么取算过.
           8G的字节数:8589934592
32位最大表示的数值:4294967296
诶...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-12-17 13:50:20 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
确实啊,sd卡读取容量那个函数问题比较大啊~
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 16:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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