SPI总线 三线制和 四线制的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPI总线 三线制和 四线制的区别相关的知识,希望对你有一定的参考价值。

参考技术A

SPI总线三线制和四线制的区别:

1、方式不同

三线制指的是CS,CLK,MOMI,是半双工方式;四线制指的是 CS,CLK,MOSI和MISO,是全双工方式。

2、收和发的数据线不同

三线制收和发的数据线都在同一根线MOMI上;四线制收和发的数据线分开。

3、结构不同

三百线制带片选;四线制不带片选。

扩展资料:

SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。

如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。

如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。

模拟SPI协议时序

  SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制。

  在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE)。

  所以,在以下的介绍中,都是默认单片机是主机模式进行说明的。

  SPI总线相对于IIC总线,无总裁机制,无应答机制。

  SPI常用的四线制分别是,MISO(主入从出)、MOSI(主出从入)、SCK(同步时钟线)、CS(片选线,也有是NSS)。

  主从机之间典型的接线方式如下所示:

  

 

  按照时钟线的时钟极性(CPOL)和相位(CPHA),将SPI总线区分成4种工作方式。

  具体区分如下:

  当时钟极性(CPOL==0)时:表示时钟线空闲状态为低电平;

  当时钟极性(CPOL==1)时:表示时钟线空闲状态为高电平;

  当时钟相位(CPHA==0)时:表示数据在时钟的第一个边沿输出;

  当时钟相位(CPHA==1)时:表示数据在时钟的第二个边沿输出;

  如上所示,CPOL和CPHA两两组合,可表示4种工作方式,假设配置CPOL=0,CPHA=0,表示数据线在空闲时处于低电平,主机数据在时钟的第一个边沿(也就是上升沿被输出),在第二个边沿(也就是下降沿被读入)。

  需要注意的是,主机的配置必须根据从机设计,例如,从机是上升沿输出,下降沿输入。那么,主机在配置的过程当中,必须采用上升沿输出,下降沿输入,即SPI0工作方式。

  采用I/O端口模拟SPI协议时序,可以很好地加深对于SPI总线的理解。

  SPI写时序模拟:

 1 void SPI_write(unsigned char dat)
 2 {
 3         unsigned char temp;
 4         for(temp=0x80;temp!=0;temp>>=1)
 5         {
 6                 SCK=0;
 7                 if(temp&dat==0)
 8                 {
 9                         MOSI=0;
10                 }
11                 else
12                 {
13                         MOSI=1;
14                 }
15                 SPI_delay(); //让MOSI稳定
16                 SCK=1;
17         }
18 }

  SPI读时序模拟:

 1 unsigned char SPI_read(void)
 2 {
 3         unsigned char temp;
 4         unsigned char dat;
 5         for(temp=0x80;temp!=0;temp>>=1)
 6         {
 7                 SCK=1;
 8                 SPI_delay();  //让SCK稳定
 9                 SCK=0;
10                 if(MISO==1)
11                 {
12                         dat|=temp;
13                 }
14                 else
15                 {
16                         dat&=~temp;
17                 }
18         }
19         return dat; 
20 }

 

  

 

以上是关于SPI总线 三线制和 四线制的区别的主要内容,如果未能解决你的问题,请参考以下文章

SPI总线协议

Linux SPI总线 - 概述

Linux SPI总线和设备驱动架构之一:系统概述转

Linux SPI总线和设备驱动架构之一:系统概述

SPI口四线制引脚都有哪些

SPI入门基础