SPI学习(一):SPI简介与硬件拓扑

一.SPI简介

关于这一点,参考的是内核的标准文档:documentation/spi/spi-summary:

原文:The "Serial Peripheral Interface" (SPI) is a synchronous four wire serial link

used to connect microcontrollers to sensors, memory, and peripherals.
It's a simple "de facto" standard, not complicated enough to acquire a
standardization body.

SPI uses a master/slave configuration.

简单来说:SPI是“Serial Peripheral Interface”的缩写,串行外设接口,是一种四线制的同步串行通信接口,用来连接MCU、传感器、存储设备

SPI设备分为主设备和从设备两种

用于通信和控制的四根线分别是:CS(片选信号),SCLK(时钟信号),MISO(主设备的数据输入,从设备的数据输出脚),MOSI(主设备的数据输出,从设备的数据输入脚)

二.SPI硬件拓扑结构

同样要说明的是SPI的四根线:

SPI模块结构如下图:

用于通信和控制的四根线分别是:CS(片选信号),SCLK(时钟信号),MISO(主设备的数据输入,从设备的数据输出脚),MOSI(主设备的数据输出,从设备的数据输入脚)

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

需要注意的是SPI的硬件连接方式,如下两种:

(Independent slave)独立从设备连接方式

每个SPI控制器可以连接多个SPI从设备,每个从设备有各自独立的CS引脚。每个从设备共享另外三个信号引脚:SCLK,MISO,MOSI。任何时刻,只有一个CS引脚处于有效状态,与该有效CS引脚连接的设备此时可以与主设备(SPI控制器)通信,其它的从设备处于等待状态,并且它们的3个引脚必须处于高阻状态

简单地说,独立连接方式由于每个从机都有一个片选引脚,这就要求主机对每个从机都要提供单独的片选引脚;

如果要和特定的从机进行通讯,可以将相应的片选信号线拉低,并保持其他片选信号线的状态为高电平;

如果同时将两个片选信号线拉低,则可能会出现乱码,因为从机可能都试图在同一条MISO线上传输数据,最终导致接收数据乱码

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

(Daisy chain slave)菊花链从设备连接方式

什么是菊花链: 在数字通信世界中,设备信号(总线信号或中断信号)以串行的方式从一 个设备依次传到下一个设备,不断循环直到数据到达目标设备的方式被称为菊花链

20201103083740863.jpg#pic_center

在菊花链模式下,所有从机的片选信号连接在一起,所有从机同时接收同一个SPI时钟,数据从一个从机传播到下一个从机。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。 使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。并非所有SPI器件都支持菊花链模式

菊花链的最大缺点是因为是信号串行传输,所以一旦数据链路中的某设备发生故障的时候,它下面优先级较低的设备就不可能得到服务了;

另一方面,距离主机越远的从机,获得服务的优先级越低,所以需要安排好从机的优先级,并且设置总线检测器,如果某个从机超时,则对该从机进行短路,防止单个从机损坏造成整个链路崩溃的情况

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYW9qdW53dQ==,size_16,color_FFFFFF,t_70

菊花链最终的数据流向图如下图所示(SCK为时钟信号,8clks表示8个边沿信号;其中D为数据,X为无效数据)

20201103012046840.png#pic_center

 

总结一下各自的优缺点:

  • 独立片选拓扑:总线拓扑需要更多片选引脚,但通信效率高。信息直接在主从间传递

  • 菊花链拓扑:节省引脚,但效率较低,数据信息传递需要级联传递

三.SPI的优缺点

SPI通讯的优势

使SPI作为串行通信接口脱颖而出的原因很多;

  • 全双工串行通信;
  • 高速数据传输速率。
  • 简单的软件配置;
  • 极其灵活的数据传输,不限于8位,它可以是任意大小的字;
  • 非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。

SPI的缺点

  • 没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
  • 通常仅支持一个主设备;
  • 需要更多的引脚(与I2C不同);
  • 没有定义硬件级别的错误检查协议;
  • 与RS-232和CAN总线相比,只能支持非常短的距离;

四.参考博客

https://blog.csdn.net/xiezhi123456/article/details/80097780

https://blog.csdn.net/sternlycore/article/details/86138892

https://blog.csdn.net/msc1211/article/details/107293931/

https://blog.csdn.net/u010632165/article/details/109460814

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值