网站大量收购独家精品文档,联系QQ:2885784924

SPI与其接口介绍.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、SPI接口简介SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器(如图一所示)和MCU等。 图一、ADC中的SPI二、SPI接口一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。图二给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。图二、典型SPI示意图在AN-877应用笔记中,对spi的接口定义与典型spi接口有所不同,AN-877使用一根线SDIO代替了典型SPI的MISO和MOSI,SS接口用CSB代替。图三和图四分别是双线模式下单器件控制(主从一对一)和双线模式下多器件控制(主从一对多)。图三:主从一对一控制图四:主从一对多控制不管是典型SPI还是三引脚SPI,其基本原理都是一样的,都是主SPI通过SDIO(或MISO与MOSI)将数据传递到从SPI中,通过从SPI控制功能模块。一般来说ADC中的SPI指的是模块中的从SPI极其接口,主SPI可以使用MCU或者单片机实现。主SPI不属于器件的部分,可以不用考虑,操作起来比较简单。从SPI由指令移位寄存器、指令数据缓存器、寄存器控制逻辑、寄存器构成,如图五所示。主SPI发送过来的串行数据先依次进入指令移位寄存器,指令移位寄存器再依次将数据传送到指令缓存器。寄存器控制逻辑根据MSB优先或LSB优先控制指令移位寄存器的移位以及控制指令缓存器的输出,将其传送到相应地址的寄存器当中。寄存器包括三种类型:配置寄存器、传送寄存器和编程寄存器。寄存器存入相应数据之后,先根据配置寄存器配置串行接口,编程寄存器再根据寄存器功能表中的定义输出相对应的控制信号,最后根据传送寄存器指令统一输出控制信号。图五: SPI接口的功能模块三、SPI协议(根据AN-877应用笔记)SPI接口有主机跟从机之分,主从机可以是一对一,也可以是一对多,但是原理都一样。主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。1、引脚数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。如果该命令为读命令,状态机把该引脚(SDIO)变为输出,然后该引脚将数据回传给外部控制器。如果该命令为写命令,该引脚始终用作输入。串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。所有数据的输入输出都是与SCLK同步的。输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。片选信号(CSB):CSB是低电平有效的控制信号,用于选通读写周期。当CSB为低电平时,SPI才会处理SDIO上的数据信息。当CSB为高电平时,SPI忽略SDIO上的数据信息。此外,CSB还有一种特殊作用。CSB可以在字节边界处停止在高电平,为外部的时序处理提供更多的时间。(见图2)图六:带有停止时间的MSB优先指令和数据2、格式当内部状态机处在空闲状态且第一次在SCLK的上升沿检测到CSB为低电平时,确认为帧的开始。传输的第一个阶段为指令阶段,指令由16位组成,之后是数据阶段,数据由一个或多个8位组成,长度不定。(1)指令周期指令周期为传输的前16位,如下图所示,指令周期划分为若干位段。A、读/写在MSB优先(参见“位序”部分)时,数据流中的第一位是读/写指示位。若该位为高电平,则表示指令为读取指令。当指令周期(前16位)完成时,内部状态机使用所提供的信息解码要读取的内部地址。随后SDIO由输入变为输出,由字长定义的适当数量的字从器件移位出来(参见“字长”部分)。一旦字长所要求的所有数据均已移位输出,状态机便返回空闲模式,等待下一个指令周期。此时应拉高CSB,表示一次处理结束。若数据流中的第一位为低电平,则表示指令为写入指令。指令周期完成时,内部状态机使用所提供的信息解码要写入的内部地址。指令之后的所有数据均将移入SDIO引脚并送往目标地址(当需要写入的数据为多个时,地址将自动递增或递减)。一旦传输完所有数据,状态机便返回空闲模式,等待下一个指令周期。此时应拉高CSB,表示一次结束。无论是读取模式还是写入模式,处理过程都会持续到字长要求时或CSB线路拉高(在非

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档