打印
[技术问答]

SPI接口之间数据传输中故障分析

[复制链接]
1086|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pixhw|  楼主 | 2023-1-31 08:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  单片机(MCU)系统为了与SPI标准外围接口器件进行通信,必须使用SPI( Serial Peripheral Interface,串行外设接口)总线。SPI总线系统是Motorola提出的一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如Flash RAM、A/ D转换器、LED显示器、MCU以及计算机网络等。MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。

  对于那些没有SPI接口功能的MCU来说,SPI接口的功能靠软件控制MCU的I/O口的方法来模拟。不过,用软件来模拟SPI接口的功能,工作速度非常慢,并且需要主从器件的软件之间配合得非常好。如果在单片机芯片内部用硬件电路来完成SPI接口功能,在硬件增加不多的情况下,能够极大地提高传输速度(最高频率可达主器件的频率的1/4),减轻软件的负担,使用极为方便。

  SPI接口工作的时候,没有应答信号,并且数据在发送的时候无需校验位,所以,要求主从器件的软件必须完全符合SPI的时

序要求,否则数据传输很容易出现错误。本文通过MCU中SPI接口模块的设计,分析数据传输的各种出错情况,并针对各种情况,增强SPI接口的错误处理能力。

       1 SPR设定错误

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

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

                                                           图1主从时钟和SCK的关系

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

                                                              图2主从时钟和SCK的关系

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

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


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

4630

帖子

1

粉丝