1.基本概念
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。
2.基本框图
SPI需要4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。
2.1 SPI总线的数据交换
SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据(不管主设备还是从设备), 相当于该设备有一个 bit 大小的数据被交换了。SPI移位寄存器高位先出。SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。
3.SPI 4种时钟时序
CPOL(clock polarity) : 时钟极性,如果CPOL为1,SCLK脚空闲时为高电平,否则SCLK脚空闲时为低电平。
CPHA(clock phase) :时钟相位,如果CPHA为高电平,MISO,MOSI上的数据在SCLK周期的第二个边沿被采样锁存;如果CPHA为低电平,MISO,MOSI上的数据在SCLK周期的第一个边沿被采样锁存。
参考文档
[1] https://www.cnblogs.com/aaronLinux/p/6219146.html