SPI时序详解

转载 2013年12月06日 00:42:35

SPI时序详解

             SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
          SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 
SPI主模块和与之通信的外设音时钟相位和极性应该一致。
         SPI时序详解---SPI接口在模式0下输出第一位数据的时刻SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。图1中表现了这四种时序,时序与CPOL、CPHL的关系也可以从图中看出。

图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是怎样输出的

SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)

SPI接口扫盲 为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的。wikipedia英文版[注释1]中,SPI接口介绍的很好,但是毕竟是英文版...
  • douqingl
  • douqingl
  • 2016年01月03日 20:11
  • 10555

SPI四种工作模式时序图

1.SPI总线简介   SPI(serial peripheral interface,串行外围设备接口)总线技术是Motorola公司推出的一种同步串行接口。它用于CPU与各种外围器件进行全双...
  • guomutian911
  • guomutian911
  • 2017年05月30日 22:39
  • 5606

74HC595详解

工作电压2-6V,推荐5V。 14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。 13脚OE 输出使能控制脚:如果它不工作,那么595...
  • jbh18401
  • jbh18401
  • 2017年07月19日 09:37
  • 277

Arduino系列教程-016 74HC595实验

本教程来至yingcloud.com网站 用具有8 位移位寄存器和一个存储器,以及三态输出功能74HC595来控制LED灯的闪烁,连接一块Arduino板来驱动寄存器,使线路能交替进行下去。 ...
  • yingcloud
  • yingcloud
  • 2014年02月10日 11:17
  • 5059

SPI总线协议及SPI时序图详解

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 SPI总线是Motorola公司推出的三线同步接口,...
  • u013122286
  • u013122286
  • 2015年11月02日 14:18
  • 4746

SPI_FLASH时序描述及驱动编程

Ⅰ、写在前面 前面文章讲述过关于SPI的驱动(硬件SPI 和 软件模拟SPI),本文接着那篇文章来讲述关于SPI应用中【FLASH时序描述及驱动编程】。   写这篇文章的目的有两点:1.让大家知道SP...
  • ybhuangfugui
  • ybhuangfugui
  • 2016年08月02日 18:14
  • 2774

74HC595扩展按键扫描

问题出现在了按键扫描过程中,使用延时,但是为什么使用延时就检测不到,还是没琢磨明白。 #include "hc595.h"   /*-------------------------------...
  • dyllove98
  • dyllove98
  • 2013年05月31日 22:25
  • 1311

如何用74HC595实现流水灯

首先要了解74HC595这个芯片:74HC595是一个8位串行输入、平行输出的位移缓存器:平行输出为三态输出。 这个芯片各个引脚的功能及工作原理如下: Q0--Q7: 八位并行输出端,可以直接控制数...
  • qq_41387047
  • qq_41387047
  • 2017年12月21日 17:14
  • 79

硬件之SPI时序

硬件之SPI时序 SPI时序详解              SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线...
  • xlhcgd
  • xlhcgd
  • 2016年03月07日 01:13
  • 881

配置内核gpio模拟spi时序的方法

假如你现在有一份SPI的驱动,但是驱动
  • liujun502589075
  • liujun502589075
  • 2014年08月24日 19:46
  • 5183
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SPI时序详解
举报原因:
原因补充:

(最多只允许输入30个字)