0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI通讯速度与容错率

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-12-04 10:21 次阅读

通讯速率

对于SPI通信并没有规范最高的通信速率,在我的开发经验中有见过达到50Mbit/s的应用场景,但通常比较常见的还是10Mbit/s左右。

具体选用多快的通信速度,还得在实际项目中根据情况具体设计,比如:

1、当前主从机的主频和项目的具体应用都与SPI数据的处理能力有着直接关系,一般SPI通信的时钟频率都是来源于主频分频,这就在一定程度上限制了其通信速率上限。

即使能够达到较高速的速率,而处理器还需要处理更多的业务逻辑,再去处理SPI数据也是不够及时的,此时高速率并没有太大的意义了。

2、SPI硬件PCB布线长度等等影响着线路阻抗,这也同样限制了通信速率,一般通信距离越长,通信速度越低,否则容易造成通信不稳定。

特别是通信线路经过一些干扰源更是影响其稳定性,所以SPI作为一种相对高速的通信方式,一般都不会用于长距离通信中,而是大量用于微处理器与外部SPI接口的设备之间的通信,比如高速采样芯片ADC、处理器之间等等。

3、前面说了即使SPI主机能够达到较高的通信速率,但从机主频或者数据处理能力不够,这样也是没有太大意义的,当你可以通过配置从机为接收队列或者DMA等方式进行优化,当然高速率在多机中能够减少同步延时。

值得注意的是一些芯片标称的最高通信速率,是在比较好的外界条件下的测试值,超过了该标称值可能也能用,但并不会很稳定,容易导致通信异常。

所以具体选用多快的通信速度,还需根据实际情况分析确认。

pYYBAGOLLdGAQ3X9AAGNtuJ6_do508.png

容错性

SPI不像IIC那样存在应答机制,也没有流控制机制,当从机配置较低,如果一个报文还没处理完,后一个报文又到来,导致传输错乱,其通信过程几乎都是靠硬件来保证数据的传输稳定性,是一种不可靠传输。

当然如果是用于多机通信倒是可以通过制定可靠性校验协议来保证传输数据的稳定,但这也在一定程度上会降低通信的有效数据传输速度。

stm32的SPI外设发送和接收都存在独立的CRC校验功能,大致的原理就是使用CRC在每个位上进行串行计算,然后在最后一次数据传输结束时来传输CRC校验值,接受方接收到CRC以后自动拿着数据和CRC值进行比对,看是与否有数据故障,如果存在传输问题就会置位相应的CRC故障标志位告知。

当然如果所选用的芯片SPI外设没有独立CRC模块可以模拟类似的操作进行处理,只是相对比较耗时,毕竟这个CRC得软件自己处理。

stm32的SPI外设的灵活度远不止这些,比如配置成双线单向模式等,可以把MISO和MOSI都向一个方向传输,从而提高一倍的传输速度,感兴趣可以参考一下手册玩一下。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89602
  • PCB布线
    +关注

    关注

    19

    文章

    460

    浏览量

    41655
  • SPI通信
    +关注

    关注

    0

    文章

    33

    浏览量

    11264
收藏 人收藏

    评论

    相关推荐

    关于STM32的SPI主从双机通讯问题

    大家,我想问下,我用两块STM32进行SPI通讯,一个主机一个从机,开始主从机是可以通讯成功的,而且数据也是对的,但是不知为什么,通讯一段时间后,从机接收主机发过来的数据会出现错误,感
    发表于 10-11 21:06

    SPI通讯错误问题解决

    SPI接口,与串口接口相似,是单片机中最基本的两个通讯接口,都有T(发)、R(收), 不同的是SPI还有时钟与片选 。我初入研发时,设计过一个SPI接口的
    发表于 09-30 23:59

    nrf24l01+和stm32的spi通讯需要设置nrf24l01+的spi波特

    nrf24l01+和stm32的spi通讯需要设置nrf24l01+的spi波特吗如果需要,想问下是在哪段代码设置的nrf24l01+的spi
    发表于 01-21 17:16

    Compact Rio下NI9401如何通过SPI通讯采集加速度信号?

    我想用C-rio下的NI9401 进行SPI通讯采集加速度信号,类似于使用NI9401采集ADXL345加速度信号,这样可以采集信号进行实时处理,尽可能的降低系统的延时。但是我机械出身
    发表于 04-16 09:13

    nrf24l01+和stm32的spi通讯要设置nrf24l01+的spi波特吗?是在哪段代码设置的

    nrf24l01+和stm32的spi通讯需要设置nrf24l01+的spi波特吗如果需要,想问下是在哪段代码设置的nrf24l01+的spi
    发表于 06-09 04:35

    容错CAN收发器TJA1054电子资料

    概述:TJA1054是飞利浦半导体公司生产的一款容错CAN收发器。该TJA1054是在一个控制区域网络的公交线路的协议控制器和物理线路(CAN)之间的接口。它主要用于forlow速度的应用,高达125K波特,在乘用...
    发表于 04-21 06:52

    硬件SPI与软件模拟SPI速度区别

    硬件SPI与软件模拟SPI速度区别实测目前为了程序移植方便,许多以SPI接口的芯片所提供的参考代码大多都使用的是软件SPI,比如笔者用过的存
    发表于 07-01 06:40

    RN8302spi通讯例程2011.5.30

    RN8302spi通讯例程2011.5.30
    发表于 08-24 08:41 36次下载

    两块STM32之间SPI通讯进行的注意事项

    之前分享过的SPI通讯实例:STM32硬件SPI主从通信实例,是基于一块STM32的两个SPI通讯。如果要进行两块STM32之间的
    的头像 发表于 04-04 17:24 1.4w次阅读

    详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI?2. SPI优与缺点3. SPI组成原理4.
    发表于 12-05 12:51 21次下载
    详细介绍GPIO、I2C、<b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>原理以及物理层原理

    详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI?2. SPI优与缺点3. SPI组成原理4.
    发表于 12-05 13:21 9次下载
    详细介绍GPIO、I2C、<b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>原理以及物理层原理

    硬件SPI与软件模拟SPI速度区别实测

    硬件SPI与软件模拟SPI速度区别实测目前为了程序移植方便,许多以SPI接口的芯片所提供的参考代码大多都使用的是软件SPI,比如笔者用过的存
    发表于 12-22 19:13 9次下载
    硬件<b class='flag-5'>SPI</b>与软件模拟<b class='flag-5'>SPI</b><b class='flag-5'>速度</b>区别实测

    SPI通讯协议介绍

    来到SPI通讯协议了。废话两句,“SPI很重要”,这是我在学校时候听那些单片机开发工程师说的。出来实习,到后来工作,确实如此,SPI的使用很常见,那么自然重要咯。
    发表于 12-22 19:18 10次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>协议介绍

    SPI通讯协议必备知识。

    SPI被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合,也是学习STM32必需要掌握的知识。...
    发表于 12-22 19:21 13次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通讯</b>协议必备知识。