详解SPI通信协议

一、SPI简介

SPI,即Serial Peripheral Interface的英文缩写。从字面意思看就是串行外部设备接口,是一种全双工、高速、同步的通信总线。

SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器(MCU)连接外部设备之间的同步串行通信,主要应用于Flash、数模转换器、信号处理器、控制器、EEPROM存储器等外设中。

SPI总线属于一主多从接口,和I2C不同的是,SPI 采用CS片选来控制主机与从机通信。现在的单片机几乎都支持SPI总线,其已经成为一种高速、同步、双工的通用标准,在IoT产品中得到广泛应用。

二、SPI有几根线?

SPI通常有4根线(四线制),可实现全双工通信

【SCK】: 串行时钟(Serial Clock)

【MOSI】:主发从收信号(Master Output, Slave Input)

【MISO】:主收从发信号(Master Input, Slave Output

【CS/CS】:片选信号(Slave Select)
SPI四线制
SPI应用也有3根线(三线制),实现半双工通信。SPI三线制

三、SPI通信原理

SPI模块为了和外部设备进行数据交换,可以根据外设工作要求通过配置CPHA(时钟相位,Clock Phase 决定数据传输采样和移位方式)、CPOL(时钟极性,Clock Polarity 决定时钟空闲状态电平是高电平还是低电平)来控制设备通信。
这两种模式分别对用芯片上的两个引脚,每个引脚有高低电平两种模式,所以SPI协议总共组成了4种通信模式。
SPI四种通信模式时钟极性CPOL用来配置SCLK时钟线的电平在哪种状态时是有效状态或者空闲状态。时钟相位CPHA是用来配置数据采样实在哪个边沿:
CPOL=0,当SCLK=0时处于空闲态,有效状态就是SCLK处于高电平时

CPOL=1,当SCLK=1时处于空闲态,有效状态就是SCLK处于低电平时

CPHA=0,数据采样是在第1个边沿,数据发送在第2个边沿

CPHA=1,数据采样是在第2个边沿,数据发送在第1个边沿

SPI四种通信状态SPI0:
CPOL=0、CPHA=0,SCK为低电平时处于空闲态,数据采样是在第一个边沿,也就是SCK由低电平到高电平跳变时进行采样,所以在该模式下,数据采样是在上升沿,数据发送是在第二个边沿的下降沿状态。

SPI1:
CPOL=0、CPHA=1,SCK为低电平时处于空闲态,数据采样是在第二个边沿,SCK由高电平到低电平跳变时进行采样,所以在该模式下,数据采样是在下降沿,数据发送是在第一个边沿的上升沿状态。

SPI2:
CPOL=1、CPHA=0,SCK为高电平时处于空闲态,数据采样是在第一个边沿,也就是SCK由高电平到低电平跳变时进行采样,所以在该模式下,数据采样是在下降沿,数据发送是在第二个边沿的上升沿状态。

SPI3:
CPOL=1、CPHA=1,SCK为高电平时处于空闲态,数据采样是在第二个边沿,也就是SCK由低电平到高电平跳变时进行采样,所以在该模式下,数据采样是在下降沿,数据发送是在第一个边沿的上升沿状态。

在CPOL=0时

也就是在空闲状态时时钟电平一直处于低电平状态,当他变为有效态时首先拉高电平,然后在整个有效期内进行高低电平的不断交换。
在CPHA=0时,在第一个上升沿进行数据采集,在第二个状态沿也就是下降沿进行数据发送
在CPHA=1时,在第一个上升沿进行数据发送,在第二个状态沿也就是下降沿时进行数据收集;

在CPOL=1时

在空闲状态时时钟电平一直处于高电平状态,当他变为有效态时首先拉低电平,然后在整个有效期内进行高低电平的不断交换。
在CPHA=0时,在第一个下降沿沿进行数据采集,在第二个状态沿也就是上升沿进行数据发送
在CPHA=1时,在第一个下降沿进行数据发送,在第二个状态沿也就是上升沿沿时进行数据收集;

SPI的优缺点

1.在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。但多个从设备系统中,每个从设备需要独立的片选信号,硬件上比I2C系统要稍微复杂一些。
2.SPI没有指定的流控制,没有应答机制确认是否收到数据

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值