SPI介绍

@

前言

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议,常见的有EEPROM、FLASH、AD转换器网络控制器、LCD显示驱动器、A/D转换器和MCU等。

组成结构

SPI系统可直接与各个厂家生产的多种标准外围器件接口,它只需4条线:

  • 串行时钟线(SCLK):Serial Clock 串口时钟,作为主设备的输出,从设备的输入。
  • 主机输入/从机输出数据线(MISO):Master input slave output 主设备输入/从设备输出引脚。
  • 主机输出/从机输入数据线(MOSI):Master output slave input 主设备输出/从设备输入引脚。
  • 低电平有效的从机选择线(NSS):Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

SPI是一个同步的数据总线,也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。
时钟是一个振荡信号,它告诉接收端在确切的时机对数据线上的信号进行采样。

接线方式

img

时钟频率

SPI总线上的主机必须在通信开始时候配置并生成相应的时钟信号。在每个SPI时钟周期内,都会发生全双工数据传输。
主机在MOSI线上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它。
就算只进行单向的数据传输,也要保持这样的顺序。这就意味着无论接收任何数据,必须实际发送一些东西!在这种情况下,我们称其为虚拟数据;
从理论上讲,只要实际可行,时钟速率就可以是您想要的任何速率,当然这个速率受限于每个系统能提供多大的系统时钟频率,以及最大的SPI传输速率

工作模式

模式类型

时钟极性 (CPOL)与时钟相性(CPHA)

  • CPOL=0,idle时为低电平
    对于CPHA=0,表示第一个边沿采样, 第一个边沿就是从低变到高,是上升沿,所以是上升沿采样

img

对于CPHA=1,表示第二个边沿采样, 第二个边沿就是从高变到低,是下降沿,所以是下降沿采样

img

  • CPOL=1,idle时为高电平
    对于CPHA=0,表示第一个边沿采样, 第一个边沿就是从高变到低,是下降沿,所以是下降沿采样

img

对于CPHA=1,表示第二个边沿采样, 第二个边沿就是从低变到高,是上升沿,所以是上升沿采样

img

SPI模式 CPOL CPHA 空闲时SCK时钟 采样时刻
0 0 0 低电平 第一个边沿
1 0 1 低电平 第二个边沿
2 1 0 高电平 第一个边沿
3 1 1 高电平 第二个边沿

模式选择

从机通常外界SPI协议通信的芯片,比如说W25Q64(flash)芯片,OLED屏等,
很多从机是没有CPOL和CPHA引脚的,所以要通过数据手册,查看时序图去分析是用什么模式,如果模式不对,数据传输就会有问题。

传输流程

  • 主机先将NSS信号拉低,这样保证开始接收数据。
  • 接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。
    由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度(稍后我们将讨论选择合适的时钟边沿和速度)。
  • 主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机。
  • 主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送。

优缺点

优点 缺点
支持全双工,push-pull的驱动性能相比open-drain信号完整性更好; 相比IIC多两根线
支持高速(100MHz以上) 没有寻址机制,只能靠片选选择不同设备
协议支持字长不限于8bits,可根据应用特点灵活选择消息字长 没有从设备接受ACK,主设备对于发送成功与否不得而知
硬件连接简单 典型应用只支持单主控
posted @ 2022-11-01 10:24  啊唯0o  阅读(488)  评论(0编辑  收藏  举报