SPI工作原理.docx

上传人:b****6 文档编号:8586810 上传时间:2023-01-31 格式:DOCX 页数:13 大小:698.90KB
下载 相关 举报
SPI工作原理.docx_第1页
第1页 / 共13页
SPI工作原理.docx_第2页
第2页 / 共13页
SPI工作原理.docx_第3页
第3页 / 共13页
SPI工作原理.docx_第4页
第4页 / 共13页
SPI工作原理.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

SPI工作原理.docx

《SPI工作原理.docx》由会员分享,可在线阅读,更多相关《SPI工作原理.docx(13页珍藏版)》请在冰豆网上搜索。

SPI工作原理.docx

SPI工作原理

SPI

∙  由于SPI(setialperipheralinterface)总线占用的接口线少,通信效率高,并且支持大部分处理器芯片,因而是一种理想的选择。

SPI是利用4根信号线进行通信的串行接口协议,包括主/从两种模式。

4个接口信号为:

串行数据输入(MISO,主设备输入、从设备输出)、串行数据输出(MOSI,主设备输出、从设备输入)、移位时钟(SCK)、低电平有效的从设备使能信号(cs)。

SPI最大的特点是由主设备时钟信号的出现与否来确定主/从设备间的通信。

一旦检测到主设备的时钟信号,数据开始传输。

目录

∙SPI工作方式简介

∙SPI的数据传输

∙SPI用户逻辑

∙SPI基本原理与结构

SPI工作方式简介

∙  SPI是由美国摩托罗拉公司最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口。

  SPI模式可以允许同时同步发送和接收8位数据,并支持4种工作方式:

  1.串行数据输出,对应RC5/SDO引脚;

  2.串行数据输入,对应RC4/SDI/SDA引脚;

  3.串行时钟,对应RC3/SCK/SCL引脚;

  4.从动方式选择,对应RA5/SS/AN4引脚。

  SPI模式下与之相关的寄存器有10个,其中4个是与I2C模式共用的。

  图1所示是由一个主机对接一个从机进行全双工通信的系统构成的方式。

在该系统中,由于主机和从机的角色是固定不变的,并且只有一个从机,因此,可以将主机的丽端接高电平,将从机的SS端固定接地。

  图1全双工主机/从机连接方法

  若干个具备SPI接口的单片机和若干片兼容SPI接口的外围芯片,可以在软件的控制下,构成多种简单或者复杂的应用系统,例如以下3种。

  

(1)一个主机和多个从器件的通信系统。

  如图2所示,各个从器件是单片机的外围扩展芯片,它们的片选端SS分别独占单片机的一条通用I/O引脚,由单片机分时选通它们建立通信。

这样省去了单片机在通信线路上发送地址码的麻烦,但是占用了单片机的引脚资源。

当外设器件只有一个时,可以不必选通而直接将SS端接地即可。

  图2一个主机扩展多个外围器件

  

(2)几个单片机互相连接构成多主机通信系统。

  图3所示为3个既可以当做主机也可以当做从机的单片机组成的系统。

  图3多主机通信系统连接方法

  (3)主机、从机和从器件共同组成的应用系统。

  图4所示为一个主机、一个从机和多片外设芯片组成的应用系统。

这些外设芯片有的只接收来自单片机信息,有的只向单片机提供信息,还有的既接收也发送信息。

  图4主机、从机和从器件互连

SPI的数据传输

∙  SPI主设各负责产生系统时钟,并决定整个SPI网络的通信速率。

所有的SPI设各都采用相同的接口方式,可以通过调整处理器内部寄存器改变时钟的极性和相位。

由于SPI器件并不一定遵循同一标准,比如EEPROM、DAC、ADC、实时时钟及温度传感器等器件的SPI接口的时序都有所不同,为了能够满足不同的接口需要,采用时钟的极性和相位可配就能够调整SPi的通信时序。

  SPI设各传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。

