SPI总线 简介
(1)SPI(Serial Peripheral Interface)串行外设接口:一种高速的,串行同步全双工的通信总线。
并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。
eg:AT91RM9200,EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间进行数据的通信。
注:SPI不是国际标准而是实际应用过程中产生的一种行业标准。IIC是规范为国际标准的通信协议。
(2)SPI总线 -采用四条信号线来进行通信:
- MOSI(主发从收):主设备输出与从设备输入线(Master Out Slave In)
- MISO(从发主收):主设备输入与从设备输出线(Master In Slave Out)
- SCK(串行同步时钟信号线):用来控制数据交换的状态和速率,由主机提供(Serial Clock)
- SS(外围设备片选信号线):由主机控制与从机相连的NSS何时拉为低电平。(Slip Selection)
SS线:低电平有效,引脚为0:表示对应的从机被选中
(3)SPI总线 -主机和从机通信状态
-
SPI总线的主机和从机都有自己的一个移位寄存器,当主机向自己的移位寄存器写入数据时,数据会通过MOSI信号线写入到从机的移位寄存器;同时,从机移位寄存器里的数据,通过MISO信号线写入到主机的移位寄存器。这样,主机和从机就完成了数据的一次交换。
-
主机通过片选线来确定要通信的从机,在同一时刻只能有一对主机和从机处于通信状态。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。
(4)SPI总线 -应用场景
SPI总线驱动音频、驱动norflash、TF卡
通过SPI总线将外设连接到CPU中,以实现CPU和外设、外设和外设之间的数据交互。
SPI 四种通信类型
时钟极性(Clock Polarity):在时钟线空闲状态下时,SCK默认的初始电平状态:
- 高电平时:CPOL = 1
- 低电平时:CPOL = 0
在产生起始信号S时,时钟线SCK会出现跳变:上升沿 / 下降沿
时钟相位(Clock Phase):确定在一个时钟周期内SCK跳变的哪一个边沿来进行数据采样,
也就是边沿触发时的采样条件:
- CPHA = 0:表示奇数边沿采样
- CPHA = 1:表示偶数边沿采样
注意:此时不区分SCK边沿是上升沿还是下降沿
时钟极性和时钟相位两两组合,即得到SPI通信的4种类型。
SPI总线时序图