OpenEdv-开源电子网

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

急急:SD卡空闲容量怎么变小了?

[复制链接]

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
发表于 2015-9-22 22:08:39 | 显示全部楼层 |阅读模式
5金钱
     我的SD卡是SLC 8G的,装在机器里面,机器开着时,一直接收到数据,往SD卡写数据,开始一切正常,空闲容量显示也和电脑显示一下,在存往SD卡中存数据时,人为断电关键后,stm32读出
SD卡空闲容量150M,而插入电脑却显示5.2G,不知为何?

res = f_getfree("0", &clust, &pfs);
    
    if ( res==FR_OK ) 
    {
      
       return (clust*pfs->csize/2/1024);
    }
    else 
      return 0;

最佳答案

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

回复【13楼】njgwx: --------------- fatfs有天生缺陷,write时断电严重可能让文件系统无法识别,需要重新格式化。微软有改进版本,支持断电保护,不过不是免费的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-10-12
在线时间
0 小时
发表于 2015-9-22 22:08:40 | 显示全部楼层
回复【13楼】njgwx:
---------------
fatfs有天生缺陷,write时断电严重可能让文件系统无法识别,需要重新格式化。微软有改进版本,支持断电保护,不过不是免费的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 22:45:40 | 显示全部楼层
重新格式化下试试吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-9-22 23:06:03 | 显示全部楼层
因为条件限制,只能这样在写数据入SD卡,随时关机断电;这样对SD卡有伤害?为什么电脑显示空闲容量正常,用Stm32检测到SD卡空闲容量只有150M,但SD卡还能存储数据。不解!!
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-9-25 06:31:08 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
格式化了,拷贝了n个文件到SD卡中,用f_getfree测的空闲容量居然比电脑显示空闲容量大1G左右,这也太奇怪了,哪位高手遇到这种情况??

res = f_getfree("0", &clust, &pfs);
    
    if ( res==FR_OK ) 
    {
      
       return (clust*pfs->csize/2/1024);
    }
    else 
      return 0;
clust=221081  pfs->csize=64   clust*pfs->csize/2/1024=6908MB

电脑显示:
空闲空间 5.63G
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-25 22:14:00 | 显示全部楼层
回复【4楼】njgwx:
---------------------------------
不拷贝的时候呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-10-4 11:30:54 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
总容量是对的,空闲容量不对,格式化SD卡后不拷贝文件,显示和电脑的相同,一拷贝数据,就和电脑上显示容量就不同了。这卡开始时候是好的,工作了一段时间(不断写数据),就发觉检测空闲容量总是检测不到,电脑上显示还有3-5个G,我程序检测空闲容量已没有了,但还能写数据,不知为何。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-5 16:50:08 | 显示全部楼层
回复【6楼】njgwx:
---------------------------------
这我也不知道了,换个卡试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-10-9 15:46:11 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
还有个问题请教一下,我用f_write(&file,buf,2048,&bw)往Udisk写2048个字节文本总是不对,写512个字节文本总是对,不知为何?buf[2048]已经是四字节对齐了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-10 14:14:50 | 显示全部楼层
回复【8楼】njgwx:
---------------------------------
说明你的U盘多扇区写入有问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-10-12 13:37:13 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
我这是从ST公司stm32f407的host的U盘例程改编的,现在写1024个字节也是对的,写2048字节不对。等下来试试原子U盘host看看行行。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-12 22:50:43 | 显示全部楼层
回复【10楼】njgwx:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-10-12
在线时间
0 小时
发表于 2015-10-13 10:31:09 | 显示全部楼层
你如果是Fatfs,出现这种现象不稀奇,严重的会导致整个文件系统崩溃。试试每一次Write后flush
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-10-15 16:00:30 | 显示全部楼层
回复【12楼】trident:
---------------------------------
有那么严重吗,你讲的是write后,fsync更新一下?换成fatfs0.10还这样,难道用f_write函数写U盘中文件只能最多写1024个字节?
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-10-16 15:02:46 | 显示全部楼层
回复【14楼】trident:
---------------------------------
      你说得太对了,我之前用stm32+fatfs往SD卡存数据,因为数据一直都在发,所以一直在往SD卡写数据,关机是随机的直接断电,经常出现write时断电现象,工作个三五天有时会出现文件系统识别不到,不得不格式化,百思不得其解,搞了3个月也没头绪,没办法后来只能用nandflash替代,因为nandflash文件系统也不太稳定,存完数据再拷贝到U盘。现在看到原来是这个原因,真得很无语啊!
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-10-12
在线时间
0 小时
发表于 2015-10-19 10:23:25 | 显示全部楼层
回复【15楼】njgwx:
---------------------------------
fatfs文件系统最后要写FAT表的,中间一断电你的文件信息就没有了。用nandflash也不会帮上对少忙. 建议用其他文件系统, 如Yaffs
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-11-9 11:12:11 | 显示全部楼层
回复【16楼】trident:
---------------------------------
      f_snyc这个函数到是可以更新文件,解决断电数据丢失毛病,但有发现这个函数如果每次都调用的话,大概一秒钟 60次频率,用一两天SD卡准会挂掉,文件系统找不到了。真不知如何是好,这个fatfs文件怎么有这致命伤?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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