您的位置:技术中心首页 > 总线协议 >> SPI接口单线应用

SPI接口单线应用

作者:未知   时间:2007-10-18 21:39:24  来自:网上转载  浏览次数:48  文字大小:【】【】【

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

  • SCLOCK: 主机的时钟线,为数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用, 因而发送或接收1个字节的数据都需要8个时钟作用。主机的时钟可以通过固件进行设置,并和从机的时钟线相连。
  • MISO:主机输入/从机输出数据线。主机的MOSO应与从机的发送数据端相连,进行高位在前的数据交换。
  • SS:低电平有效的从机选择线。当该线置低时,才能跟从机进行通信。

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

  • 主模式的特点是不论发送还是接收始终有SCLOCK信号,SS信号不是必需的, 由于SPI只能有一个主机, 因而不存在主机的选择问题。
  • 从模式的特点是无论发送还是接收必须在时钟信号SCLOCK的作用下才能进行,并且SS信号必须有效。

    不论是在主模式下还是在从模式下,都要在时钟极性和时钟相位的配合下才能有效的完成一次数据传输。

2 SPI接口的单线应用
    在标准的SPI接口间进行通信时,SPI总线的四条信号线中: 主机SCLOCK与从机SCLOCK相连; 主机MISO与从机MOSI相连;主机MOSI
与从机MISO 相连; 主机控制信号线与从机的SS相连。在SPI接口与非标准接口进行通信时,例如与有的串行RAM 接口,由于双向I/O数据线只有一条,时钟和片选信号线都有,那么如何利用SPI的高速特性进行数据的读出和写入呢?
    在这里提出SPI的单线应用方案,其如图1所示。主机的时钟信号SCLOCK 和片选信号SS与从机的对应信号线相连, 不同的是主机的MOSI和MISO信号线分别经过合适的电阻与从机的I/O信号线相连。当主机给从机发送数据时,在时钟信号的作用下,数据从MOSI口线经电阻1到从机的I/O 口线;当主机接收数据时,也需要在时钟信号的作用下,数据从从机的I/O口线经电阻2到主机的MISO口线。该方案中MOSI与MISO连在一起, 由于加了适当的电阻,所以不违反电路设计原则,但如果电阻大小不当会对信号的特性带来影响 。
SPI单线应用方案 
图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,送数据程序SENDDATA,接收数据程RECEIVEDATA。
    在SPI初始化程序中,控制寄存器SPICON设置为33H, 即CPOL=0,CPHA=0, 当设置CPOL= 1,CPHA=1时, 由于干扰脉冲的存在,
ADuC812与NRF2401不能很好的同步。
    在发送数据子程序中,向数据寄存器SPIDAT写数据,如产生中断标志,说明数据传输完毕,则可以发送下一个数据。
    在接收子程序中, 由于nRF2401送数据的时钟是由ADuC812的SCLOCK 产生的, 所以执行接收数据指令MOVA,SPIDAT时先要对数据寄存器SPIDAT 写数据0,也就是执行指令MOVA,SPIDAT,其目的是为了产生接收数据时的时钟信号, 当单片机向SPIDAT 写数据0时,nRF2401通过DATA 口向单片机送数据,改写SPIDAT 的内容,这就是所接收的数据。

SPI单线方案在实际应用应注意以下问题:
(1)时钟相位与时钟极性的设置。其设置要跟从机的数据读写时序相一致, 在一致时也要注意干扰问题。
(2)所加电阻值的大小。阻值的大小关系到信号传输的阻抗匹配问题,同时也影响数据传输的速率,所以在选用电阻时一般取几K 的电阻。

责任编辑:5life

更多相关 SPI 的文章

本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造封装
总线协议
说文解字
工具学习
数字滤波
闲话漫谈
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  SPI接口单线应用
  SPI总线时钟极性和时钟相...
  SPI接口的出错分析及其改进
  SPI总线接口
  I2C总线串行接口应用设计
  SPI总线杂碎
  SPI、I2C、UART三种串行...
  汽车总线协议的形势判断
  I2C 总线规范学习笔记
  SPI 接口简介

栏目最新

更多相关链接

  SPI接口单线应用
  SPI总线时钟极性和时钟相...
  SPI接口的出错分析及其改进
  SPI总线接口
  I2C总线串行接口应用设计
  SPI总线杂碎
  SPI、I2C、UART三种串行...
  汽车总线协议的形势判断
  I2C 总线规范学习笔记
  SPI 接口简介

热点文章

更多相关链接

  I2C总线性能介绍
  SPI、I2C、UART三种串行总线...
  SPI接口单线应用
  SPI 接口简介
  I2C 总线规范学习笔记
  SPI总线杂碎
  SPI总线接口
  SPI总线时钟极性和时钟相位的...
  I2C总线串行接口应用设计
  SPI接口的出错分析及其改进