SPI 就是串行外围设备接口。SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线:
- MISO 主设备数据输入,从设备数据输出;
- MOSI 主设备数据输出,从设备数据输入;
- SCLK 时钟信号,由主设备产生;
- CS 从设备片选信号,由主设备控制; (通常用软件实现)
SDI/SDO/SCLK: 通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输;
CS: 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效,这就允许在同一总线上连接多个SPI设备成为可能。
因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,即可暂停数据传送;
另外由于SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。