SPI通信协议记录贴

写这篇文章,主要是为了记录一下工作中用到的一些技术、协议等等,随时填充一些细节,方便后续需要,不用再到处找资料了。如有错误的地方,希望各位大佬予以指教!

一、SPI简介

SPI总线是一种高速的全双工同步串行总线,他采用主从方式工作,SPI只能有一个主机和一个或多个从机。与IIC不同的是,SPI有两根数据线,发送和接收可以同时进行,但是SPI没有应答机制确认是否接收到数据,数据可靠性比IIC低一些。

二、硬件连接

SPI有四条总线,分别为MISO(主机输入从机输出)、MOSI(主机输出从机输入)、SCLK(时钟)、CS(片选),连接方式如图1所示。

图1 硬件连接

三、通信过程

  1. 主机向对应从机的CS(片选线)上发送使能信号并选中该从机

  1. 主机发送时钟信号,控制主机发送数据,从机接收数据,时钟信号由工作模式来确定

  1. 主机通过MOSI线上发送数据,从机读取;从机通过MISO线上发送数据,主机读取

  1. 一个字节数据传输完紧接着传输下一字节数据,没有应答信号和终止信号

1.寻址方式

当主机要进行通信时,主机向要控制的从机的CS(片选线)上发送使能信号(一般是低电平,具体要看数据手册),表示选中该从机,只有该从机能跟主机通信。

图2 寻址

2.通信模式

SPI有四种工作模式,通过极性(CPOL)和相位(CPHA)来控制主机的工作模式

CPOL表示时钟空闲时的电平状态

CPOL=0,空闲时SCLK为电平

CPOL=1,空闲时SCLK为电平

CPHA表示采样时间

CPHA=0,每个周期的第一个时钟沿读取数据

CPHA=1,每个周期的第二个时钟沿读取数据

mode 0

CPOL = 0, CPHA = 0

SCLK空闲时为低电平,开始通信时发送器先发送一位数据,在SCLK由低电平变高电平时读取数据,也就是在第一个时钟沿变化时读取数据。


mode 1

CPOL = 0, CPHA = 1

SCLK空闲时为低电平,开始通信时发送器先发送一位数据,在SCLK由高电平变低电平时读取数据,也就是在第二个时钟沿变化时读取数据。


mode 2

CPOL = 1, CPHA = 0

SCLK空闲时为高电平,开始通信时发送器先发送一位数据,在SCLK由高电平变低电平时读取数据,也就是在第一个时钟沿变化时读取数据。


mode 3

CPOL = 1, CPHA = 1

SCLK空闲时为高电平,开始通信时发送器先发送一位数据,在SCLK由低电平变高电平时读取数据,也就是在第二个时钟沿变化时读取数据。

四、IIC、SPI的区别

1.相同点

  1. 都是串行、同步的总线

  1. 采用TTL电平,传输距离以及场合相差不大

  1. 属于主从方式工作

2.异同点

  1. IIC为半双工、SPI为全双工

  1. IIC可以多主机,SPI只有一个主机

  1. IIC有应答机制,有起始信号和终止信号,SPI无

  1. IIC通过发送一个字节数据寻址,SPI向对应从机的CS使能寻址

  1. IIC时钟极性和相位固定,SPI时钟极性和相位可以设置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值