马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
SPI通信协议想必搞硬件的都听说过,它的全称是Serial Peripheral interface,串行外围设备接口,是一种全双工同步通信总线。SPI通信协议是采用主从控制模式架构的。一般会有一个Master,一个或者多个Slave。
从而在通信上可以做到一个主设备可以和多个从设备进行相应的通信而不发生混乱。 SPI是不支持多主的,只有一个主Master,它的组成如下图所示,一个主模块,多个从模块,并且提供时钟信号的一个是主设备Master,而从设备接收CLK时钟信号,同时一些其他的操作如进行接口的读写操作,也是由Master发起,然后Master通过片选信号CS选择其中一个从设备进行同步通信,这样就完成了一次数据的通讯。
再来看一下SPI的信号组成,它的组成有4根信号线,这四根信号线分别是时钟信号SCLK,主设备输出从设备输入信号MOSI,主设备输入从设备输出MISO以及片选信号CS。 SCLK:时钟信号,由Master发出的同时时钟信号,作用是用于同步数据 MOSI:用于传输数据,从主设备中输出,从设备输入 MISO:用于传输数据,与MOSI相反,从从设备中输出,主设备输入 CS:片选信号,用于选择从设备,只有当CS信号有效时(CS是低电平有效),对于从设备的操作才能够成功进行
那么SPI的整个传输过程是怎样的呢? 对于SPI的传输过程,首先就是进行从设备的选择,也就是通过片选信号来选择需要进行通信的从设备,拉低CS片选信号,从而与相应的从设备建立通讯。然后主设备发出时钟信号到从设备,从而使得两者有同步时钟参考,其中时钟信号的频率是由主设备的时钟配置决定的。
有了CS片选选择以及时钟信号的同步,就可以进行正式的数据传输了,主设备将需要发送的数据通过MOSI发送到从设备,同时从设备也可以反过来通过MISO发送数据到主设备。 同时需要认识到,SPI是有4种工作模式的,其不同是时钟信号的有效范围以及数据采样时刻,它主要是由时钟极性CPOL以及时钟相位CPHA两组合决定的,而实际通信时,主设备和从设备是需要同时工作在同一模式下的,这一点需要注意到。 具体内部实现是怎样的呢? CPOL=0的时候,表示的是当SCLK=0时处于空闲状态,所以拉高电平SCLK才是有效的 CPOL=1的时候,表示的是当SCLK=1时处于空闲态,所以拉低电平SCLK才是有效的 CPHA=0的时候,表示的是在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样,在第二个边沿发送数据。 CPHA=1的时候,表示的是在时钟的第二个跳变沿(上升沿或下降沿)金属数据采样,在第一个边沿发送数据。 所以SPI的工作模式就是根据CPOL的状态和CPHA的状态分出四种模式状态,如下图所示:
这个状态下,空闲态时,SCLK是低电平,数据采样是在第一个边沿,它是SCLK从低电平到高电平的跳变,这个模式下数据采样就是在上升沿,数据发送是在下降沿。 这个状态下,空闲态时,SCLK是低电平,数据采样是在第二个边沿,它是SCLK从高电平到低电平的跳变,这个模式下数据采样就是在下降沿,数据发送是在上升沿。 这个状态下,空闲态时,SCLK是高电平,数据采样是在第一个边沿,它是SCLK从高电平到低电平的跳变,这个模式下数据采集就是在下降沿,数据发送是在上升沿。 这个状态下,空闲态时,SCLK是高电平,数据采样是在第二个边沿,它是SCLK从低电平到高电平到跳变,这个模式下数据采集就是在上升沿,数据发送是在下降沿。 在通信速度上,不同于I2C有明确的速率范围比如低速100Kbit/s,快速400Kbit/s,高速3.4Mbit/s。SPI的通信速率上是没有一个固定的传输速率规定的,有些SPI的传输速率是可以达到50Mbps以上的。 SPI信号协议优点与缺点: 优点: a, 可以同时发送和接收数据 b,数据传输无起始位和停止位,所以数据位可以连续传输而不会被中断 c,数据传输速率比I2C更快,并且也没有I2C那样的复杂的从设备寻址系统 d,数据传输更加灵活,不仅限于8位,可以说任意大小的字
缺点: a,相比于UART与I2C,使用了更多的信号线 b,对于数据的传输成功无法确认,也就是无法确认是否已成功接收到了数据 c,比起I2C支持的多主多从模式,SPI只支持单主多从的模式 d,相比于RS232,RS485协议,SPI只支持板内短距离传输。
对于SPI信号的质量标准也是需要重点考量的,包括像SPI总线的高低电平是否符合要求,时钟的频率,各信号的建立时间保持时间,上升时间下降时间等等都需要看实际设计效果是否满足规格书要求,确保满足基本需求。
|