【通信协议】一文搞懂SPI

SPI总线简介

SPI(Serial Peripheral Interface)是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

接口定义

图片

SPI接口共有4根信号线,分别是:片选信号、时钟信号、串行输出信号、串行输入信号。

  • MOSI:Master数据输出,Slave数据输入

  • MISO:Master数据输入,Slave数据输出

  • SCLK :时钟信号,由Master产生

  • SS:片选信号,由Master控制

时钟极性和时钟相位

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)。

时钟极性: 时钟空闲时的电平。

时钟相位: 采样数据的时钟沿。

SPI模式

CPOL CPHA
模式0 0 0
模式1 0 1
模式2 1 0
模式3 1 1

CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)

CPHA: SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)

  • 模式0

图片

空闲状态CLK为低电平,CLK上升沿采样(这时候数据不能改变)。

  • 模式1

图片

空闲状态CLK为低电平,CLK下降沿采样(这时候数据不能改变)。

  • 模式2

图片

空闲状态CLK为高电平,CLK下升沿采样(这时候数据不能改变)。

*注意: 上图的第一个CLK下降沿应该往右移动一点更准确,因为采样时数据不应该改变。

  • 模式3

图片

空闲状态CLK为高电平,CLK上降沿采样(这时候数据不能改变)。

注意:

当CPHA为0时,采集数据发生在时钟周期的前边沿(第一个边沿,可能是上升沿也可能是下降沿,由CPOL决定);

当CPHA为1时,采集数据发生在时钟周期的后边沿(第二个边沿,可能是上升沿也可能是下降沿,由CPOL决定);

所以不能说CPHA=0就是上升沿或下降沿采集数据,要根据CPOL才能确定。

总结

当我们写某SPI芯片的驱动时,主要要关注外设芯片的SPI模式(时钟极性和时钟相位),以及寄存器,这些在datasheet中都会体现。

往期推荐:

嵌入式到底应该选择驱动开发,还是应用开发?

【通信协议】一文搞懂I2C

如何实现一个Linux命令

推荐几款串口监控软件

一文搞懂UART

版权声明:本文为CSDN博主「曼巴精神传承人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012041204/article/details/122270005

SPI总线简介

SPI(Serial Peripheral Interface)是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

接口定义

图片

SPI接口共有4根信号线,分别是:片选信号、时钟信号、串行输出信号、串行输入信号。

  • MOSI:Master数据输出,Slave数据输入

  • MISO:Master数据输入,Slave数据输出

  • SCLK :时钟信号,由Master产生

  • SS:片选信号,由Master控制

时钟极性和时钟相位

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)。

时钟极性: 时钟空闲时的电平。

时钟相位: 采样数据的时钟沿。

SPI模式

CPOL CPHA
模式0 0 0
模式1 0 1
模式2 1 0
模式3 1 1

CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)

CPHA: SPI在时钟第几个边沿采样(1:第二个边沿开始, 0:第一个边沿开始)

  • 模式0

图片

空闲状态CLK为低电平,CLK上升沿采样(这时候数据不能改变)。

  • 模式1

图片

空闲状态CLK为低电平,CLK下降沿采样(这时候数据不能改变)。

  • 模式2

图片

空闲状态CLK为高电平,CLK下升沿采样(这时候数据不能改变)。

*注意: 上图的第一个CLK下降沿应该往右移动一点更准确,因为采样时数据不应该改变。

  • 模式3

图片

空闲状态CLK为高电平,CLK上降沿采样(这时候数据不能改变)。

注意:

当CPHA为0时,采集数据发生在时钟周期的前边沿(第一个边沿,可能是上升沿也可能是下降沿,由CPOL决定);

当CPHA为1时,采集数据发生在时钟周期的后边沿(第二个边沿,可能是上升沿也可能是下降沿,由CPOL决定);

所以不能说CPHA=0就是上升沿或下降沿采集数据,要根据CPOL才能确定。

总结

当我们写某SPI芯片的驱动时,主要要关注外设芯片的SPI模式(时钟极性和时钟相位),以及寄存器,这些在datasheet中都会体现。

往期推荐:

嵌入式到底应该选择驱动开发,还是应用开发?

【通信协议】一文搞懂I2C

如何实现一个Linux命令

推荐几款串口监控软件

一文搞懂UART

版权声明:本文为CSDN博主「曼巴精神传承人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012041204/article/details/122270005

生成海报
点赞 0

曼巴精神传承人

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

【通信协议】一文搞懂SPI

SPI总线简介 SPI(Serial Peripheral Interface)是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 接口定义 SPI接口共有

IIC协议的SPI协议的对比

相同点 均采用串行、同步的方式。均采用TTL电平,传输距离短。均采用主从方式工作。 不同点 IIC为半双工,SPI为全双工。IIC有应答机制,SPI无应答机制。IIC通过总线广播从机地址来寻址&#

基于STM32的指纹密码锁

设计简介: 本设计是基于单片机的指纹密码锁,主要实现以下功能: 矩阵按键输入密码,并通过按键显示*号可通过按键或手机开门密码可通过按键进行开门可通过蓝牙模块连接手机进行开门可通过指纹进