SPI协议
串行外设接口(SPI) Serial Peripheral Interface
概念
是微控制器与外围IC之间的最广泛使用的接口之一,这些外围IC如传感器,ADC,DAC,移位寄存器,SRAM等。
特点
SPI是一个同步的,基于全双工主从的接口。来自主机或从机的数据在时钟的上升沿或下降沿同步。主机和从机都可以同时传输数据。SPI接口可以是3线或4线。
本篇笔记介绍流行的4线SPI接口。
接口
-
4线SPI器件具有四个信号:
- 时钟(SPI CLK,SCLK) -> 提供时钟脉冲
- 片选(CS) -> 预先规定使能信号时芯片信号才有效
- 主机输出,从机输入(MOSI)
- 从机输出,主机输出(MISO)
产生时钟信号的设备称为主机。主机和从机之间传输的数据与主机产生的时钟同步。与I 2 C接口相比,SPI器件支持更高的时钟频率。用户应查阅产品数据表以获取SPI接口的时钟频率规范。
SPI接口只能有一个主机,也可以有一个或多个从机。如下图通过片选CS使能来选择控制多个从机。
来自主机的芯片选择信号用于选择从机。这通常是低电平有效信号,并被拉高以使从机与SPI总线断开连接。当使用多个从机时,需要从主机为每个从机提供单独的芯片选择信号。
MOSI和MISO是数据线。MOSI将数据从主设备传输到从设备,而MISO将数据从从设备传输到主机。
数据传输
要开始SPI通信,主机必须发送时钟信号并通过使能CS信号来选择从机。通常,片选是低电平有效信号。
SPI是一个全双工接口。主机和从机都可以分别通过MOSI和MISO线路同时发送数据。
SPI以一个个bit数据来传输的。对主机来说,上升沿为写一位,下降沿为读一位(模式0/3)。
SPI的四种模式
SPI Mode | CPOL | CPHA |
Mode 0 | 0 | 0 |
Mode 1 | 0 | 1 |
Mode 2 | 1 | 0 |
Mode 3 | 1 | 1 |
总的来说:
- CPOL表示时钟的初始状态。
- CPOL=0,初始状态为低电平;CPOL=1,SCK为高电平。
- CPHA表示相位,表示什么时候采样数据。
- CPHA=0,第一个时钟沿采样数据,CPHA=1,第二个时钟沿采样数据。
一般常用模式0和3,即时钟上升沿采集数据;具体情况根据芯片手册(外接设备)而定。
用途
SPI协议主要用于短距离(<1M)的通信系统中,特别是嵌入式系统,比如以下芯片:
- 存储器:RAM,EEPROM,Flash等
- 数模转换:A/D,D/A转换器等
- 驱动接口:LED显示驱动器、I/O接口芯片、UART收发器等
参考文章:
https://www.analog.com/en/analog-dialogue/articles/introduction-to-spi-interface.html#
Github地址:https://github.com/kumataahh