SPI(Serial Peripheral Interface)即串行外围设备接口,是一种高速的、全双工、同步的通信总线,一般通信由MISO、MOSI、SCLK、CS四条信号线组成。

1. 通信线介绍

(1)MISO(master input slave output)即:主设备输入,从设备数据输出。

(2)MOSI(master output slave input),即:主设备数据输出,从设备数据输入。

(3)SCLK时钟信号,由主设备产生。

(4)CS:从设备片选信号,由主设备控制。

2. SPI 通讯工作流程

主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个字节来引发从机的传输。

4. SPI 通讯相关配置

串行同步时钟极性(CPOL=Clock Polarity)和时钟相位(CPHA=Clock Phase)可根据具体需要进行配置,因此总共有四种组合。

Mode 0

CPOL   = 0

CPHA=0

Mode 1

CPOL=0

CPHA=1

Mode 2

CPOL=1

CPHA=0

Mode 3

CPOL=1

CPHA=1

(1)CPOL表示当SCLK空闲时,其电平的值是低电平0还是高电平1。

若CPOL=0,串行同步时钟的空闲状态为低电平;若CPOL=1,串行同步时钟的空闲状态为高电平。

(2)CPHA表示数据采样在第几个边沿,第一个还是第二个。

若CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;若CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样;

注意:SPI 主模块和与之通讯的外设设备时钟极性应该一致。

5. SPI 读写时序图(Mode0)

读时序

写时序

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:MCU探讨,接口协议