SPI通讯协议必备知识。

一、SPI简介

  • SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。

  • 它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。

二、基本原理

1. 物理层

  • SPI内部结构图:
    SPI通讯协议必备知识。_第1张图片

  • SPI连接方式图:
    SPI通讯协议必备知识。_第2张图片

  • 引脚介绍
    SPI通讯采用3条总线以及片选线,即上图中的SCK、MOSI、MISO、SS。

(1):(SS)'为片选信号线,也被称为NSS、CS,其功能是寻址。在STM32中,I2C是通过设备地址来选择不同的设备,但SPI没有设备地址,只能通过CS信号线来寻址,因此每个设备都有一条单独的CS信号线与主机相连。当CS信号线设置为低电平时,即该设备被选中,选中后就可以进行SPI通信,CS信号线被拉高,作为结束信号。

(2):SCK (Serial Clock):时钟信号线,用于同步通讯数据。它由通讯主机产生,并决定通讯的速率,但由于不同设备的最高通讯速率不同,当两个设备通讯时,受限于设备的最低速率。在STM32中,SPI时钟频率最大为fpclk/2。手册规定SPI最快为18MHz,但SPI1挂载在APB2时钟总线下,理论最快为36MHz。

(3):MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。

(4):MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。

2.协议层

2.1 SPI通讯基本过程

  • 通讯时序图:
    SPI通讯协议必备知识。_第3张图片
  • 这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。

2.2 通讯的起始和停止信号

  • 在上图中的标号(1)处,NSS 信号线由高变低,是 SPI 通讯的起始信号。

  • NSS 是每个从机各自独占的信号线,当从机在自己的 NSS 线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。

  • 在图中的标号(6)处,NSS 信号由低变高,是 SPI 通讯的停止信号,表示本次通讯结束,从机的选中状态被取消。

2.3 数据有效性

  • SPI 使用 MOSI 及 MISO 信号线来传输数据,使用 SCK 信号线进行数据同步。MOSI及 MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时,MSB 先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI 通讯设备之间使用同样的协定,一般都会采用图中的 MSB 先行模式。

  • 观察图中的(2)、(3)、(4)、(5)、标号处,MOSI 及 MISO 的数据在 SCK 的上升沿期间变化输出,在 SCK 的下降沿时被采样。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其它时刻,数据无效,MOSI 及 MISO为下一次表示数据做准备。

  • SPI 每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

2.4 . CPOL/CPHA 及通讯模式

  • SPI 一共有四种通讯模式,它们的主要区别是总线空闲时 SCK 的时钟状态以及数据采样时刻。由“时钟极性 CPOL”和“时钟相位 CPHA”决定。
  • 时钟极性 CPOL 是指 SPI 通讯设备处于空闲状态时,SCK 信号线的电平信号(即 SPI 通讯开始前、 NSS 线为高电平时 SCK 的状态)。CPOL=0 时, SCK 在空闲状态时为低电平,CPOL=1 时,则相反。
  • 时钟相位 CPHA 是指数据的采样的时刻,当 CPHA=0 时,MOSI 或 MISO 数据线上的信号将会在 SCK 时钟线的“奇数边沿”被采样。当 CPHA=1 时,数据线在 SCK 的“偶数边沿”采样。
  • 奇数边沿采样:
    SPI通讯协议必备知识。_第4张图片
  • 偶数边沿采样:
    SPI通讯协议必备知识。_第5张图片
  • MOSI 和 MISO 数据线的有效信号在 SCK 的奇数边沿保持不变,数据信号将在 SCK 奇数边沿时被采样,在非采样时刻,MOSI 和 MISO 的有效信号才发生切换。
  • SPI的四种模式:
    SPI通讯协议必备知识。_第6张图片

你可能感兴趣的:(STM32,物联网,单片机,网络,嵌入式,spi)