一、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...