读SD卡严重问题

[复制链接]
2249|6
 楼主| dsoyy 发表于 2008-11-27 09:44 | 显示全部楼层 |阅读模式
我采用SPI方式读取SD卡中的TXT文档,采用按名提取的形式,读取结果虽然正确,但是速度150K用掉2分钟时间,实在无法忍受,我提高了SPI分频竟然丝毫无改善,手上午示波器无法观察波形频率。<br /><br />目前我采用按字节方式是读取,还有卡块方式,我发现卡块方式最底层也是SPI字节方式,不知道采用这种方式速度是否有显著提升,此外我仅仅读取SD文件,按名提取,如果用卡块,我如何能根据文件名获取我的文件的卡块位置?<br /><br />
kang1209 发表于 2008-11-27 10:01 | 显示全部楼层

建议开个大点的buffer, 例如512,1024,2048,读取会快很多!

512的整倍数
 楼主| dsoyy 发表于 2008-11-27 10:22 | 显示全部楼层

感谢楼上

我这样做了,数组大小512000,足够大了,还是依旧。<br />调用ZLG软件包的<br />OSFileSeek(FHandle,&nbsp;count,&nbsp;SEEK_CUR);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;移动文件读写位置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sd_read_num&nbsp;=OSFileRead(gImage_pic_sd/*rcv_buf*/,&nbsp;READNUM,&nbsp;FHandle);//读取文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_end&nbsp;=&nbsp;OSFileEof(FHandle);&nbsp;&nbsp;//判断文件是否到读写到文件尾<br />这样来实现读取整个文件。
deeploves 发表于 2008-11-27 15:23 | 显示全部楼层

不去研究底层驱动来提升速度,靠改变应用怎么可能?

  
l0p0c 发表于 2008-11-27 15:30 | 显示全部楼层

我以前也做过SD,不过是读取字节,也是按块。

若真要提速还是多多研究啊……<br />
古道热肠 发表于 2008-11-27 16:03 | 显示全部楼层

要想速度快,底层要优化

有些样板程序结构化良好,但读写速度大打折扣,如果仅仅为追求速度,参考用AVR作MP3时读SD卡的源码,网上很好找,速度还可以,
 楼主| dsoyy 发表于 2008-11-28 13:11 | 显示全部楼层

谢谢

昨天下午改成卡块读取,提高到63.4K用了6秒。<br />循环操作单块和操作多块效率竟然一样。。。<br /><br />ZLG技术支持说可以达到890K/S,这样可以满足我的需求了。但我的还差很远,此外操作卡快读取PC存入SD的数据要判断我的文件在SD中占用哪些卡块。。。<br />这个也比较麻烦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

566

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部