常用的嵌入式硬件通信接口协议(UART、IIC、SPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(三)

3、SPI

(1)基本概念

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线。它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。

SPI是一个环形总线结构,由MOSI、MISO、SCLK、CS构成,其时序其实很简单,主要是在SCLK的控制下,两个双向移位寄存器进行数据交换。

  • MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
  • MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
  • SCLK – Serial Clock,时钟信号,由主设备产生;
  • CS – Chip Select,从设备使能信号,由主设备控制。

2

电路设计中,只需要把Master设备的SCKL,MOSI,MISO,CS四根引脚分别与Slave设备的对应引脚相连即可。

需要注意以下几点:

  • 4根信号线可串联10~50欧姆的小电阻,可以适当增加信号线阻抗,满足终端阻抗匹配,以抑制信号终端反射。
    3
  • 当只有一个slave设备,且IO口资源紧张的条件下,可直接将CS引脚拉低,这样可以节省出一个IO口,下拉电阻阻值可选择10K左右。
    image-20220412144323482
  • 在SPI操作中,有两项比较重要的设置,就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
SPI 模式CPOLCPHA空闲状态下的时钟极性用于采样和移位数据的时钟相位
000逻辑低电平数据在上升沿采样,在下降沿发送
101逻辑低电平数据在下降沿采样,在上升沿发送
211逻辑高电平数据在下降沿采样,在上升沿发送
310逻辑高电平数据在上升沿采样,在下降沿发送

注意:Master设备和与Slave设备通信时,两者的时钟相位和极性应该保持一致。

  • 若Master设备和Slave设备电平存在差异,比如Master设备1.8V,Slave设备3.3V,则需要在Master设备和Slave设备之间增加一个支持SPI通信速率的电平转换器
    5

多从机电路设计

常规SPI模式

a

在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用于所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。

随着从机数量的增加,来自主机的片选线的数量也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。

菊花链模式

b

在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。

使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。另外并非所有SPI器件都支持菊花链模式,请参阅产品数据手册以确认菊花链是否可用。

(2)通信过程

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平时表示逻辑“1”,低电平时表示逻辑“0”;一个字节传送完成之后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或者下降沿时发送器向数据线上发送数据,在紧接着的下降沿或者上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的发送。

(3)优缺点

优点:

  • 支持全双工,push-pull的驱动性能相比open-drain信号完整性更好;
  • 支持高速(100MHz以上);
  • 协议支持字长不限于8bits,可根据应用特点灵活选择消息字长;
  • 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
  • 硬件连接简单;

缺点:

  • 相比IIC多两根线,没有寻址机制,只能靠片选选择不同设备;

  • 没有指定的流控制,没有应答机制(ACK)确认是否接收到数据,主设备对于发送成功与否不得而知;

  • 典型应用只支持单主控;

  • 在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
    温馨提示: 下一章节将讲述RS-232通信。

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
串口通信是一种常见的电子设备之间数据传输的方式,常用于计算机和外部设备之间的数据传递。串口通信涉及到几个重要的概念,包括UART、RS232、RS422和RS485。 UART代表通用异步收发器(Universal Asynchronous Receiver/Transmitter),它是指一种硬件电路,用于实现串行数据传输。UART负责将并行数据转换为串行数据并进行传输,同时将接收到的串行数据转换为并行数据供主设备使用。UART通常使用两条线进行传输,一条用于发送数据,一条用于接收数据。 RS232是一种串口通信标准,常用于计算机和外部设备之间的数据传输。它使用串口连接并使用DB-9或DB-25连接器。RS232定义了传输数据的电气特性和信号电平,以及传输的协议。RS232支持全双工通信,即可以同时传输和接收数据。 RS422是一种更为先进的串口通信标准,用于在长距离和高速传输的环境下进行数据传输。RS422可以同时传输数据和接收数据,并使用四线电缆进行传输。RS422使用差分信号来提高传输的抗干扰能力和传输距离。 RS485是另一种串口通信标准,也适用于长距离和高速传输环境。RS485可以连接多个设备,允许多个设备之间进行数据传输。RS485也使用差分信号进行传输,提供了更高的传输距离和抗干扰能力。 在实际应用中,如果需要通过串口进行数据传输,首先需要确定要使用的串口标准。如果是较短距离和低速传输,可以选择RS232;如果是较长距离和高速传输,RS422或RS485可能更适合。然后,需要配置对应的硬件设备和软件驱动程序来实现串口通信。在数据传输过程中,发送端将数据转换成串行数据,并通过所选的串口标准进行传输,然后接收端将串行数据转换为并行数据进行处理。 总之,串口通信是一种常见的数据传输方式,需要了解UART、RS232、RS422和RS485等概念。选择合适的串口标准来进行数据传输,并配置相应的硬件设备和软件驱动程序来实现串口通信

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值