串行外围设备接口(Serial Peripheral interface)是高速、全双工、同步的通讯总线。
全双工:两台设备同时进行双向数据传输。
SPI的缺点:没有指定的流控制,缺少应答机制确认是否接收到数据。
串口流控(CTS/RTS):由于两个设备通信时,处理速度不同,导致一方缓存区满时丢失数据,串口流控就是在数据处理不过来时发送“不再接收”的信号,发送端直到收到“继续发送”时才继续发送数据。
SPI通信的特点:
一、采用主-从模式(Master-Slave) 控制
两个SPI设备通信时必须由主机来控制从机,主机通过向从机提供时钟和片选来控制多个从机,从机设备的时钟必须由主机提供。
二、采用同步方式(Synchronous)传输数据
主机会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse),时钟脉冲组成了时钟信号(Clock Signal) ,时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。
数据交换:SPI设备间的数据传输被称作数据交换,因为SPI设备不能仅作为发送者/接收者。在读取一个数据的同时必须发送一个数据。
三、工作机制
SSPBUF:指SPI设备中的内部缓冲区,物理上以FIFO的形式,用来在传输中临时存储数据。
FIFO(First in First out):
(1)对连续的数据流进行缓存,防止在进机和存储操作时丢失数据。
(2)数据集中起来进行进机和存储,可以避免频繁的总线操作,减轻CPU负担。
(3)允许系统进行DMA操作,提高数据的传输速度
DMA(Direct Memory Access)直接存储器访问:DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。
SSPSR:指 SPI 设备里面的移位寄存器,它的作用是根据设置好的数据位宽(bit-width) 把数据移入或者移出 SSPBUF。
Controller:泛指 SPI 设备里面的控制寄存器,可以通过配置它们来设置 SPI 总线的传输模式。
SPI引脚:
SCK:主要的作用是主设备往从设备传输时钟信号, 控制数据交换的时机以及速率。
SS/CS:用于主设备片选从设备,使被选中的从设备能够被主设备所访问。
SDO/MOSI:在主设备上输出,在从设备上输入。
SDI/MISO:在主设备上输入,在从设备上输出。