·SPI,(serial peripheral interface),字面翻译是串行外设接口,是一种通用的数据总线,适用于主控和外挂芯片之间的通信,与IIC应用领域非常相似。
·IIC无论是在硬件电路还是在软件时序设计的都是较为复杂的,硬件上需要配置成开漏外加上拉的模式,软件上需要一根数据线兼顾数据收发、应答位收发、寻址机制的设计等等,使得IIC的性价比极高,可以在消耗最低硬件资源的情况下实现最多的功能。在硬件上无论挂载多少个设备(128最多)都只需要两根通讯线,在软件上数据双向通信、应答位都可以实现。IIC既实现硬件上最少的通信线,又实现软件上最多的功能。
但是IIC的缺点在于:IIC开漏外加上拉电阻的电路结构,使得通讯线高电平的驱动能力较弱,会导致通信线由低电平到高电平的时候上升沿会比较长,会最大限制IIC的通信速度,所以IIC的标准模式只有100KHz的时钟频率,快速模式也只有400KHz,虽然后边改进电路设计出了高速模式可达3.4MHz,但是普及程度不高,一般情况下认为IIC时钟速度最高400KHz,相比SPI慢很多。
·SPI传输比IIC更快,SPI协议没有严格规定最大传输速度,最大传输速度取决于芯片厂商的设计需求,比如 W25Q64 存储器芯片,手册中写最大时钟频率可达80MHz,比stm32f1的主频还高。SPI硬件通信线比较多,通信过程中常有资源浪费的现象。
·SPI有四根通信线,分别是SCK(serial CLOCK串行时钟线)、MOSI(master output slave input主机输出从机输入)、MISO(master input slave output主机输入从机输出)、SS(slave select从机选择)
·通信线名字的额外表述方式:
SCK:SCLK、CLK、CK
MOSI:DO( DATA OUTPUT )
MISO:DI( DATA INPUT )
SS:NSS( NOT SLAVE SELET )、CS( CHIP SELECT )