SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间,要求通讯速率较高的场合。
SPI物理层
上图中下面是作为SPI通信的主机,上面可以挂载不同的从机,同IIC一致,总线上是可以挂载很多设备的
SS线:每个从设备都有独立的这一条SS信号线,本信号线独占主机的一个引脚,即有多少 个从设备,就有多少条片选信号线.I2C 协议中通过设备地址来寻址,选中总线上的某个设备并与其进行通讯;而SPI协议中没有设备地址,它使用SS信号线来寻址,当主机要选择从设备时,把该从设备的SS 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯.所以SPI通讯以SS线 置低电平为开始信号,以SS线被拉高作为结束信号,SS线通常称为片选信号线,也称为NSS,CS
SDA:时钟信号线,用于通讯数据,它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如STM32的SPI时钟频率最大为fpclk/2,pclk为APB2时钟两个设备之间通讯时,通讯速率受限于低速设备,SPI1在APB2时钟线上,SPI2,SPI3在APB1时钟线上
MOSI (Master Output,Slave Input):主设备输出/从设备输入引脚,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
MISO(Master Input,Slave Output):主设备输入/从设备输出引脚,主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。</