一、SPI通信协议 SPI:"Serial Peripheral Interface" 1. 定义:SPI是Motorola开发的全双工同步串行外设接口通信。 (1)SDI:主设备数据输入,从设备数据输出。
(2)SDO:主设备数据输出,从设备数据输入。
(3)SCLK:时钟信号,由主设备产生。
(4)CS:从设备使能信号,由主设备控制。
SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。
一、SPI时序详解 1.介绍 SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO。用于 CPU与各种外围器件进行全双工、同步串行通讯。 2.SPI主要特点 SPI主要特点有:可以同时发出和接收串行数据,可以当作主机或从机工作,提供频率可编程时钟,发送结束中断标志,写冲突保护,总线竞争保护等。 3.SPI的工作方式 SPI总线有四种工作方式(SP0、SP1、SP2、SP3),其中使用的最为广泛的是 SPI0 和 SPI3 方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。 如果CPOL = 0,串行同步时钟的空闲状态为低电平。如果CPOL = 1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA = 0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样。如果CPHA = 1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI主模块和与之通信的外设音时钟相位和极性应该一致。
二、SPI时序详解* 1.SPI时序图 SPI接口在模式0下输出第一位数据的时刻SPI接口有四种不同的数据传输时序,取决于CPOL 和 CPHL这两位的组合。图1表现了这四种时序,时序与CPOL、CPHL的关系也可以从图1中看出。
图1 CPOL 是用来决定 SCK 时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,空闲电平为高电平。CPHA 是用来决定采样时刻的,CPHA = 0,在每个周期的第一个时钟沿采样,CPHA = 1,在每个周期的第二个时钟沿采样。由于器件工作在模式0这种时序(CPOL = 0,CPHA = 0),所以将图1简化为图2,只关注模式0的时序。
图2 SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿,第一个时钟沿),在时钟的后沿输出数据(下降沿,第二个时钟沿)。 首先来看主器件,主器件的输出口(MOSI)输出的数据bit1,在时钟的前沿被从器件采样,那主器件是在何时刻输出 bit1 的呢? bit1 的输出时刻实际上在 SCK 信号有效以前,比 SCK 的上升沿还要早半个时钟周期。bit1 的输出时刻与 SSEL 信号没有关系。 再来看从器件,主器件的输入口(MISO)同样是在时钟的前沿采样从器件输出的 bit1 的,那从器件又是在何时刻输出 bit1 的呢? 从器件是在SSEL信号有效后,立即输出 bit1,尽管此时SCK信号还没有起效。
从这张图就可以很清楚的看出主从器件的bit1 是怎样输出的。
|