打印
[AVR单片机]

SPI从Micro SD卡中读数据然后转给串口速度能跟上吗?

[复制链接]
1616|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DreadBoy|  楼主 | 2017-8-1 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gujiamao12345| | 2017-8-1 15:33 | 只看该作者
256000也就256k spi上M很容易吧
你应该担心串口跟不上吧!

使用特权

评论回复
板凳
DreadBoy|  楼主 | 2017-8-1 16:05 | 只看该作者
gujiamao12345 发表于 2017-8-1 15:33
256000也就256k spi上M很容易吧
你应该担心串口跟不上吧!

SPI通信最高确实可以达到4M/秒,但是访问SD卡的时候我看貌似不是很快,速度只能在128K/秒左右,所以我担心SPI+SD的速度跟不上。

使用特权

评论回复
地板
NE5532| | 2017-8-1 16:42 | 只看该作者
你需要确认一下这个速度,我没有用过,但是按常识,SPI不可能这么慢。

使用特权

评论回复
5
feelhyq| | 2017-8-1 17:04 | 只看该作者
NE5532 发表于 2017-8-1 16:42
你需要确认一下这个速度,我没有用过,但是按常识,SPI不可能这么慢。

SD卡初始化的时候SPI速度不能太高,一般最多400Kb,可能初始化SD卡完成后,没有把SPI的频率提起来

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
NE5532 + 5 很给力!
6
gujiamao12345| | 2017-8-1 17:32 | 只看该作者
DreadBoy 发表于 2017-8-1 16:05
SPI通信最高确实可以达到4M/秒,但是访问SD卡的时候我看貌似不是很快,速度只能在128K/秒左右,所以我担心 ...

在spi速度比串口慢的情况下,可是你串口打印是主动的一种操作,有数据才发送,何来拖累之说!

使用特权

评论回复
7
DreadBoy|  楼主 | 2017-8-1 17:57 | 只看该作者
gujiamao12345 发表于 2017-8-1 17:32
在spi速度比串口慢的情况下,可是你串口打印是主动的一种操作,有数据才发送,何来拖累之说! ...

因为我想让数据最大化发送,但是串口和另一个设备的速度是256000下能够正常通信,现在我想把代码移植到单片机中,把发送的内容放在SD中,所以我怕sd速度慢会导致整个速度跟不上

使用特权

评论回复
8
feelhyq| | 2017-8-1 19:33 | 只看该作者
DreadBoy 发表于 2017-8-1 17:57
因为我想让数据最大化发送,但是串口和另一个设备的速度是256000下能够正常通信,现在我想把代码移植到单 ...

你在初始化完成SD卡后,再将读写SD卡的速度提高

使用特权

评论回复
9
DreadBoy|  楼主 | 2017-8-1 20:15 | 只看该作者
feelhyq 发表于 2017-8-1 19:33
你在初始化完成SD卡后,再将读写SD卡的速度提高

我明白了,您的意思是我初始化sd的时候用低速,初始完成后再提高spi的速度吗,您之前有做过类似的项目吗,速度大概是多少,选 的是那块芯片。使用文件系统了没有,谢谢。

使用特权

评论回复
10
DreadBoy|  楼主 | 2017-8-1 20:17 | 只看该作者
gujiamao12345 发表于 2017-8-1 17:32
在spi速度比串口慢的情况下,可是你串口打印是主动的一种操作,有数据才发送,何来拖累之说! ...

我的意思是spi读sd卡时会拖累串口的速度。

使用特权

评论回复
11
feelhyq| | 2017-8-1 22:05 | 只看该作者
DreadBoy 发表于 2017-8-1 20:15
我明白了,您的意思是我初始化sd的时候用低速,初始完成后再提高spi的速度吗,您之前有做过类似的项目吗 ...

用不用文件系统和速度无关,你可以在低速的时候初试化完SD卡,然后再把速度提高到1MHz即可

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
DreadBoy + 2
12
feelhyq| | 2017-8-1 22:06 | 只看该作者
DreadBoy 发表于 2017-8-1 20:15
我明白了,您的意思是我初始化sd的时候用低速,初始完成后再提高spi的速度吗,您之前有做过类似的项目吗 ...

这样的项目我都做麻木了

使用特权

评论回复
13
DreadBoy|  楼主 | 2017-8-2 08:34 | 只看该作者
本帖最后由 DreadBoy 于 2017-8-2 08:38 编辑
feelhyq 发表于 2017-8-1 22:05
用不用文件系统和速度无关,你可以在低速的时候初试化完SD卡,然后再把速度提高到1MHz即可 ...

谢谢您的指点,初始化400kb的情况下一个128m的tf需要多久时间大概。

使用特权

评论回复
14
feelhyq| | 2017-8-2 10:31 | 只看该作者
DreadBoy 发表于 2017-8-2 08:34
谢谢您的指点,初始化400kb的情况下一个128m的tf需要多久时间大概。

建议使用示波器去测量,从第一个clk时钟信号开始,到下一个字节的第一个clk时钟信号,看看时间为多少,这个时间就是读取SD卡一个字节的时间。

使用特权

评论回复
15
feelhyq| | 2017-8-2 10:33 | 只看该作者
DreadBoy 发表于 2017-8-2 08:34
谢谢您的指点,初始化400kb的情况下一个128m的tf需要多久时间大概。

SPI读取一个字节的时间不仅仅跟SPI速度本身有关,还跟MCU的运行速度有关,你用示波器测量看一下信号 一下子就明白了

使用特权

评论回复
16
DreadBoy|  楼主 | 2017-8-2 18:09 | 只看该作者
feelhyq 发表于 2017-8-2 10:33
SPI读取一个字节的时间不仅仅跟SPI速度本身有关,还跟MCU的运行速度有关,你用示波器测量看一下信号 一下 ...

我想再请教一下您,是不是SD卡的各类也影响速度,一般1MHz的速度平均传输一个字节需要多少秒

使用特权

评论回复
17
feelhyq| | 2017-8-2 18:15 | 只看该作者
DreadBoy 发表于 2017-8-2 18:09
我想再请教一下您,是不是SD卡的各类也影响速度,一般1MHz的速度平均传输一个字节需要多少秒 ...

不会,SD卡作为存储介质,但是其速度最高可以满足40Mhz,也就是所只要SPI设置的速度小于40Mhz就可以。但是SD卡也分很多种,这个可以不用去纠结,你把SPI的速度(配置寄存器)设置成大于1Mhz是可以满足你的需求的,当然前提条件是你先要把SPI速度调到400Kb以下,因为要初始化SD卡,初始化完SD卡后,再重新配置寄存器,将SPI的速度提高到1Mhz以上就可以了

使用特权

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

本版积分规则

7

主题

50

帖子

2

粉丝