使用Micro_SD卡时,需要低功耗,写完之后断电。但是实测,使用SanDisk卡写完数据1ms延时后给SD卡断电,正常。如果使用Kingston卡(16G,32G)都测试过,写完后,延时即使10秒,再断电,也不能写入数据。如果保持不断电,则写入数据正常。这是什么原因呀?
查看更多
文件有close没有?
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
close了。过程是这样的,上电-初始化-写文件-关文件-断电。Kingston卡虽然没有村上数据,但是初始化还有写文件的过程是对的,返回值正常,就是卡里没数据,所以我就怀疑是不是不同卡需要一定时间延迟才能完成内部操作才可以断电呀,不断电就没事。SanDisk卡也没事。
可能是卡内部有写缓存,你加些延时再断电看看,同时测下要延时多久才行。
另外,可以看看卡的信息里面,有没报告这个时间。
也看看有没什么掉电命令,让卡内部把这个数据刷新进去。
@aozima 谢谢关注,我测试了延时10s再断电还是不行,我再试试再长时间的。另外卡里信息怎么看呀,Kingston卡的datasheet在哪能有呀,我在官网上就看到一个简单的参数,没有这些上电断电之类的延时时间等等信息。
你可以测试下,用读卡器,PC拷贝数据到SD中,拷贝好,立马拔出来,然后再读出来看看,刚刚拷贝的数据有没有丢失?
@海阔天kongcyc 你好,这样测试了一下没有问题,向sd卡内现有文件追加,保存后,拔掉卡,然后插卡读,正常。复制了一个文件到卡,然后拔掉卡,再插卡读也没有问题。
@海阔天kongcyc 现在就是金士顿的卡。放到单片机SPI读写就有问题,保持上电都正常,就是断电的话就没写上了。闪迪的就好的。都是京东买的卡,应该都是好的呢
看你的描述,感觉SD卡本身应该没有问题,在PC上写完数据,立马断电,再次读是可以读出来的,但是还到单片机上就不可以了,可能单片机驱动起来,是有些问题, 你在断电前,强制sync一把试试,调用fsync 这个接口
@海阔天kongcyc 好的,我再试试把