对于小于16位的数据在发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数据位屏蔽,如图1所示。

  SPI接口有主和从两种操作模式,通过MASTER/SLAVE位(SPICTL.2)选择操作模式以及SPICLK信号的来源,如图2所示。

  图1SPI通信数据格式

  图2SPI主控制器/从控制器的连接

SPI用户逻辑

∙  该模块针对用户不同的应用来设计,本质上就是用户的具体业务应用,与SPI-4接口没有直接关系。

当应用支持多个端口时,这部分就显得至关重要。

下面以支持两个端口的应用来说明用户逻辑的设计技巧。

  

(1)SinkCore的用户逻辑

  端口为两个时,用户逻辑就需要用两个不同的FIFO根据端口的地址等来分别缓存用户的两个业务数据.同时根据FIFO的情况来发出流控信息给SP14数据接口,如图1所示。

  图1SinkCeore两个端口的用户逻辑

  

(2)SourceCore的用户逻辑

  当端口为两个时,用户逻辑就需要根据流控信息和两个不同的FffiOffJ情况来做仲裁,谀定哪个用户逻辑FIFO需要发送给SPI4数据接口,如图2所示。

  图2SourceCore2个端口的用户逻辑

SPI基本原理与结构

∙串行外围设备接口(SPI)是由Motorola公司开发的、用来在微控制器和外围设备芯片之间实现数据交换的低成本、易使用接口。

与标准的串行接口不同,SPI是一个同步协议接口,全双工通信,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机产生。

接收数据的外设使用时钟对串行比特流的接收进行同步化。

其传输速度可达几Mb/s。

  SPI主要使用4个信号:

MISO(主机输入/从机输出)、MOSI(主机输出/从机输入)、SCLK(串行时钟)、

(外设片选或从机选择)。

  MISO信号由从机在主机的控制下产生。

信号用于禁止或使能外设的收发功能。

为高电平时,禁止外设接收和发送数据;

为低电平时,允许外设接收和发送数据。

图1所示是微处理器通过SPI与外设连接的示意图。

  主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。

寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机(如图2所示)。

这样,两个移位寄存器中的内容就被交换。

外设的写操作和读操作是同步完成的。

  如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

  当主机发送一个连续的数据流时,有些外设能够进行多字节传输。

多数具有SPI接口的存储芯片就以这种方式工作。

在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平。

此时,一次传输可能会涉及到成千上万字节的信息,而不必在每个字节的数据发送的前后都去检测其起始位和结束位,这正是同步传输方式优于异步传输方式的原因所在。

虽然SPI有以上优点,然而在图像传输中却很少用到,原因主要是其抗干扰能力差。

SPI采用的是单端非平衡的传输方式,即传输的数据位的电压电平是以公共地作为参考的。

在这种传输方式中,对于已进入信号中的干扰是无法消除和减弱的。

而信号在传输过程中总会受到干扰,而且距离越长干扰越严重,以致于信号传输产生错误。

在这种条件下,信号传输就变得毫无意义了。

另外,由于单端非平衡传输方式以公共地作为参考点,地线作为信号回流线,因此也存在信号电流。

当传输线两端的系统之间存在交流电位差时,这个电位差将直接窜到信号中,形成噪声干扰。

所以,为了解决抗干扰问题,通常采用平衡传输(balancedtransmission)方式,这里采用比较常见的RS-422。

 

SPI总线协议及SPI时序图详解  

    

SPI,是英语SerialPeripheralInterface的缩写,顾名思义就是串行外围设备接口。

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

上升沿发送、下降沿接收、高位先发送。

上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。

下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

假设主机和从机初始化就绪:

并且主机的sbuff=0xaa(10101010),从机的sbuff=0x55(01010101),下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。

---------------------------------------------------

脉冲   主机sbuff从机sbuffsdisdo

---------------------------------------------------

000-0  10101010 0101010100

---------------------------------------------------

10--1  0101010x10101011 0 1

11--0 01010100 10101011 0 1

---------------------------------------------------

20--1  1010100x01010110 1 0

21--0 10101001 01010110 1 0

---------------------------------------------------

