新疆25选7走势 > 接口/总线/驱动 > 正文

新疆25选7网址:SPI总线有什么特点?工作方式是什么?有哪些错误?

? 2018年07月12日 15:40 ? 次阅读

1.SPI总线简介

新疆25选7走势 www.ve66b.cn SPI(serial peripheral interface,串行外围设备接口)总线技术是Motorola公司推出的一种同步串行接口。它用于CPU与各种外围器件进行全双工、同步串行通讯。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。即完成一个字节数据传输的实质是两个器件寄存器内容的交换。主SPI的时钟信号(SCK)使传输同步。其典型系统框图如下图所示。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图1 典型系统框图

2.SPI总线的主要特点

· 全双工;

· 可以当作主机或从机工作;

· 提供频率可编程时钟;

· 发送结束中断标志;

· 写冲突?;?;

。总线竞争?;さ?。

3.SPI总线工作方式

SPI总线有四种工作方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):

SPI总线有什么特点?工作方式是什么?如何解决错误?

图2 SPI0和SPI3方式(实线表示)

四种工作方式时序分别为:

SPI总线有什么特点?工作方式是什么?如何解决错误?

图3 四种工作方式时序

时序详解:

CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平

CPHA:时钟相位选择,为0时在SCK第一个跳变沿采样,为1时在SCK第二个跳变沿采样

工作方式1:

当CPHA=0、CPOL=0时SPI总线工作在方式1。MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。

工作方式2:

当CPHA=0、CPOL=1时SPI总线工作在方式2。与前者唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。

工作方式3:

当CPHA=1、CPOL=0时SPI总线工作在方式3。MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。

工作方式4:

当CPHA=1、CPOL=1时SPI总线工作在方式4。与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。

4.SPI总线常见错误

4.1 SPR设定错误

在从器件时钟频率小于主器件时钟频率时,如果SCK的速率设得太快,将导致接收到的数据不正确(SPI接口本身难以判断收到的数据是否正确,要在软件中处理)。

整个系统的速度受三个因素影响:主器件时钟CLK主、从器件时钟CLK从和同步串行时钟SCK,其中SCK是对CLK主的分频,CLK从和CLK主是异步的。要使SCK无差错无遗漏地被从器件所检测到,从器件的时钟CLK从必须要足够快。下面以SCK设置为CLK主的4分频的波形为例,分析同步串行时钟、主时钟和从时钟之间的关系。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图4主从时钟和SCK的关系

如图4所示,当T从《Tsck/2,即T从<2T主时,无论主时钟和从时钟之间的相位关系如何,在从器件CLK从的上升沿必然能够检测到SCK的低电平,即SCK=0的范围内至少包含一个CLK从的上升沿。

图5中,当T从≥TSCK/2=2T主时,在clk_s的两个上升沿都检测不到SCK的低电平,这样从器件就会漏掉一个SCK。在某些相位条件下,即使CLK从侥幸能检测到SCK的低电平,也不能保证可以继续检测到下一个SCK。只要遗漏了一个SCK,就相当于串行数据漏掉了一个位,后面继续接收/发送的数据就都是错误的了。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图5主从时钟和SCK的关系

根据以上的分析,SPR和主从时钟比的关系如表1所列。

表1 SPR的设置和主从时钟周期比值之间的关系

SPI总线有什么特点?工作方式是什么?如何解决错误?

在发送数据之前按照表1对SPR进行设置,SPR设定错误可以完全避免。

4.2 模式错误(MODF)

模式错误表示的是主从模式选择的设置和引脚SS的连接不一致。

器件工作在主模式的时候(MSTR=1),它的片选信号SS引脚必须接高电平。在发送数据的过程中,如果它的SS从高电平跳至低电平,在SS的下降沿,SPI??榻觳獾侥J酱砦?,对MODF位置1,强制器件从主模式转入从模式(即令MSTR=0),清空内部计数器counter,并结束正在进行的数据传输,如图6(a)所示。

对从模式(MSTR=0),在没有数据传送的时候,SS高电平表示从器件未被选中,从器件不工作,MISO输出高阻;在数据传输过程中,片选信号SS必须接低电平,且SS不允许跳变。如果SS从低电平跳到高电平,在SS的上跳沿,SPI??橐步觳獾侥J酱砦?,清空内部计数器counter,并结束正在进行的数据传输。直到SS恢复为低电平,重新使SPEN=1时,才重新开始工作,如图6(b)所示。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图6模式错误的检测

4.3 溢出错误(OVR)

溢出错误表示连续传输多个数据时,后一个数据覆盖了前一个数据而产生的错误。

状态标志SPIF表示的是数据传输正在进行中,它对数据的传输有较大的影响。主器件的SPIF有效由数据寄存器的空标志SPTE=0产生,而从器件的SPIF有效则只能由收到的第一个SCK的跳变产生,且又由于从器件的SPIF和主器件发出的SCK是异步的,因此从器件的传输标志SPIF从相对于主器件的传输标志SPIF主有一定的滞后。如图7所示,在主器件连续发送两个数据的时候将有可能导致从器件的传输标志和主器件下一个数据的传输标志相重叠(图7中虚线和阴影部分),第一个收到的数据必然被覆盖,第二个数据的收/发也必然出错,产生溢出错误。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图7溢出错误

通过对从器件的波形分析发现,counter=8后的第一个时钟周期,数据最后一位的传输已经完成。在数据已经收/发完毕的情况下,counter=8状态的长短对数据的正确性没有影响,因此可以缩短counter=8的状态,以避免前一个SPIF和后一个SPIF相重叠。这样,从硬件上避免了这一阶段的溢出错误。

但是,如果从器件工作速度不够快或者软件正在处理其他事情,在SPI接口接收到的数据尚未被读取的情况下,又接收到一个新的数据,溢出错误还是会发生的。此时,SPI接口?;で耙桓鍪莶槐桓哺?,舍弃新收到的数据,置溢出标志OVR=1;另外发出中断信号(如果该中断允许),通知从器件及时读取数据。

4.4 偏移错误(OFST)

SPI接口一般要求从器件先工作,然后主器件才开始发送数据。有时在主器件往外发送数据的过程中,从器件才开始工作,或者SCK受到外界干扰,从器件未能准确地接收到8个SCK。如图8所示,从器件接收到的8个SCK其实是属于主器件发送相邻的两个数据的SCK主。这时,主器件的SPIF和从器件的SPIF会发生重叠,数据发生了错位,从器件如果不对此进行纠正的话,数据的接收/发送便一直地错下去。

SPI总线有什么特点?工作方式是什么?如何解决错误?

图8偏移错误

在一个数据的传输过程中,SPR是不允许改变的,即SCK是均匀的,而从图5可以看出,从器件接收到的8个SCK并不均匀,它们是分别属于两个数据的,因此可以计算SCK的占空时间来判断是否发生了偏移错误。经分析,正常时候SCK=1时的时钟周期数n的取值满足如下关系:

SPI总线有什么特点?工作方式是什么?如何解决错误?

但由于主从时钟之间是异步的,并且经过了取整,所以正常时候SCK=1时的时钟周期计数值COUNT应满足:

SPI总线有什么特点?工作方式是什么?如何解决错误?

比如在图5中,COUNT的最大值COUNT(max)=2或者1,都可认为是正常的。但当出现COUNT(max)=8时,可以判定出现了偏移错误。在实际设计中,先记录下第一个COUNT(max)的值,如果后面又出现与记录值相差1以上的COUNT(max)出现,可知有偏移错误OFST发生。SPI接口在“不均匀”的地方令SPIF=1,然后准备等待下一个数据的第一个SCK。其中COUNT的位数固定为8位,为了避免溢出时重新从00H开始计数,当计数达到ffH时停止计数。

4.5 其他错误

设定不当,或者受到外界干扰,数据传输难免会发生错误,或者有时软件对错误的种类判断不清,必须要有一种方法强制SPI接口从错误状态中恢复过来。在SPI不工作,即SPEN=0的时候,清除SPI??槟诓考负跛械淖刺ㄗㄓ眉拇嫫鞒猓?。如果软件在接收数据的时候,能够发现数据有错误,无论是什么错误,都可以强制停止SPI的工作,重新进行数据传输。例如,在偏移错误(OFST)中,如果SPR2、SPR1和SPR0的设置适当,也可以使SCK显得比较“均匀”。SPI接口硬件本身不可能检测到有错误,若用户软件能够发现错误,这时就可以强制停止SPI的传输工作,这样就可以避免错误一直持续下去。

在应用中,如果对数据的正确性要求较高,除了要在软件上满足SPI接口的时序要求外,还需要在软件上作适当的处理。

5.设计SPI总线控制器

目前的项目中使用了SPI总线接口的FLASH存储器存储图像数据。FLASH的SPI总线频率高达66M,但MCU的频率较低,晶振频率7.3728M,SPI最大频率为主频1/2。对于320*240*16的图像读取时间为333ms,而且还忽略了等待SPI传输完成、写显存、地址坐标设定等时间。实际测试约为1s。成为GUI设计的极大瓶颈。由于TFT驱动是自己FPGA设计的,资源尚有余量,决定把SPI控制器(主)及写图像部分逻辑放入FPGA中用硬件完成。

首先接触到的是SPI的SCK时钟频率问题。FPGA的频率是48M,未使用PLL。能否以此频率作为SCK频率呢?要知道所有的MCU提供的SPI频率最大为主频的1/2!为什么呢?查过一些资料后发现,SPI从机接收数据并不是以SCK为时钟的,而是以主频为时钟对SCK和MISO进行采样,由采样原理得知SCK不能大于1/2主频,也就有了MCU提供最大master频率是1/2主频,最大slaver频率是1/4主频。FPGA在只作为主机时能否实现同主频一样频率的SCK呢??答案貌似是肯定的!但我还是有点担心,用组合逻辑控制SCK会不会出现较大毛刺影响系统稳定性呢?

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

请问如何通过一个差分接口来延长SPI总线?

发表于 2018-07-02 01:17 ? 24次阅读
请问如何通过一个差分接口来延长SPI总线?

请问大家有调过AM335x的关于SPI总线的裸板程序可以指导一下吗?

发表于 2018-06-21 02:54 ? 31次阅读
请问大家有调过AM335x的关于SPI总线的裸板程序可以指导一下吗?

MAX14483优势和特性/应用电路_评估板MA...

本文介绍了MAX14483优势和特性,功能框图,多种应用电路,以及评估板MAX14483 EVK主要...

发表于 2018-06-16 15:30 ? 158次阅读
MAX14483优势和特性/应用电路_评估板MA...

基于IIC总线的设计_关于I2C和SPI总线协议

现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit...

发表于 2018-04-26 14:14 ? 159次阅读
基于IIC总线的设计_关于I2C和SPI总线协议

深度解析Linux SPI总线和设备驱动架构

SPI控制器不用关心设备的具体功能,它只负责把上层协议驱动准备好的数据按SPI总线的时序要求发送给S...

发表于 2018-02-07 08:16 ? 1760次阅读
深度解析Linux SPI总线和设备驱动架构

深入理解串行外设接口(SPI)总线及应用

串行外设接口(SPI)总线是一个工作在全双工模式下的同步串行数据链路。它可用于在单个主控制器和一个或...

发表于 2018-01-31 17:11 ? 442次阅读
深入理解串行外设接口(SPI)总线及应用

现有的外设接口的优缺点解析以及一种新型外设接口的...

电路连接都是有VCC,GND两根电源线的,后面不再赘述了。应用的外设都局限在板载的一些低速低通信量芯...

发表于 2018-01-26 17:25 ? 1430次阅读
现有的外设接口的优缺点解析以及一种新型外设接口的...

终于看懂了iic与spi这两种通讯协议了

IIC vs SPI现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrat...

发表于 2017-11-02 11:06 ? 17537次阅读
终于看懂了iic与spi这两种通讯协议了

面向接口的编程——SPI总线和IIC总线

无论采用哪种总线都使用时钟信号和数据/控制线,时钟信号由 MCU 主机进行控制。用于控制的信号线中的...

发表于 2017-10-26 18:20 ? 2751次阅读
面向接口的编程——SPI总线和IIC总线

一文读懂SPI串行外设接口

SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是...

发表于 2017-04-27 15:19 ? 1143次阅读
一文读懂SPI串行外设接口

从基带到射频的物联网测试

 物联网(IoT)已经是持续了一些年的一个热词,智能家居产品的研制在国内外也开始轰轰烈烈地行动起来。...

发表于 2015-08-30 21:09 ? 1566次阅读
从基带到射频的物联网测试

SPI总线协议的通信原理及应用举例

SPI的通信原理 很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根...

发表于 2012-08-28 11:16 ? 2519次阅读
SPI总线协议的通信原理及应用举例

SPI4.2总线应用和调试

SPI4.2总线(System Packet Interface,系统间数据包接口)是一种速度高达1...

发表于 2012-01-04 15:56 ? 1708次阅读
SPI4.2总线应用和调试

基于FPGA的SPI总线在软件接收机上的应用

本文通过FPGA实现了射频前端GPS/北斗模式的切换,为将来射频前端多模设计奠定了基础,并且可通过外...

发表于 2011-06-03 11:41 ? 975次阅读
基于FPGA的SPI总线在软件接收机上的应用

SPI总线在51系列单片机系统中的应用

本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS51单片机汇编语言模拟SPI串行总...

发表于 2011-05-09 10:22 ? 1755次阅读
SPI总线在51系列单片机系统中的应用

SPI总线在XF-S4240与MCS51通信中的...

  SPI 总线技术是Motorola公司推出的一种同步串行接口。它可以使MCU与各种外围设备以串行...

发表于 2010-10-11 10:37 ? 821次阅读
SPI总线在XF-S4240与MCS51通信中的...

基于SPI总线的无线数据传输系统设计

基于SPI总线的无线数据传输系统设计   摘要: 通过基于SPI总线的无线数据通信设备,利用无线数...

发表于 2010-03-13 11:42 ? 2404次阅读
基于SPI总线的无线数据传输系统设计
  • 安徽国资委变相“输血” 江淮汽车拟进军融资租赁市场 2018-12-10
  • 惊艳卢浮宫小牛电动发布新款电动车惊艳卢浮宫小牛电动发布新款电动车-手机行情 2018-12-10
  • 养老金体系补短板系列政策将出 2018-12-09
  • 欧美同学会首届数字经济与人工智能大会将在成都召开 2018-12-09
  • 【聚焦军博会】216个代表团2037个项目将亮相军博会 11大军工集团全部参展 2018-12-09
  • 四兄弟合伙创业 种植羊肚菌成功 2018-12-08
  • 南京高速“微笑收费员”视频走红 2018-12-08
  • 【理上网来喜迎十九大】姚树洁:世界看好中国的未来 2018-12-07
  • 济南新规:自由职业者也可缴存住房公积金 2018-12-07
  • 这5棵“中国最美古树”在西藏 2018-12-06
  • 【理上网来喜迎十九大】推动中国经济乘风破浪行稳致远 2018-12-06
  • 郝龙斌:台湾经济最大难题不是经济 关键在民粹 2018-12-06
  • 为何越来越多的日本人开始找兼职? 2018-12-05
  • 11位 “小探秘员”经历的有趣的肯德基探秘之旅——食品安全频道——黄河新闻网 2018-12-05
  • 段健的专栏作者中国国家地理网 2018-12-05
  • 583| 991| 477| 322| 806| 186| 272| 137| 177| 539|