目录
一、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,所以需要决定先传送高位还是低位。
发送端发送信号:当时钟脉冲达到下降沿的时候,这段时间是发送数据的时间。
接收端接收信号:当时钟脉冲到达上升沿的时候,这段时间是接收数据的时间。
因此,SPI 可以在一个时钟周期内就完成数据的收发,可以无限制的连续发送和接收数据。
传输完毕或者继续传输
一个字节传输完成后无需应答,可以直接开始下一个字节的传递,也可以就此中止传输(或者额进入等待状态)。SPI总线没有起始或者结束信号。
三、SPI 的四种工作模式
1、极性和相位
SPI 能在一个时钟周期内完成数据的收发,关键就是在一个时钟周期的两次边沿变化时发送和接收数据。但不限于上面说的,上升沿就一定是发送,下降沿就一定是接收,这取决于极性和相位。
极性(CPOL)指的是时钟脉冲在空闲时刻的状态。CPOL = 0,空闲时刻是低电平;CPOL = 1,空闲时刻是高电平
相位(CPHA)指的是采样时刻。比如是选择下降沿发送数据,还是上升沿发送数据。CPHA = 0,第一个跳变沿接收;CPHA = 1,第一个跳变沿发送。
2、四种工作模式
极性的两种情况和相位的两种情况,两两组合,便有了现在的四种SPI 工作模式
① 时钟空闲时刻为低电平(CPOL = 0)
上升沿发送(CPHA = 0):
上升沿接收(CPHA = 1):
② 时钟空闲时刻为高电平(CPOL = 1)
上升沿发送(CPHA = 0):
上升沿接收(CPHA = 1):