(学习笔记) SPI通信协议

概念

SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种通信接口技术。

SPI,是一种高速的,全双工,同步串行通信总线,并且在芯片的管脚上只占用四根线(MISO,MOSI,NSS,SCK)。

主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

引脚

SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。4条信号线分别为:

1) SCK:串行时钟,用来控制数据交换的时机和速率,由主机提供;
//serial clock output for masters and input for slaves
2) MOSI:主机输出从机输入数据线;
3) MISO:主机输入从机输出数据线;
4) NSS:从机选择线,低电平有效,由主机控制。

在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机(也就是任何时刻只能有一对主从机在通信)。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。

引脚连接

(学习笔记) SPI通信协议_第1张图片

从图中看到,主机的NSS信号为高电平,从机的NSS信号被主机片选。

原理

(学习笔记) SPI通信协议_第2张图片
(学习笔记) SPI通信协议_第3张图片

如图:
1.MISO引脚相连接,MOSI引脚相互连接。这样,主从设备之间串行地传输且通信总是由主设备发起
2.主设备通过MOSI脚把数据发给从设备的同时,从设备通过MISO脚传回数据给主设备。这个全双工的过程是由时钟信号SCK控制同步的。
3.时钟信号由主设备通过SCK脚提供。

框图

(学习笔记) SPI通信协议_第4张图片
(学习笔记) SPI通信协议_第5张图片

简析:
1. 从图中可以具体的看出SCK信号,由波特率发生器产生,传给从机和自己的通信控制寄存器中。
2. 波特率的大小由SPL_CR1寄存器的BR2,BR1,BR0三个位决定。
3. 通信控制由SPL_CR1寄存器的MSTR,SSM,SSI三个位和NSS控制,通信控制控制通信过程中的错误如CRC校验错误,模式错误,溢出。
4. 主控制电路控制,输入输出的逻辑门电路打开与关闭。

主从选择

NSS模式可以由硬件或软件设置。

软件设置(内部至高或低):
主机设置:
(学习笔记) SPI通信协议_第6张图片

从机设置:
(学习笔记) SPI通信协议_第7张图片
这里写图片描述

即SSM至为1时,外部NSS引脚置为它用,内部NSS引脚可以通过SSI位来驱动。

时钟信号的相位和极性

1.SPI接口可由CPOL和CPHA设置4种不同传输格式时序

2.SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为’1’时,空闲时应上拉SCK为高电平;CPOL为’0’时,空闲时应下拉SCK为低电平)。

3.CPHA=0时,数据出现快于时钟的第一个边沿。CPHA=1时,数据出现与时钟的第一个边沿同步。

如果CPHA(时钟相位)位被置’1’,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。
如果CPHA位被清’0’,SCK时钟的第一边沿(CPOL位为’0’时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。

这么多模式,主要是为了配合外部芯片。

(学习笔记) SPI通信协议_第8张图片

(学习笔记) SPI通信协议_第9张图片

(学习笔记) SPI通信协议_第10张图片

数据帧格式

这里写图片描述

状态标志

(学习笔记) SPI通信协议_第11张图片

SPI中断

(学习笔记) SPI通信协议_第12张图片

配置过程

(学习笔记) SPI通信协议_第13张图片

数据的传输过程

(学习笔记) SPI通信协议_第14张图片

你可能感兴趣的:(STM32)