SPI通信简介
SPI是串行外设接口的简称。SPI可以指单片机外设芯片串行扩展接口,是一种高速,全双工,同步通信总线,所以在同一时间向外设发送和接受数据。SPI没有定义速度限制。
SPI有主从两种模式,通常由主模块和多个从模块组成。主模块选择一个从模块进行同步通信,从而完成数据交换。
master(主设备):提供设备时钟;
slave(从设备):接受脉冲的设备;
SPI接口的读写操作,都是由主设备发起,当存在多个从设备时,通过各自片选信号进行处理。
SPI通信原理很简单,需要4根线,单向传输时需要三根线。
MISO:主设备输入,从设备输出;
MOSI:主设备输出,从设备输入;
SCLK:时钟信号,由主设备产生;
CS/SS:从设备使能信号,由主设备控制,一主多从。CS/SS是控制从设备是否被主设备选中的 信 号。只有信号为预先设定的从设备使能设备时,主芯片对外设的操作才有效。
通信原理
SPI主设备和从设备都有一个串行移位寄存器,主设备通过向他的SPI串行寄存器写入一个字节来发送一次性传输。
SPI数据通信的流程可以分为以下几个步骤:
1.主设备发送信号,将CS/SS拉低,启动通信。
2.主设备通过发送时钟信号,来告诉从设备进行写数据或读数据(上升沿或下降沿进行采集)他将立即读取数据线上的信号,这样就得到数据。
3.master将发送数据写到发送数据的的缓冲寄存区,缓冲区经过移位寄存器。串行移位寄存器,通过MOSI信号线将字节一位一位传给从机,通过MISO端口接受数据,然后通过移位寄存器将数据移到数据缓存区。
4.slave将自己接收到的数据,通过MISO信号线返回给主机,同时通过MOSI信号线,接受主机发送的数据。
注意:SPI只有主从模式,没有读和写的说法,外设的写操作和读操作时同时完成。若只需要进行写操作,主机只需忽略接受字节,反之,只需进行读操作,就必须由一个空字节来引发传输。也就是说,收必发,发必收。
通信特征
设备:
SPI是单主设备通信;SPI主设备想读写从设备时,首先应CS/SS有效;
接着开始工作后,相应脉冲,主设备信号MOSI实现写,MISO实现读。
设备时钟:
1.设备速率;
2.时钟极性;CKP CPOOL
3.时钟相位;CKE=0,第一个跳变沿采样; CKE=1,第一个跳变沿采样;
四种模式:
MODE 0:CKP=0,CKE=0 数据采样在上升沿,发送数据下降沿;
MODE 1:CKP=0,CKE=1 数据采样在下降沿,发送数据上升沿;
MODE 2:CKP=1,CKE=0 数据采样在下降沿,发送数据上升沿;
MODE 3:CKP=1,CKE=1 数据采样在上升沿,发送数据下降沿;
支持多从机模式(两种)
SPI优缺点:
优点:
1.可以连续传输而不会被中断;
2.没有复杂的寻址系统((I2C)需要寻址);
3,数据传输效率高;
4,MISO,MOSI分离,可以同时接收和发送;
5,传输灵活,不受位数限制;
6,硬件结构简单;
缺点:
1,无法确定是否已成功接受数据;
2,没有任何形式数据检查;
3,没有定义硬件级别的错误检查协议;