硬件设计基础----通信协议SPI
Posted 鲁棒最小二乘支持向量机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬件设计基础----通信协议SPI相关的知识,希望对你有一定的参考价值。
1 SPI通信协议
1.1 协议介绍
SPI(Serial Peripheral Interface)串行外围设备接口
,是一种高速的,全双工,一主多从,同步通信总线,通信速率一般为10Mbps,主要应用在EEPROM、FLASH、AD等
SPI分为主、从两种模式,SPI通信系统包含一个主设备(Master),一个或多个从设备(Slave)
,其中,提供时钟信号的为主设备,接收时钟的设备为从设备,读写操作由主设备发起
1.2 设备连接
SPI硬件接口:
- SCLK: 串行时钟信号线
- MISO: 主设备输入/从设备输出信号线
- MOSI: 主设备输出/从设备输入信号线
- CS: 从设备片选信号线
SPI一主机一从机硬件连接,如图所示:
SPI一主机多从机硬件连接,如图所示:
1.3 通信模式
SPI通信有四种
不同的模式,通信双方设备必须在同一模式下完成通信,从设备的通信模式固定不变,所以,需要对主设备进行配置,匹配通信模式
SPI_CR寄存器
的CPOL(时钟极性)和CPHA(时钟相位)控制主设备通信模式,CPOL配置SCLK电平的有效,CPHA配置数据采样发生在第几个边沿:
模式 | CPOL | CPHA |
---|---|---|
Mode0 | 0 | 0 |
Mode1 | 0 | 1 |
Mode2 | 1 | 0 |
Mode3 | 1 | 1 |
- CPOL=0表示SCLK=0时处于空闲状态,即SCLK高电平有效
- CPOL=1表示SCLK=1时处于空闲状态,即SCLK低电平有效
- CPHA=0表示数据采样在第1个边沿,数据发送在第2个边沿
- CPHA=1表示数据采样在第2个边沿,数据发送在第1个边沿
2 SPI工作原理
2.1 SPI总线数据帧
MOSI和MISO同时进行,可以看作是环形拓扑结构
,如图所示:
主设备和从设备都有一个串行移位寄存器
,主设备移位寄存器数据经过MOSI将数据写入从设备的移位寄存器,此时从设备的串行移位寄存器的数据也通过MISO传给了主设备,实现了两个移位寄存器的数据交换。主设备和从设备, 发送和接收都是同时进行的。如果主设备只对从设备进行写操作,主设备忽略接收的从设备数据即可。如果主设备要读取从设备数据,主设备需要发送一个空数据来引发从设备发送数据
数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接收的数据长度,SPI_CR1寄存器如图所示:
- 位11:
DFF,数据帧格式
,0:使用8位数据帧格式进行发送/接收;1:使用16位数据帧格式进行发送/接收 - 位7:
LSBFIRST,帧格式
,0:先发送MSB,即先发送高字节;1:先发送LSB,即先发送低字节 - 位6:
SPE,SPI使能
,0:禁止SPI设备;1:开启SPI设备 - 位1:
CPOL,时钟极性
,0:空闲状态时,SCK保持低电平;1:空闲状态时,SCK保持高电平 - 位0:
CPHA,时钟相位
,0:数据采样从第一个时钟边沿开始;1:数据采样从第二个时钟边沿开始
2.2 SPI读写时序
四种模式的时序,如图所示:
- CPOL=0,CPHA=0: 空闲态时,SCLK处于低电平;数据采样是在第1个边沿。SCLK由低电平到高电平的跳变,数据采样是在上升沿,数据发送是在下降沿
- CPOL=0,CPHA=1: 空闲态时,SCLK处于低电平;数据发送是在第1个边沿。SCLK由低电平到高电平的跳变,数据采样是在下降沿,数据发送是在上升沿
- CPOL=1,CPHA=0: 空闲态时,SCLK处于高电平;数据采集是在第1个边沿。SCLK由高电平到低电平的跳变,数据采集是在下降沿,数据发送是在上升沿
- CPOL=1,CPHA=1: 空闲态时,SCLK处于高电平;数据发送是在第1个边沿。SCLK由高电平到低电平的跳变,数据采集是在上升沿,数据发送是在下降沿
SPI主设备能够控制时钟信号
,但是SPI通信不像UART、IIC通信有专门的通信周期、通信起始信号、通信结束信号
以CPOL=0,CPHA=0工作模式为例,通信时序如图所示:
SPI是全双工的
,所以读时序和写时序可以一起完成,图中CS片选信号变为低电平,选中要通信的从机,然后通过MOSI和MISO这两根数据线进行收发数据
3 SPI通信特点
优点:
- 全双工通信
- 通信简单
- 8或16位传输帧格式选择
- 数据传输速率快
缺点:
- 没有应答机制确认是否收到数据
- 没有寻址机制,只能靠片选选择不同从设备
- 传输距离较近
- 只支持单主机
对比UART、IIC、SPI总线:
总线接口 | 串/并 | 同步/异步 | 速率 | 工作方式 | 通信线 | 总线拓扑 | 通信距离 |
---|---|---|---|---|---|---|---|
UART | 串行 | 异步 | 慢 | 全双工 | RX、TX | RS485总线型、星型、树型 | 远 |
IIC | 串行 | 同步 | 较慢 | 半双工 | SDA、SCL | 总线型 | 近 |
SPI | 串行 | 同步 | 快 | 全双工 | SCLK、SIMO、SOMI、CS | 环形 | 较近 |
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距
以上是关于硬件设计基础----通信协议SPI的主要内容,如果未能解决你的问题,请参考以下文章