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,才能使从机中的数据移到主机。

浙公网安备 33010602011771号