jfo 发表于 2013-9-13 19:49:04

uno r3上串口,IIC,SPI三种通讯方式分别能达到多快的最大速度?

外接16m晶震,串口115200波特率最大是115200bps,每秒大概14.4k bytes,
IIC的SCL最大16m/16=1mhz(根据芯片手册公式算),一个时钟周期传1bit,传8个bits后还要一个时钟周期让slave来ack,去除start和stop时间,每秒传1m/9=116.5k个有效数据bytes,当然实际速度应该还要低不少
SPI接口没研究,不知道最快能达到多少
如果用arduino连接带mjpg压缩的摄像头,30fps,每帧jpg图片3~5k,以目前的速度不知道能不能完成数据采集

学慧放弃 发表于 2013-9-13 20:44:50

应该不是很快吧

wing 发表于 2013-9-14 10:59:26

话说SPI标准被制定过很多次,最初好像是100kbps.不过现在我已经不知道它的上限是多少了,或者应该说已经没有人想为它规定上限了.
好多年前三洋公司宣传他的SPI NOR型闪存的时候说,在SCK端子的时钟为50MHz的情况得到400Mbps的数据读取速度.
至于现在是多少我就知道了,不过单从SPI接口速度来没有问题,现在的问题是你能让它工作在什么频率下

jfo 发表于 2013-9-16 10:50:56

mega328p的串口貌似最快可以设置256000,Serial.begin(256000),正常收发,再设高就乱码了

jfo 发表于 2013-9-16 10:52:37

本帖最后由 jfo 于 2013-9-16 10:54 编辑

wing 发表于 2013-9-14 10:59 static/image/common/back.gif
话说SPI标准被制定过很多次,最初好像是100kbps.不过现在我已经不知道它的上限是多少了,或者应该说已经没有人 ...

在mega328p上SPI速度能上到多少呢?
16M外部晶振,如果能上到10Mbps也够应付大部分应用了

wing 发表于 2013-9-17 09:44:51

假如使用经典的4线SPI,即SDI和SDO都只有一条线,那么每个时钟可以传送1位的数据
说到328,atmel说他的频率可以去到20M,那么实际上能OC到多少呢?
或者先别管心片性能的极限,反正接口不可能占据芯片的所有频率,那么这些频率怎么分配呢?
假设系统是工作在16M的频率下,接口时钟按二十分之一的比例分频,也就是接口的时钟是800K,每个时钟传送1位数据,大概就是 100K bytes 每秒 . 这个速度看起来已经满足 30fps,每帧j3k 的要求.

wing 发表于 2013-9-17 10:04:16

接下来的问题是接收到这些数据后,要把他放在什么地方?
内存是一个不错的选择,如果我没记错的话328有2K的内存,如果忽略写入内存的延时,和其他程序占用内存空间的话.这点可怜的空间大概会在开始接收数据后的50分之1秒被占满.
EEPROM,这东西被称为芯片上的硬盘,因为他在断电后数据也不会丢失.不过328中这个硬盘比内存还小,他只有1K,百分之一秒就被占满了
最后还有一个选择,就是Flash,也就是328存放程序的地方,他的总容量是32K.这是芯片上最大的存储体了.
看来最关键问题并不是接口的速度,而是要找一个容量大,速度快的外部存储器
页: [1]
查看完整版本: uno r3上串口,IIC,SPI三种通讯方式分别能达到多快的最大速度?