【通信协议】一文搞懂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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>