SPI简介
SPI (Serial Peripheral Interface)是一种同步的串行通信接口协议,用于连接微控制器或其他外围设备。SPI协议使用四根线(时钟线、数据线、数据输入线、数据输出线)进行通信。其中,时钟线由主设备控制,数据线由主设备发送数据,数据输入线由从设备发送数据,数据输出线由从设备接收数据。SPI协议适用于需要高速传输数据的应用,如存储器芯片、传感器、显示屏等。SPI协议具有简单、低成本、高可靠性等优点,但是由于没有标准化的物理接口,所以不同设备的SPI接口可能有差异。
总的来说,SPI是一种一主多从同步串行全双工的通信方式 。
协议需要使用四根线:
(M:Master主机 S:Slave从机 I:in输入 O:out输出)
MISO:主机输入,从机输出
MOSI:主机输出,从机输入
SS:片选线
SCK:时钟线
SPI的通信原理
主设备通过控制时钟线(SCK)来生成时钟信号,控制数据传输的速率。
主设备通过数据线(MOSI)将数据发送给从设备,从设备通过数据线(MISO)将数据发送给主设备。
通信开始前,主设备通过片选线(SS)选择需要和主设备通信的从设备。当从机的片选线SS为高电平时,代表未被选中,那其MISO口被配置成高阻态(高阻态既不是高电平也不是低电平,不会影响总线上的状态,不影响主机跟其他从机的正常通信)。如果其SS为低电平,即被主机选中进行通信,其MISO口被配置为推挽输出(可以输出高电平和低电平)。
SPI通信是全双工的,主设备和从设备可以同时发送和接收数据。数据传输时,主从设备以字节交换的方式进行通信,即主设备在每个时钟脉冲上将一个比特发送到从设备,从设备在每个时钟脉冲上将一个比特发送给主设备。具体何时移入、移出数据由四种通信模式决定。
通信结束后,主设备通过片选线(SS)取消选择从设备。
字节交换原理
1.字节交换基于位交换,交换分为两步,移出和移入。
2.移出:把当前移位寄存器上的最高位写到数据线上,然后整体左移一位。
3.移入:读取数据线的状态,写到移位寄存器的最低位。(移入不改变数据线的状态)
4.每读取和发送完一个字节(8位)的数据,清空当前寄存器,写入要发送的下一个字节数据,直到片选线改变状态。
5.移入和移出的时机由时钟线控制,主机从机同步执行,双方根据设定的通信模式约定好第几个边沿一起移出,第几个边沿一起移入。
时序单元
•起始条件:SS从高电平切换到低电平
•终止条件:SS从低电平切换到高电平
CPOL:时钟极性
CPHA:时钟相位
模式0
模式1
模式2
模式3