stm32的通信协议SPI(一):SPI通信协议

本文详细介绍了SPI接口的硬件构成、工作原理,包括单端信号、时钟同步、数据传输方式(全双工),以及SPI的四种时序模式。重点讲述了移位寄存器在数据交换中的作用和指令集的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.spi概述

2.spi的硬件电路

  • SPI所有通信线都是单端信号,高低电平都是相对GND的电压差,单端信号所有设备都需要共地,主机需要引出VCC与GND给从机供电。
  • 时钟线SCK完全由主机掌控,对主机来说,时钟线SCK配置为输出,对所有从机来说,时钟线SCK配置为输入,这样主机的时钟就能同步到各个从机了。
  • MOSI,主机输出从机输入,也称DO,主机通过MOSI输出给从机;MISO,主机输入从机输出,也叫DI,从机通过MISO输入主机。
  • SS相当于片选, IIC是通过寻址的,SPI通过SS线低电平有效来选择要通信的从机,由主机配置SS线输出低电平,输入到从机,其它从机SS线置高电平。通信结束从机的SS线又置回高电平,想控制几个从机就开几条SS线。
  • SPI的输出如SCK,SS,MOSI线都配置为推挽输出,对比IIC开漏输出弱上拉的模式,IIC下降沿快,上升沿不快, 而SPI使用推挽输出,有很高的驱动能力,上升沿与下降沿的速度都很快,所有传输速度就很快。一般SPI都能轻松到达MHz的级别。IIC因为是半双工,既经常要切换输出输入,又要实现多主机的时钟同步与总线仲裁,这些功能不允许IIC使用推挽输出,不然一不小心就电源短路。
  • SPI不支持多主机,SPI又是全双工,输出引脚始终是输出,输入始终是输入,基本冲突,可以大胆用推挽输出。但是呢,SPI还是有冲突点的,比如多个从机同时输出的情况,所以要规定一个从机输时其它从机为高阻态,SS低电平时才能恢复为推挽输出。不过写主机的程序可以不用管这个从机的问题。

3.SPI的移位示意图

SPI的移位结构有8位的移位寄存器,有时钟输入端,每来一个时钟,移位寄存器都会向左移位,从机也一样,时钟源是由主机的波动率发生器提供的。波特率发生器的时钟上升沿的时候,移位寄存器都向左移位,就是主机与从机的最高位,分别放到MOSI与MISO线上,下降沿的时候主机与从机都会进行数据采样输入,移出的最高位放到对方的最低位;然后是次高位,循环8个时钟主机与从机就交换一个字节了。

SPI的数据收发原理就是基于字节交换的单元。模式如下:

  • 发送一个字节:只发送不接收,主机不去看从机的字节就行;
  • 接受一个字节:只接受不发送,主机就抛砖引玉,用0X00或0xFF去跟从机交换字节,对主机交换的字节从机也不管。
  • 发送接收同时进行。

4.SPI的时序基本单元

基于SPI的字节交换原理,SPI 的时序就很好理解.

SPI总线的时序模式有4种,取决于极性CPOL与相位CPHL。

模式1模式2都是下降沿采样,模式0模式3是上升沿采样。

其中模式1的时序是跟上面的移位示意图匹配的 (不过很多例程用的是模式0.)

上面SPI的硬件电路说过,MISO在SS高电平的时候是保持高阻态的,下图的时序也体现了。

移位传输,CPHA=1, 所以第一个上升沿主机从机左移位。下降沿时候交换位。

这样经过8个时钟就可以交换一个字节的数据。

交换结束,从机的MISO回到高阻态,如果此时主机的MISO是上拉输入,从机的MISO的电平就是高电平。如果主机的MISO引脚电平不确定,,从机的MISO的电平就不确定,SPI没有硬性规定主机MOSI电平.

5.SPI的时序

SPI的有效数据流是指令码+读写位,而IIC的有效数据流是地址+读写位,是寄存器模式的。

SPI从机的芯片手册中有指令集,什么指令对应什么功能,什么指令后面得跟上什么数据,不同指令有不同的字节长度, 使能失能只需要一个指令,读写数据就要多些字节。

(1)发送指令,向SS线指定的从机发送指令。

(2)指定地址写,向SS指定的设备,发送写指令,然后在指定地址,写入指定数据。

(3)指定地址读,向SS指定的设备,发送读指令,然后在指定地址,读取从机数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半重积分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值