一,IIC与SPI对比
1. IIC 是半双工通讯,无法同时收发信息;SPI 是全双工通讯,可以同时收发信息;
2. IIC 通讯协议较复杂,而 SPI 通讯协议较简单;
3. IIC 需要通过地址选择从机,而 SPI 只需一个引脚即可选中从机;
4. IIC 通讯速率一般为 100kHz 左右,而 SPI 可以达到 50MHz ;
5. IIC 需要的通讯线较少,而 SPI 需要较多。
二,什么是SPI?
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如 AT91RM9200 。(360百科)
三,SPI物理架构
SPI 总线包含 4 条通讯线,分别为 SS、SCK、MOSI、MISO。它们的作用介绍如下 :
(1) MISO – Master Input Slave Output,主设备数据输入,从设备数据输出
(2) MOSI – Master Output Slave Input,主设备数据输出,从设备数据输入
(3) SCK – Serial Clock,时钟信号,由主设备产生
(4) CS – Chip Select,片选信号,由主设备控制
STM32F1 系列芯片有 3 个SPI 接口。
四,SPI工作原理
类似转珠子
简略图:
五,SPI工作模式
时钟极性(CPOL):
没有数据传输时时钟线的空闲状态电平
0:SCK在空闲状态保持低电平
1:SCK在空闲状态保持高电平
时钟相位(CPHA):
时钟线在第几个时钟边沿采样数据
0:SCK的第一(奇数)边沿进行数据位采样,数据在第一个时钟边沿被锁存
1:SCK的第二(偶数)边沿进行数据位采样,数据在第二个时钟边沿被锁存
模式0时序图:
模式3时序图: