新闻中心

EEPW首页>嵌入式系统>设计应用> SPI接口的出错分析及其改进

SPI接口的出错分析及其改进

作者: 时间:2012-07-19 来源:网络 收藏

点击在新窗口中浏览产品
图5偏移错误

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

点击在新窗口中浏览产品

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

点击在新窗口中浏览产品

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

5、其他错误

  设定不当,或者受到外界干扰,数据传输难免会发生错误,或者有时软件对错误的种类判断不清,必须要有一种方法强制从错误状态中恢复过来。在SPI不工作,即SPEN=0的时候,清除SPI模块内部几乎所有的状态(专用寄存器除外)。如果软件在接收数据的时候,能够发现数据有错误,无论是什么错误,都可以强制停止SPI的工作,重新进行数据传输。例如,在偏移错误(OFST)中,如果2、1和SPR0的设置适当,也可以使SCK显得比较“均匀”。硬件本身不可能检测到有错误,若用户软件能够发现错误,这时就可以强制停止SPI的传输工作,这样就可以避免错误一直持续下去。

结语

  本文对SPI接口之间数据传输中各种出错情况进行分析,并对SPI接口处理错误的能力进行增强。对一些传输错误,SPI接口可以检测出来,通过对各种错误状态寄存器进行置位,并做相应的处理解决。但是有些错误由硬件本身造成,是检测不到的。因此,在应用中,如果对数据的正确性要求较高,除了要在软件上满足SPI接口的时序要求外,还需要在软件上作适当的处理。

参考文献

1 ATMEL 8bit Flash Microcontroller with 2wire Interface
2 高谷刚,罗春. 可复用SPI模块IP核的设计与验证. 单片机与嵌入式系统应用, 2004(11)
3 李刚. ADμC8XX系列单片机原理与应用技术. 北京:北京航空航天大学出版社,2002


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