重度理解SPI总线
本文是在参考了许多文章之上总结出来的(文章最后会附上参考文章的出处),作者呼吁保护原创权益,希望广大电子爱好者在学习知识的同时珍惜作者的劳动成果。
-----NJ_BIGCAT
一、概念(什么是SPI)
设备与设备之间通过某种硬件接口通讯,目前存在很多种接口,SPI接口是其中的一种。SPI是串行外设接口(Serial Peripheral Interface)的缩写,是Motorola公司推出的一种同步串行接口技术。SPI是一种高速的,全双工,以同步串行方式的通信总线,SPI接口只占用四根线:SCK、MOSI、MISO、SS。
SPI中分Master主设备和Slave从设备,数据发送都是由Master控制。一个master可以接一个或多个slave,常见用法是一个Master接一个slave。
二、用途(用来干什么)
SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI主设备(Master)与一个SPI从设备(slave,即上述的那些Flash,ADC等)进行通讯。
三、SPI工作原理
(1)4根线:
SCLK:Serial Clock 串行时钟,由主设备提供(有的叫SCK)
MISO:Master In Slave Out 主设备输入,从设备输出(有的叫SDI,串行数据输入)
MOSI:Master Out Slave In 主设备输出,从设备输入(有的叫SDO,串行数据输出)
SS : Slave Select 选中从设备,片选(有的叫CS)
(2)工作原理:
通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常通讯。