楼主提问SPI的通信速率到底可以达到多少按照手册上的说明.doc

楼主提问SPI的通信速率到底可以达到多少按照手册上的说明.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
楼主提问:SPI的通信速率到底可以达到多少??? 按照手册上的说明,应该能到fosc/4,然而实际上由于SPI通信底层没有任何握手,不像I2C总线那样带ACK,所以SPI速率实际上根本不能达到fosc/4,除非发信端与收信端完全同步,然而事实上接收端往往要对接收到的数据进行一些判断和处理,所以在接收端往往会丢数,解决办法就是在发信端发完一个字节后人为加上延时等待接收端处理,但是如果这样的话,高速还有什么意义呢? 我做了一个试验,即使关掉所有其它中断,只作SPI通信处理,在fosc/4的通信速率下,接收端只能接收10个字节以内的数据,10个字节以上就会丢数,而在fosc/8的通信速率下,如果关闭所有其它中断,收发256个字节是没什么问题的,但是如果应用程序有1ms的时钟中断事件的话,spi通信成功率很低。 在前面很多帖子里,看到不少人说spi只是硬件底层,通信的可靠性要靠通信协议,诚然如此,但是我以为通信协议只是最后一道保障,如果底层不可靠,通信协议再完善也是惘然。 轮询和中断方式有本质区别吗?轮询就能保证不被其它中断干扰吗? 主机自己掌握SPI节奏,它只知道自己发送出去了,并不知道从机是否处理完,如果从机还在处理上一个字节,这时候发下个字节显然会丢数据啊 解答者1回答: 是同步!不是异步! 也就是说MASTER提供时钟,所以完全由MASTER决定速率(当然大家都能达到的) 再有就是这个速率仅仅指一个BYTE的通讯速率,不是整个帧速率(2个BYTE以上)从机查询和中断无关,说白了就是移位寄存器! 楼主再问: 关键就在于这个速率要大家都能达到啊,如果都能达到就不用讲了,实测下来就是slave端达不到这个速率啊 。如果这个速率是一个BYTE的指标那就没啥说的了,我认了,只能在字节之间加延时了。 解答者2: 我试过用fosc/2的时钟速率进行两机通讯(系统时钟16M),连续传了好多字节都没有问题。主机用查询方式发送;从机用中断接收,接收到的数据用液晶显示出来。 解答者1: 多字节是不可能达到fosc/2的!除非从机速率更快,有足够的时间去处理或保存(读取数据),要不然是吹牛的!影响速率达不到fosc/2就是从机提取数据!与系统时钟多少那无关!再有,?从机响应中断都要4个机器周期,更别说要存储,中断出来也要4个机器周期。 对于单字节来说是可以达到fosc/2,因为AVR可以使用倍率,本来是fosc/4的! 所以,数据手册里讲的可以达到fosc/4那是指单字节的速率! 楼主: 所以说手册给出来的指标很带有欺骗性,为了可靠起见(相信很多人的程序中都有个时钟在运行),建议放在fosc/16。 SPI接口原理 SPI接口的全称是Serial Peripheral Interface,意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM, FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号: (1)MOSI – 主器件数据输出,从器件数据输入 (2)MISO – 主器件数据输入,从器件数据输出 (3)SCLK – 时钟信号,由主器件产生 (4)/SS – 从器件使能信号,由主器件控制 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。 在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。 SPI接口内部硬件图示: 最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。 ///////////////////////////// SPI与UART的区别: SPI是三线或者四线(CS CLK DI DO) UART是两线制(TXD RXD),实际上就是串口; SPI一般是CS=0启动传输,以CLK作为同步信号,不含启动位停止位等 UART传输信号中包含了启动位和停止位等,本身就可作为同步信号使用 SPI一般没有标准的通信速率 UART一般都是使用标准的通信波特率 /////////////

文档评论(0)

yuxiufeng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档