打印

SD卡读数据为什么要等待?

[复制链接]
2969|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljm810010|  楼主 | 2011-5-6 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
t.jm| | 2011-5-6 10:40 | 只看该作者
这个问题是有点奇怪,或许是为了兼容,或许是为了准备一些东西,
我感到奇怪的是,我有张4G卡,显示某个图片时速度要比其它图约快一倍,这个速度明显感觉的到,
而这些图都是连续地址空间的,另一张4G卡就快一些,而前面那张卡显示那张PLMM时才有张卡那么快。
感觉这张卡挺好色的!;P

使用特权

评论回复
板凳
yewuyi| | 2011-5-6 11:20 | 只看该作者
呵呵,是否内部也需要先做一些初始化?

使用特权

评论回复
地板
yewuyi| | 2011-5-6 11:21 | 只看该作者
读SD卡都不是按字节读的吧?是不是一次读一个页面什么的?呵呵,可能SD卡内部需要缓冲一下也说不定。

使用特权

评论回复
5
kami03372| | 2011-5-6 11:37 | 只看该作者
SD卡读取要等待MS级?没有的吧。
是不是看错了,是ns吧

使用特权

评论回复
6
coody| | 2011-5-6 12:09 | 只看该作者
5楼,这是确定的,用SPI读SD卡是需要等待其准备好的,一般2G的卡要等1~3ms,有的卡特别慢

使用特权

评论回复
7
ljm810010|  楼主 | 2011-5-6 12:41 | 只看该作者
这个准备工作花时间也太长了吧,1~3ms,最差的MCU也可以干很多事了。
难道读个数据也要做浮点运算,FFT,压缩解压......

使用特权

评论回复
8
kami03372| | 2011-5-6 15:44 | 只看该作者
5楼,这是确定的,用SPI读SD卡是需要等待其准备好的,一般2G的卡要等1~3ms,有的卡特别慢
coody 发表于 2011-5-6 12:09

我刚翻了下以前的东西看了下,lz应该是你那里的问题吧。
读命令发送完毕-接收到回复-接受到数据起始令牌,这个过程我没有用任何的延时。只是在不停的读取回复状态。
用的平台是C8051F005+2G的卡,SPI速度8M左右一直用的没问题......

驱动代码有问题可能

使用特权

评论回复
9
ljm810010|  楼主 | 2011-5-6 16:14 | 只看该作者
8# kami03372

“不停的读取回复状态”不就是等同于延时吗?
你是否有看观察循环读取多少次才得到起始令牌?我看过一般都要读几百次,也就是费时1ms左右的样子。
这段时间SD卡内控制器难道在打瞌睡?

使用特权

评论回复
10
ture_2010| | 2011-5-6 18:33 | 只看该作者
我是来学习的,看看哦

使用特权

评论回复
11
coody| | 2011-5-6 21:55 | 只看该作者
支持8楼。。。。
测试方法:
将一个IO输出高电平。
接着发读命令发送完毕-接收到回复-接受到数据起始令牌,IO输出低电平。这个过程我也没有用任何的延时。只是在不停的读取回复状态。

用示波器看这个IO的高电平时间,我测试过手上的20片1G或2G的卡,最快的0.6ms,最慢的2.8ms。

使用特权

评论回复
12
cecwxf| | 2011-5-6 22:33 | 只看该作者
mark

使用特权

评论回复
13
zhangmintao| | 2011-5-7 20:46 | 只看该作者

使用特权

评论回复
14
kami03372| | 2011-5-9 17:16 | 只看该作者
8# kami03372  

“不停的读取回复状态”不就是等同于延时吗?
你是否有看观察循环读取多少次才得到起始令牌?我看过一般都要读几百次,也就是费时1ms左右的样子。
这段时间SD卡内控制器难道在打瞌睡? ...
ljm810010 发表于 2011-5-6 16:14


今天才有空,当时的循环最大值是100,
备注上写的是47。
为何你的这么长时间......
你读取SD卡的,哪个CRD还是什么寄存器来着,看看他的最大支持频率是多少呢?

使用特权

评论回复
15
古道热肠| | 2011-5-9 19:51 | 只看该作者
等待数据内容的同步字FE和过程的确是有的卡比较长,有的比较短,可以先让单片机干点其它的事,注意SD卡的CS仍然为选中状态,不要让SPI总线冲突,回头干完事情,这时读同步头正好准备好了,直接读取数据。
估计是SD卡在从Flash中查找数据然后拷贝到RAM中需要耗时。

使用特权

评论回复
16
ljm810010|  楼主 | 2011-5-10 10:49 | 只看该作者
本帖最后由 ljm810010 于 2011-5-10 10:50 编辑

等待时间由卡内CSD寄存器中TAAC与NSAC两项参数确定,其中TAAC参数规定了固定的等待时间,这个时间不因外部时钟频率而改变,这是卡内异步操作的时长。NSAC规定了需要输入时钟脉冲的最少数目,以100为单位,参数为n代表n百个时钟脉冲。

总的等待时间是上述两时间之和。
无论哪一项,相比于普遍的 EEPROM 和 FLASH 存贮器的读访问时间,都不是同一个级别。

求真相~~

使用特权

评论回复
17
yppic82| | 2011-5-14 10:59 | 只看该作者
学习学习:loveliness:

使用特权

评论回复
18
ljm810010|  楼主 | 2011-5-31 08:48 | 只看该作者
顶起,问题仍未解决。

使用特权

评论回复
19
bnyuli| | 2011-5-31 14:22 | 只看该作者
读取方式有多少种是在里面的  还是需要理解的方式在的吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

1195

帖子

0

粉丝