【裸机开发】SPI 通信接口(一)—— SPI 通信流程及四种工作模式

目录

一、SPI 简介

二、SPI 的基本通信流程

三、SPI 的四种工作模式

1、极性和相位

2、四种工作模式


一、SPI 简介

SPI 采用主从的方式工作,可以一个主设备对应一个从设备,也可以一个主设备对应多个从设备。虽然是一个主设备对多个从设备的关系,但是每次通信依然是一个主设备和一个从设备通信。SPI通信一般是由主机发起的,由主机提供时钟信号。

  • MOSI(Master Out Slave In):主设备 ==》从设备(主设备发送,从设备接收)
  • MISO(Master In Slave Out):从设备 ==》主设备(主设备接收,从设备发送)
  • SCLK(Serial Clock):传输时钟信号,用于主从设备的同步
  • CSchip select):片选信号,用于选择从设备
     

二、SPI 的基本通信流程

和 I2C 一样,SPI 是常用的通信接口,SPI 相比于 I2C 的优势:

  • 速度快。I2C 最多 400KHz,但是 SPI 可以达到几十 MHz
  • 全双工。I2C 是半双工,读写需要切换传输方向
  • 传输灵活。I2C 一次只能传输 8 bit;SPI 传输的位数也不限于 8 bit (两次传输之间可以存在等待状态)
  • 无开始和结束信号

选择从设备

当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的CS线上发送使能信号(高电平或者低电平,根据从机而定),表示选中该从设备。

数据传输

SPI 总线在进行数据传输的时候,先传送高位,后传送低位。比如要传送数字3,转换成二进制就是 0000 0011,因为是串行通信,每次只能传 1bit,所以需要决定先传送高位还是低位。

以 CPOL = 0,CPHA = 1为例:

发送端发送信号:当时钟脉冲达到下降沿的时候,这段时间是发送数据的时间。(这里的发送数据包含了发送寄存器地址)

接收端接收信号:当时钟脉冲到达上升沿的时候,这段时间是接收数据的时间。

因此,SPI 可以在一个时钟周期内就完成数据的收发,可以无限制的连续发送和接收数据。

传输完毕或者继续传输

一个字节传输完成后无需应答,可以直接开始下一个字节的传递,也可以就此中止传输(或者额进入等待状态)。SPI总线没有起始或者结束信号。

三、SPI 的四种工作模式

SPI 能在一个时钟周期内完成数据的收发,关键就是在一个时钟周期的两次边沿变化时发送和接收数据。但不限于上面说的,上升沿就一定是发送,下降沿就一定是接收,这取决于极性和相位。

1、极性和相位

极性(CPOL)指的是时钟脉冲在空闲时刻的状态。CPOL = 0,空闲时刻是低电平;CPOL = 1,空闲时刻是高电平

相位(CPHA)指的是采样时刻。比如是选择下降沿发送数据,还是上升沿发送数据。CPHA = 0,第一个跳变沿接收;CPHA = 1,第一个跳变沿发送。

2、四种工作模式

极性的两种情况和相位的两种情况,两两组合,便有了现在的四种SPI 工作模式

① 时钟空闲时刻为低电平(CPOL = 0)

上升沿发送(CPHA = 0):

上升沿接收(CPHA = 1):

② 时钟空闲时刻为高电平(CPOL = 1)

上升沿发送(CPHA = 0):

上升沿接收(CPHA = 1):

猜你喜欢

转载自blog.csdn.net/challenglistic/article/details/131570686