1、SPI简介
SPI 全称是 serial peripheral interface ,串行外围设备接口。是 Motorola 首先在其MC68HCXX系列处理器上定义的。
SPI 接口常用的场景,SPI Flash , SPI EEPROM , AD转换器, 实时时钟等外设。
SPI 是一种高速的 (有的设备可达50Mbps) ,全双工,同步的通信总线。
SPI 用四根线,节约了芯片的管脚。
2、SPI 通信时的角色-主从
主从模式,在通信的过程中,输出时钟的是 master , 没有时钟输出的是 slave .
3、SPI 连接方式
SPI接口可以是3线式或4线式。本文重点介绍常用的4线SPI接口。
4线SPI器件有四个信号:
- 时钟(SPI CLK, SCLK)
- 片选(CS)
- 主机输出、从机输入(MOSI)
- 主机输入、从机输出(MISO)
主设备对应SoC芯片中的SPI控制器,通常,一个SoC中可能存在多个SPI控制器,如上图所示,SoC芯片中有3个SPI控制器。每个SPI控制器可以连接多个SPI从设备,每个从设备有各自独立的CS引脚。
每个从设备共享另外三个信号引脚:SCLK、MISO、MOSI。任何时刻,只有一个CS引脚处于有效状态,与该有效CS引脚连接的设备此时可以与主设备(SPI控制器)通信,其它的从设备处于等待状态,
并且它们的3个引脚必须处于高阻状态。
4、SPI 的4种通信模式
针对时钟相位CPHA(0或1)和时钟极性CPOL(0或1)的不同组合,将spi分成四种模式。
CPOL表示当空闲时(没有进行数据传输)时钟信号的电平,CPOL=0表示低电平,CPOL=1表示高电平。
每个时钟周期都有两次电平的跳变,上升沿和下降沿,CPHA就表示在每个时钟周期里是第一个边沿采样数据还是第二个边沿采样数据,
具体第一个边沿或者第二个边沿是上升沿还是下降沿则由CPOL决定。看下面这张图就明白了。蓝色箭头表示对数据进行采样。
SPI从设备,具体是什么模式,相关的datasheet中会有描述,需要自己去datasheet中找到相关的描述,关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL是0还是1;
然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以推算出CPHA是0还是1了。