温故知新(十二)——SPI


1 简介

SPI是一种嵌入式系统中应用广泛的同步串行通信、边沿采样、主从架构式总线接口。80年代由摩托罗拉开发。

1.1 拓扑结构

SPI一般有四根线,一根时钟线SCLK,两根数据线MOSI(主出从入)/MISO(主入从出),一根片选线。

对于SPI总线而言,有两种拓扑:

  • 独立片选拓扑:总线拓扑需要更多片选引脚,但通信效率高。信息直接在主从间传递。
对于从设备而言,当从设备未选中时,MISO脚须设置为高阻态,而不能是输出态,否则会影响总线。 对于从设备的MOSI,输入引脚的阻抗本来就是高阻,所以不会有问题。
  • 菊花链拓扑:某级从设备在第N组时钟周期用MISO发送第N-1组时钟周期接收到位给下级设备,同时把本组时钟周期期间前级设备通过MISO移位进来的数据保存按位序保存进接收寄存器中。

1.2 四种工作模式

SPI总线有四种工作模式,是由时钟极性选择(CPOL)和时钟相位选择(CPHA)决定。
CPOL = 0 ,SPI总线空闲为低电平,CPOL = 1, SPI总线空闲为高电平。
CPHA = 0, 在SCK第一个跳变沿采样,CPHA = 1, 在SCK第二个跳变沿采样。

  1. 当CPHA=0、CPOL=0时SPI 总线工作在模式0。MISO 引脚上的数据在第一个时钟跳变之前已经输出了,而为了保证正确传输,MOSI 引脚的MSB 位必须与SCK 的第一个边沿同步。在模式0的SPI 传输过程中,首先将数据输出,然后在同步时钟信号的上升沿时,SPI 的接收方采样位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号输出,再重复上述过程,直到规定的字节数传输结束。
  2. 当CPHA=0、CPOL=1时SPI 总线工作在模式1。与模式0唯一不同之处只是在同步时钟信号的下降沿时采样位信号,上升沿时下一位数据输出。
  3. 当CPHA=1、CPOL=0时SPI 总线工作在模式2。MISO 引脚和MOSI 引脚上的数据的MSB 位必须与SCK的第一个边沿同步,在SPI 传输过程中,在同步时钟信号周期开始时(上升沿)数据输出,然后在同步时钟信号的下降沿时,SPI 的接收方采样位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号输出,再重复上述过程,直到规定的字节数传输结束。
  4. 当CPHA=1、CPOL=1时SPI 总线工作在模式3。与模式2唯一不同之处只是在同步时钟信号的上升沿时采样位信号,下降沿时下一位数据输出。
    其中模式0和模式3最为常用

2 SPI优劣

主要与IIC做对比,因为两者都是常用的芯片间通信方式。

  • 优势:
    传输速度高,SPI并未限定最高速度。有的应用甚至高达10Mbps。
    全双工,但有的芯片没有MISO,则不支持。
    相较于I2C而言,SPI简单一些,编程容易,控制简单
    信号为单向信号,易于电隔离。尤其在工业产品中电气隔离在抗干扰方面、以及本质安全方面要求比较高。
    没有复杂的总线仲裁机制,相对健壮。

  • 劣势:
    无寻址机制,需要额外的片选信号
    SPI总线对于多从模式支持不好,两种拓扑都无法支持很多从设备
    而且系统中也仅有一个主设备
    没有定义错误检测机制
    事实上的标准,但无正式标准
    与I2C一样也只是芯片间总线,无法长距离通信


3 总结

SPI和IIC在鲁棒性方面都比较好。IIC之所以优雅,是因为它在极简的基础架构(两线SDA/SCL)上提供了非常先进的功能,例如自动多主机冲突处理和内置地址管理。但是它相对却非常复杂,在性能上或许有所欠缺。

另一方面,SPI非常易于理解和实施,并且为扩展提供了很大的灵活性。SPI的优雅之处在于简单性。SPI应该被视为构建用于IC之间通信的自定义协议栈的良好接口。因此,尽管使用SPI可能需要做更多的工作,但可以提供更高的数据传输性能和灵活的自由度。

如果一定要比较,则SPI和I2C都为低速设备的通信提供了良好的接口支持,但是SPI更适合点对点传输数据流的应用,而I²C则更适合于多主机“寄存器访问”应用。


4 参考技术文档

万变不离其宗之SPI总线要点总结

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LEODWL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值