FPGA学习笔记
SPI协议
1. SPI协议概念
2. SPI协议原理
1. SPI协议概念
SPI:串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线。
特点:一主多从,高速的(可达几十Mbps),全双工,同步的通信总线,最大时钟频率为系统时钟频率的1/2, 在同另一个非常高速率的SPI设备通讯时,SPI的最大时钟频率将有可能制约其传输速率。
优点:在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。
应用:EEPROM, FLASH, 实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
2. SPI协议原理
- 拓扑结构
- 可以分别控制每一个从器件,通信各自独立,在时间上分开,互不干扰。
2. 三个从机同时工作,在一次通信过程中,数据把所有从机的数据都拿给主机。适用于串行转并行场合,74HC595这类芯片,可用这种方式,一次性把所有数据输出。
-
工作原理
4种模式(MODE1~4):
(极性)CPOL =0/1:决定时钟的有效电平,
(相位)CPHA=0/1:决定了数据采样和传输的边沿。CPOL =0:SCK空闲状态为0,有效状态为高电平
CPOL =1:SCK空闲状态为1,有效状态为低电平
CPHA =0:在时钟的第一个跳变沿采集数据
CPHA =1:在时钟的第二个跳变沿采集数据
开始通信,片选信号SS拉低,主机开始发出时钟SCLK,同时发出数据到MOSI,
- MODE0: CPOL=0,默认SCLK为低电平,由低电平跳变为高电平,若CPHA=0,在第一个跳变沿(#1)采集数据(此时数据必须稳定),在第二个跳变沿(#2),数据发生改变;依次类推,完成出8个数据发送。
注意:在时钟边沿发送出之前,先把数据放好。 - MODE1: CPOL=0,CPHA =1,默认SCLK=0, 由低电平跳变为高电平,在时钟的第二个跳变沿(#2)采集数据,在第三个跳变沿(#3),数据发生改变;依次类推,完成出8个数据发送。
- MODE2: CPOL=1,CPHA=0,默认SCLK=1,由高电平跳变为低电平,在第一个跳变沿(#1)采集数据(此时数据必须稳定),在第二个跳变沿(#2),数据发生改变;依次类推,完成出8个数据发送。
- MODE3: CPOL=1,CPHA=1,默认SCLK=1, 由高电平跳变为低电平,在时钟的第二个跳变沿(#2)采集数据,在第三个跳变沿(#3),数据发生改变;依次类推,完成出8个数据发送。
- MODE0: CPOL=0,默认SCLK为低电平,由低电平跳变为高电平,若CPHA=0,在第一个跳变沿(#1)采集数据(此时数据必须稳定),在第二个跳变沿(#2),数据发生改变;依次类推,完成出8个数据发送。
怎么确定主从之间的工作模式 :
-
若是传感器,会有datasheet,在上面明确表明了它的工作模式,传输时序,根据要求就能确定;
-
若主从为MCU,主从程序则有我们自己确定,传输就可以由我们自己定,但是两个MCU里面必须使用同样的模式来设置;
对比UART:
优点:
- SPI有相对较高的通信速率,几兆到几十兆。
- 时钟可以同步,总线的出错率低。
- UART是一对一,SPI可以一对多。
缺点:不同的从机需要处理片选线,比较麻烦。
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~