STM32学习 SPI通信

SPI通信是一种全双工,同步,高速的通信方式,与IIC不同的是,SPI所占的引脚数比IIC多。SPI的信号线,SPI接口一般使用四条信号线通信:SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。

MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCLK:串行时钟信号,由主设备产生。
CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

SPI一对一

SPI一对多

注意,这里所有设别的MOSI连在了一起,所有的MISO连在了一起,那么主机是如何向指定的设备发送数据呢,通过片选CS信号(可能高有效,可能低有效,取决于不同的设备),并且当主机向指定的从机发送数据时,未被选中的从机数据引脚应该是高阻态。

SPI的通信模式

SPI收发数据是通过交换字节来实现的,选中想要通信的从机设备之后,SCLK时钟线开始发送时钟信号,这个时钟信号可能低电平空闲也可能高电平空闲,这个可以进行配置。主机把想要发送的数据写入到主机的移位寄存器中,当时钟来临时,把数据一位一位的通过MOSI线发送给从机。同时,从机也会把从机的移位寄存器中的数据一位一位的通过MISO线发送给主机,也就是收发是一起的,在发送的同时也在接收,如图所示

实际上就是主机和从机通过完成字节交换来达到通信的目的,数据传输时高位在前,低位在后,SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

SPI的通信模式

这里有两个控制变量,时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase),

CPOL=0,空闲模式时SCLK为低电平,也就是说,当开始传数据时,SCLK发出脉冲信号,要从低电平先变为高电平,那么第一个边沿就是上升沿,第二个边沿就是下降沿。

CPOL=1,空闲模式时SCLK为高电平,也就是说,当开始传数据时,SCLK发出脉冲信号,要从低电平先变为高电平,那么第一个边沿就是下降沿,第二个边沿就是上升沿。

这里解释一下第一个边沿和第二个边沿的意思,CHPA会有所区分。

CPHA=0,在第一个边沿进行数据采样,第二个边沿进行数据切换。

CPHA=1,在第一个边沿进行数据切换,第二个边沿进行数据采样。

这里解释一下数据采样和数据切换。

数据采样,就是把数据线上的数据读入到移位寄存器中,也就是线到寄存器位的过程,这个过程必须保证线上的数据保持稳定不能发生变化,不然会出错。(对应数据移入)

数据切换,就是把移位寄存器上的位数据放到数据线上,再进行发送,所以这个过程会出现数据跳变,0->1或者1->0的变化。(对应数据移出)

可以看到各有两种模式,所以互相对应起来就是4种通信模式。

SPI通常采用指令码+读写数据的类型,在从机中会有对应的指令集,告诉从机需要做什么,有的指令码可能需要发送多次才能执行。与IIC不同,IIC采用的是发送设备地址然后读写寄存器的操作,SPI是CS片选之后发送指令码进行操作,但是并没有应答的操作

SPI指令

使能指令,一般就是一条固定的指令

指定地址写,写数据指令+指定的地址+写入的数据;这个地址和数据可能是多个字节,分多次传输。

指定地址读,读数据指令+指定的地址+读入的数据;这个地址和数据可能是多个字节,分多次传输。

注意这里,因为SPI通信依靠的是字节交换,在指定地址写时,主机向从机是进行有效字节的交换,从机可以拿无效字节进行交换;在指定地址读时,先是主机向从机进行有效字节的交换,从机可以拿无效字节进行交换,也就是指令+地址,之后就是从机向主机进行有效字节(读入的数据)的交换,主机可以拿无效字节进行交换。

参考文章

SPI原理超详细讲解---值得一看-CSDN博客

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值