欢迎来到天天文库
浏览记录
ID:40573733
大小:260.70 KB
页数:7页
时间:2019-08-04
《SPI及其接口介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、SPI接口简介SPI(SerialPeripheralInterface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器(如图一所示)和MCU等。图一、ADC中的SPI二、SPI接口一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行
2、。图二给出了两个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中的S
3、PI指的是模块中的从SPI极其接口,主SPI可以使用MCU或者单片机实现。主SPI不属于器件的部分,可以不用考虑,操作起来比较简单。从SPI由指令移位寄存器、指令数据缓存器、寄存器控制逻辑、寄存器构成,如图五所示。主SPI发送过来的串行数据先依次进入指令移位寄存器,指令移位寄存器再依次将数据传送到指令缓存器。寄存器控制逻辑根据MSB优先或LSB优先控制指令移位寄存器的移位以及控制指令缓存器的输出,将其传送到相应地址的寄存器当中。寄存器包括三种类型:配置寄存器、传送寄存器和编程寄存器。寄存器存入相应数据之后,先根据配置寄存器配置串行接口,编程寄存器再根据寄存器功能表中的定义输出相对应
4、的控制信号,最后根据传送寄存器指令统一输出控制信号。图五:SPI接口的功能模块三、SPI协议(根据AN-877应用笔记)SPI接口有主机跟从机之分,主从机可以是一对一,也可以是一对多,但是原理都一样。主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。1、引脚数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。如果该命令为读命令,状态机把该引脚(SDIO)变为输
5、出,然后该引脚将数据回传给外部控制器。如果该命令为写命令,该引脚始终用作输入。串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。所有数据的输入输出都是与SCLK同步的。输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。片选信号(CSB):CSB是低电平有效的控制信号,用于选通读写周期。当CSB为低电平时,SPI才会处理SDIO上的数据信息。当CSB为高电平时,SPI忽略SDIO上的数据信息。此外,CSB还有一种特殊作用。CSB可以在字节边界处停止在高电平,为外部的时序处理提供更多的时间。(见图2)图六:带有停止时间的MSB优先指令和数据2、格式
6、当内部状态机处在空闲状态且第一次在SCLK的上升沿检测到CSB为低电平时,确认为帧的开始。传输的第一个阶段为指令阶段,指令由16位组成,之后是数据阶段,数据由一个或多个8位组成,长度不定。(1)指令周期指令周期为传输的前16位,如下图所示,指令周期划分为若干位段。A、读/写在MSB优先(参见“位序”部分)时,数据流中的第一位是读/写指示位。若该位为高电平,则表示指令为读取指令。当指令周期(前16位)完成时,内部状态机使用所提供的信息解码要读取的内部地址。随后SDIO由输入变为输出,由字长定义的适当数量的字从器件移位出来(参见“字长”部分)。一旦字长所要求的所有数据均已移位输出,状态
7、机便返回空闲模式,等待下一个指令周期。此时应拉高CSB,表示一次处理结束。若数据流中的第一位为低电平,则表示指令为写入指令。指令周期完成时,内部状态机使用所提供的信息解码要写入的内部地址。指令之后的所有数据均将移入SDIO引脚并送往目标地址(当需要写入的数据为多个时,地址将自动递增或递减)。一旦传输完所有数据,状态机便返回空闲模式,等待下一个指令周期。此时应拉高CSB,表示一次结束。无论是读取模式还是写入模式,处理过程都会持续到字长要求时或CSB线路拉高(在非流处理模
此文档下载收益归作者所有