串行外设接口(Serial Peripheral Interface Bus,SPI),是一种用于短程通信的同步串行通信接口规范,主要应用于单片机系统中。类似I²C。 这种接口首先被Motorola(摩托罗拉)公司开发,然后发展成了一种行业规范。典型应用包含SD卡和液晶显示器。 SPI设备之间使用全双工模式通信,包含一个主机和一个或多个从机。主机产生待读或待写的帧数据,多个从机通过一个片选线路 决定哪个来响应主机的请求。 有时SPI接口被称作四线程接口,SPI准确来讲称为同步串行接口,但是与同步串行接口协议(SSI)不同,SSI是一个四线程 同步通信协议,但是使用差分信号输入同时仅提供一个单工通信信道。
SPI应用多为EEPROM, FLASH,实时时钟,AD转换
SPI:告诉,全双工,同步的
- SCLK(Serial Clock):串行时钟,由主机发出
- MOSI(Master Output,Slave Input):主机输出从机输入信号,由主机发出
- MISO(Master Input,Slave Output):主机输入从机输出信号,由从机发出
- SS(Slave Selected):片选信号,由主机发出,低电平有效
主机和从机都有一个串行移动寄存器,主机通过向他的SPI串行寄存器写入一个字节来发起一次传输,寄存器通过MOSI信号线将字节传输给从机。从机将自己的移位寄存器的内容通过MISO信号线传送给主机。这样两个移位寄存器的内容就交换了。外设的读写时同步完成的
主要特点:
可以同时发送和接受串行数据,可以当做主机或者从机来工作;提供频率可编程时钟,发送结束中断标志,写冲突保护,总线竞争等。
时钟极性和时钟相位是可以设置的
CPOL时钟极性。
cpol=0串行同步时钟的空闲状态为低电平
cpol=1-串行同步时钟的空闲状态为高电平
cpha时钟相位能够配置两种不同的传输协议之一进行数据传输
cpha=0在串行同步时钟的第一个跳变数据被采样
cpha=1在串行同步时钟的第二个跳变沿数据被采样