SPI工作原理.docx
- 文档编号:29062889
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:14
- 大小:698.85KB
SPI工作原理.docx
《SPI工作原理.docx》由会员分享,可在线阅读,更多相关《SPI工作原理.docx(14页珍藏版)》请在冰豆网上搜索。
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的下降沿上数据改变,上升沿一位数据被存入移位寄存器。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SPI 工作 原理