文档介绍:同时串行外设接口(SPI)是由摩托罗拉企业开发全双工同时串行总线, 该总线大量用在与EEPROM、 ADC、 FRAM和显示驱动器之类慢速外设器件通信。
SPI(Serial Peripheral Interface)是一个串行串行同时通讯协议, 由一个主设备和一个或多个从设备组成, 主设备开启一个与从设备同时通讯, 从而完成数据交换。SPI 接口由SDI(串行数据输入), SDO(串行数据输出), SCK(串行移位时钟), CS(从使能信号)四种信号组成, CS 决定了唯一与主设备通信从设备, 如没有CS 信号, 则只能存在一个从设备, 主设备经过产生移位时钟来提议通讯。通讯时, 数据由SDO 输出, SDI 输入, 数据在时钟上升或下降沿由SDO 输出, 在紧接着下降或上升沿由SDI 读入, 这么经过8/16 次时钟改变, 完成8/16 位数据传输。
总线协议
该总线通信基于主-从(全部串行总线均是这么, USB, IIC, SPI等)配置, 而且下面提到方向性操作合指代全部从主设备角度说得。它有以下4个信号:
MOSI:主出/从入
MISO:主入/从出
SCK:串行时钟
SS:隶属选择; 芯片上“隶属选择”(slave-select)引脚数决定了可连到总线上器件数量。
在SPI传输中, 数据是同时进行发送和接收。数据传输时钟基于来自主处理器时钟脉冲(仿佛也能够是IO上电平模拟时钟), 摩托罗拉没有定义任何通用SPI时钟规范。然而, 最常见时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数, CPOL定义SPI串行时钟活动状态, 而CPHA定义相对于SO-数据位时钟相位。CPOL和CPHA设置决定了数据取样时钟沿。
数据方向和通信速度
SPI传输串行数据时首先传输最高位。波特率能够高达5Mbps, 具体速度大小取决于SPI硬件。比如, Xicor企业SPI串行器件传输速度能达成5MHz。
SPI总线接口立刻序
SPI总线包含1根串行同时时钟信号线以及2根数据线。
SPI模块为了和外设进行数据交换, 依据外设工作要求, 其输出串行同时时钟极性和相位能够进行配置, 时钟极性(CPOL)对传输协议没有重大影响。假如CPOL=0, 串行同时时钟空闲状态为低电平; 假如CPOL=1, 串行同时时钟空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不一样传输协议之一进行数据传输。假如CPHA=0, 在串行同时时钟第一个跳变沿(上升或下降)数据被采样; 假如CPHA=1, 在串行同时时钟第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信外设音时钟相位和极性应该一致。SPI接口时序如图3、 图4所表示。
SPI是一个环形总线结构, 由ss(cs)、 sck、 sdi、 sdo组成, 其时序其实很简单, 关键是在sck控制下, 两个双向移位寄存器进行数据交换。
假设下面8位寄存器装是待发送数据10101010, 上升沿发送、 下降沿接收、 高位先发送。
那么第一个上升沿来时候数据将会是sdo=1; 寄存器=0101010x。下降沿到来时候, sdi上电平将所存到寄存器中去, 那么这时寄存器=0101010,sdi, 这么在8个时钟脉冲以后, 两个寄存器内容相互交换一次。这么就完成里一个