打印

【转】SPI时序详解

[复制链接]
563|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
傲视群熊|  楼主 | 2016-12-21 19:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、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 是怎样输出的。


相关帖子

沙发
l科科1987| | 2016-12-21 20:08 | 只看该作者
这几个图不错,楼主在哪扒的了,讲的很好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

84

帖子

1

粉丝