SPI是“Serial Peripheral Interface”的缩写,即“串行外设接口”,是摩托罗拉公司推出的一种串行接口通信协议。
接线的示意图:
SPI总线的原理可以借鉴I2C,两者不同之处有以下几点:
(1)I2C只有两根信号线,一条数据线SDA,一条时钟线SCL;SPI有四根信号线:MISO、MOSI、SCK和NSS。
(2)I2C通信是半双工的,SPI通信是全双工的。即I2C不能收发数据同时进行,而SPI可以。
(3)I2C依靠地址来选取从设备,且每次收发都有应答信号;SPI依靠片选信号来选取从设备,没有应答信号,随便收发。
工作过程:
以从机的片选线NSS被拉低开始,每个时钟周期进行一次数据触发和采样,最后当NSS被拉高后,通信结束。
上图展示的工作模式是SCK上升沿触发,下降沿采样。SPI实际有四种工作方式,取决于“时钟极性CPOL”和“时钟相位CPHA”的状态,如下。
SPI四种工作模式的主要区别是总线空闲时SCK的状态及数据采样时刻。
如果CPOL被清0,则SCK在空闲状态保持低电平,反之被置1则保持高电平;如果CPHA位被清0,则在SCK每个时钟周期的第1个边沿(奇数边沿)进行数据位采样,反之被置1则在SCK每个时钟周期的第2个边沿(偶数边沿)采样。
下表展示了SPI四种工作模式的状态:
数据传输时从最高位开始,一位一位传输。
参考文章:
https://zhuanlan.zhihu.com/p/27376153
手机扫一扫
移动阅读更方便
你可能感兴趣的文章