SPI接口及应用

  • 格式:doc
  • 大小:40.00 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SPI接口及应用

摘要:为解决I/O口数据传输的速率问题,提出SPI接口的单线应用方案,分析该方法的可行性,并在单片机ADuC812与射频无线通信模块nRF2401间的接口设计中得到了应用,验证该方案的有效性。该方案具有电路设计简单、数据传输速率高等优点。

1 SPI通信

SPI接口的全称

"Serial Peripheral Interface"

意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。

SPI接口一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如Flash RAM、A/ D转换器、LED显示器、MCU以及计算机网络等。

MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

(1)MOSI -主器件数据输出,从器件数据输入

(2)MISO -主器件数据输入,从器件数据输出

(3)SCLK -时钟信号,由主器件产生

(4)/SS -从器件使能信号,由主器件控制

SPI信号线:一般的SPI接口使用4条信号线与外围设备接口,其具体功能如下:

SCLOCK:主机的时钟线,为数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的数据都需要8个时钟作用。主机的时钟可以通过固件进行设置,并和从机的时钟线相连。

MISO:主机输入/从机输出数据线。主机的MOSO应与从机的发送数据端相连,进行高位在前的数据交换。

SS:低电平有效的从机选择线。当该线置低时,才能跟从机进行通信。

SPI工作模式:SPI的工作模式分为:主模式和从模式。

主模式的特点是不论发送还是接收始终有SCLOCK信号,SS信号不是必需的,由于SPI只能有一个主机,因而不存在主机的选择问题。

从模式的特点是无论发送还是接收必须在时钟信号SCLOCK的作用下才能进行,并且SS信号必须有效。

不论是在主模式下还是在从模式下,都要在时钟极性和时钟相位的配合下才能有效的完

成一次数据传输。

2 SPI接口的单线应用

在标准的SPI接口间进行通信时,SPI总线的四条信号线中:主机SCLOCK与从机S CLOCK相连;主机MISO与从机MOSI相连;主机MOSI

与从机MISO 相连;主机控制信号线与从机的SS相连。在SPI接口与非标准接口进行通信时,例如与有的串行RAM 接口,由于双向I/O数据线只有一条,时钟和片选信号线都有,那么如何利用SPI的高速特性进行数据的读出和写入呢?

在这里提出SPI的单线应用方案,其如图1所示。主机的时钟信号SCLOCK 和片选信号SS与从机的对应信号线相连,不同的是主机的MOSI和MISO信号线分别经过合适的电阻与从机的I/O信号线相连。当主机给从机发送数据时,在时钟信号的作用下,数据从M OSI口线经电阻1到从机的I/O 口线;当主机接收数据时,也需要在时钟信号的作用下,数据从从机的I/O口线经电阻2到主机的MISO口线。该方案中MOSI与MISO连在一起,由于加了适当的电阻,所以不违反电路设计原则,但如果电阻大小不当会对信号的特性带来影响。

图1 SPI单线应用方案

3 SPI接口的单线应用举例

本例是作者设计的单片机,ADuC812的SPI总线与射频无线通信模块nRF2401间的通信接口,由于nRF2401只支持I/O数据传输方式,但是为了提高无线通信的数据速率,作者采用单线方式实现了SPI与nRF2401的通信。

电路设计

ADuC812的SPI与nRF2401的连接原理如图2所示。其中ADuC812作为主机,nRF2401作为从机,PWR、CE、CS是nRF2401的工作模式选择信号,他们共同完成从机的片选任务,相当于SS信号。CLK1是ADuC812串行时钟信号。根据信号阻抗匹配原则,通信中选用两个6K 的电阻。ADuC812单片机的SPI接口由SPICON (SPI控制寄存器)、SPIDAT (SPI数据寄存器)来控制,通过设定SPICON 寄存器的各位实现SPI的各种工作模式。

图2 ADuC812的SPI与nRF2401的连接原理

控制寄存器SPICON中从高到低各位说明如下:

ISPI:中断标志位。当发送或接收1字节数据完毕时自动置1.当执行中断服务程序时,硬件自动清除该位。该位也可以通过软件控制。

WCOL:写冲突错误标志位。

SPE:SPI使能位。若SPE=0,则I2C串行口工作;若SPE=1,则SPI串行口工作。

SPIM:主模式选择位。若SPIM=0,则SPI工作于从模式;若SPIM=1,则SPI工作于主模式。

CPOL:时钟极性选择位。CPOL=0,在主机时钟下降沿时读取数据,各数据字节之间传输时,时钟处于高电平空闲状态;CPOL=1,在主机时钟上升沿时读取数据,各数据字节之间传输时,时钟处于低电平空闲状态。

CPHA;时钟相位选择位。CPHA=0,传输数据的最高位在SS的下降沿出现,在时钟第1个前沿读入,之后的下一个数据位在时钟后沿出现,

在下一个前沿读入,直到8位数据读完;CPHA=1,传输数据在时钟前沿出现,在同一时钟周期的后沿读入。

SPR1、SPR0:SPI波特率选择位。

接口程序设计固件程序主要包括:SPI口初始化程序INITSPI,送数据程序SENDDAT A,接收数据程RECEIVEDATA。

在SPI初始化程序中,控制寄存器SPICON设置为33H,即CPOL=0,CPHA=0,当设置CPOL= 1,CPHA=1时,由于干扰脉冲的存在,

ADuC812与NRF2401不能很好的同步。

在发送数据子程序中,向数据寄存器SPIDA T写数据,如产生中断标志,说明数据传输完毕,则可以发送下一个数据。

在接收子程序中,由于nRF2401送数据的时钟是由ADuC812的SCLOCK 产生的,所以执行接收数据指令MOV A,SPIDAT时先要对数据寄存器SPIDAT 写数据0,也就是执行指令MOVA,SPIDA T,其目的是为了产生接收数据时的时钟信号,当单片机向SPIDAT 写数据0时,nRF2401通过DA TA 口向单片机送数据,改写SPIDAT 的内容,这就是所接收的数据。

SPI单线方案在实际应用应注意以下问题:

(1)时钟相位与时钟极性的设置。其设置要跟从机的数据读写时序相一致,在一致时也要注意干扰问题。

(2)所加电阻值的大小。阻值的大小关系到信号传输的阻抗匹配问题,同时也影响数据传输的速率,所以在选用电阻时一般取几K 的电阻。

相关主题