SPI(串行外围设备接口),SPI接口主要应用于EEPROM,FLASH,各种传感器,AD转换器等。它是一种高速的,全双工,同步的串行通信总线。
物理层:
1个SPI设备一般有4条线SCK:时钟信号线,用于通讯数据同步。它由通讯主机(MCU)产生,决定了通讯的速率。不同的设备支持的最高时钟频率不一样,如STM32的SPI时钟频率最大为fpck/2。两个设备之间通讯时,通讯速率受限于低速设备。MOSI:主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,这条线上数据的方向为主机到从机。
MISO:主设备输入/从设备输出引脚,主机从这条信号线读入数据,从机的数据由这条信号线输入到主机。在这条线上数据的方向为从机到主机。
SS:片选线或者使能线。有时候也称NSS或CS,SPI通信时各个设备是没有地址的,主机和哪个从机通讯,就把谁的SS置为低电平。
协议层:
STM32F103中SPI通信:
- STM32F103系列提供了
3个SPI,SPI1挂在APB2总线,SPI2/3挂在APB1总线。用的比较多还是双线全双工模式。 - STM32 的 SPI 外设可用作通讯的主机及从机,支持最高的 SCK 时钟频率为 fpclk/2 (STM32F103 型号的芯片默认fpclk1为36MHz,fpclk2为72MHz。),完全支持 SPI 协议的 
4种模式,数据帧长度可设置为8位或16位,可设置数据 MSB 先行或 LSB 先行(高位先行还是低位先行)。它还支持双线全双工、单线双向以及单线模式。 


