FPGA通讯协议学习笔记1- SPI协议

整理文章,来源如下,排序随机,如有侵权,加Q1011090284联系删除

1、SPI(Serial Peripheral Interface)串行外设接口 https://www.cnblogs.com/dongry/p/9921216.html

2、SPI通信协议(SPI总线)学习 https://www.cnblogs.com/deng-tao/p/6004280.html

3、SPI协议详解 https://blog.csdn.net/weiqifa0/article/details/82765892

1. SPI协议简介

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

2.SPI通讯性质

2.1.    SPI优点

支持全双工通信——因为SPI输入、输出有两根线,共用一个时钟信号线。

通信简单数据传输速率快——只需要控制最多四根信号线。

2.2.    最大传输速率

I2C协议v2.1规定了100K,400K和3.4M三种速率(bps)。SPI是一种事实标准,由Motorola开发,并没有一个官方标准。已知的有的器件SPI已达到50Mbps。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。

SPI最大传输速率受以下几个条件影响:

SPI的最大时钟频率(数字信号传输特性)

CPU处理SPI数据的能力(计时处理得到的数据)

输出端驱动能力(PCB所允许的最大信号传输速率)

2.3.    缺点

没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据 可靠性上有一定的缺陷。

2.4.    特点

高速、同步、全双工、非差分、总线式

主从机通信模式

3.协议通信时序详解

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共 有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

SDO/ MOSI —— master output slave input 主设备数据输出,从设备数据输入。

SDI / MISO —— master input slave output 主设备数据输入,从设备数据输出  对应SCLK   – 时钟信号,由主设备产生

SCLK —— 时钟信号,由主设备产生,不同于IIC协议里的时钟信号产生机制。

CS/SS —— 从设备使能信号(片选信号),由主设备控制。

图 1 SPI协议设备通信连接图

4.  SPI时钟信号的相位与极性

SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这是不能改变的,但我们的通信双方必须是工作在同一模式下。SPI接口由CPOL和CPHA设置四种不同传输格式的时序。

CPOL(Clock  Polarity)时钟极性——配置SCLK空闲态状态。

CPHA(Clock  Phase)时钟相位——配置数据采样在第1个/第2个边沿。

CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平。

CPHA:时钟相位选择,为0时在SCK第一个跳变沿采样,为1时在SCK第二个跳变沿采样,详见下表 1。

表 1SPI时钟相位CPHA对Master/Slave输出/采样的影响

CPOL/CPHA的设定

第一位数据的输出

其它位的输出

数据采样

CPOL=0,CPHA=0

在第一个SCK上升沿之前

SCK下降沿

SCK上升沿

CPOL=1,CPHA=0

在第一个SCK下降沿之前

SCK上升沿

SCK下降沿

CPOL=0,CPHA=1

第一个SCK上升沿

SCK上升沿

SCK下降沿

CPOL=1,CPHA=1

第一个SCK下降沿

SCK下降沿

SCK上升沿

 

 

 

 

 

 

 

 

 

 

 

4.1.    SPI时钟信号的相位、极性配置下的数据传输时序

工作方式1:当CPHA=0、CPOL=0时SPI总线工作在方式1。MISO引脚上的数据在第一个SCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。

 

 

图 2工作方式1时序图

工作方式2:当CPHA=0、CPOL=1时SPI总线工作在方式2。与前者唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线。

 

图 3工作方式2时序图

工作方式3:当CPHA=1、CPOL=0时SPI总线工作在方式3。MISO引脚和MOSI引脚上的数据的MSB位必须与SCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。

 

图 4工作方式3时序图

工作方式4:当CPHA=1、CPOL=1时SPI总线工作在方式4。与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。

 

图 5工作方式4时序图

5.数据传输分析

 

图 6工作方式4时序图

主机移位寄存器中的一个数据通过MOSI传到从机移位寄存器(即写操作);同时,从机移位寄存器中的一个数据通过MISO传到主机移位寄存器(即读操作);读写操作同时进行。

1.如果主机只进行写操作,主机只需忽略接收到的字节。

2.如果主机要读取从机的一个字节,必须先发送一个空字节0xFF,才能使从机中的数据移到主机。

 

posted @ 2019-12-31 17:06  王小虎8821  阅读(779)  评论(0)    收藏  举报