30--1  0101001x10101101 0 1

31--0 01010010 10101101 0 1

---------------------------------------------------

40--1  1010010x01011010 1 0

41--0 10100101 01011010 1 0

---------------------------------------------------

50--1  0100101x10110101 0 1

51--0 01001010 10110101 0 1

---------------------------------------------------

60--1  1001010x01101010 1 0

61--0 10010101 01101010 1 0

---------------------------------------------------

70--1  0010101x11010101 0 1

71--0 00101010 11010101 0 1

---------------------------------------------------

80--1 0101010x10101010 1 0

81--0 01010101 10101010 1 0

---------------------------------------------------

这样就完成了两个寄存器8位的交换,上面的0--1表示上升沿、1--0表示下降沿,sdi、sdo相对于主机而言的。

根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来。

 

SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:

一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。

SPI主要特点有:

可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。

SPI总线有四种工作方式(SP0,SP1,SP2,SP3),其中使用的最为广泛的是SPI0和SPI3方式。

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。

如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。

时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。

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

SPI主模块和与之通信的外设音时钟相位和极性应该一致。

SPI时序图详解-SPI接口在模式0下输出第一位数据的时刻

SPI接口在模式0下输出第一位数据的时刻

SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。

图1中表现了这四种时序,

时序与CPOL、CPHL的关系也可以从图中看出。

 图1

CPOL是用来决定SCK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,

空闲电平为高电平。

CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,

CPHA=1,在每个周期的第二个时钟沿采样。

由于我使用的器件工作在模式0这种时序(CPOL=0,CPHA=0),所以将图1简化为图2,

只关注模式0的时序。

 图2

我们来关注SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿,第一个时钟沿),

在时钟的后沿输出数据(下降沿,第二个时钟沿)。

首先来看主器件,主器件的输出口(MOSI)输出的数据bit1,

在时钟的前沿被从器件采样,那主器件是在何时刻输出bit1的呢?

bit1的输出时刻实际上在SCK信号有效以前,

比 SCK的上升沿还要早半个时钟周期。

bit1的输出时刻与SSEL信号没有关系。

再来看从器件,

主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的,那从器件又是在何时刻输出bit1的呢。

从器件是在SSEL信号有效后,立即输出bit1,尽管此时SCK信号还没有起效。

关于上面的主器件

和从器件输出bit1位的时刻,可以从图3、4中得到验证。

 图3

注意图3中,CS信号有效后(低电平有效,注意CS下降沿后发生的情况),故意用延时程序

延时了一段时间,之后再向数据寄存器写入了要发送的数据,来观察主器件输出bit1的情况(MOSI)。

可以看出,bit1(值为1)是在SCK信号有效之前的半个时钟周期的时刻开始输出的(与CS信号无关),

到了SCK的第一个时钟周期的上升沿正好被从器件采样。

 图4

图4中,注意看CS和MISO信号。

我们可以看出,CS信号有效后,从器件立刻输出了bit1(值为1)。

通常我们进行的spi操作都是16位的。

图5记录了第一个字节和第二个字节间的相互衔接的过程。

第一个字节的最后一位在SCK的上升沿被采样,随后的SCK下降沿,从器件就输出了第二个字节的第一位。

 

SPI总线协议介绍(接口定义,传输时序)

一、技术性能

SPI接口是Motorola首先提出的全双工三线同步串行外围接口,采用主从模式(MasterSlave)架构;支持多slave模式应用,一般仅支持单Master。

时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSBfirst);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。

-------------------------------------------------------

二、接口定义

SPI接口共有4根信号线,分别是:

设备选择线、时钟线、串行输出数据线、串行输入数据线。

(1)MOSI:

主器件数据输出,从器件数据输入

(2)MISO:

主器件数据输入,从器件数据输出

(3)SCLK:

时钟信号,由主器件产生

(4)/SS:

从器件使能信号,由主器件控制

-------------------------------------------------------

三、内部结构

 四、传输时序

SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。

如下图所示,在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1