SPI通信

SPI简介

SPI是一种串行外围设备通信接口,高速全双工通信总线,主要用于通信速率较高的场合。

SPI硬件连接

硬件连接图如下:
在这里插入图片描述
SPI通讯使用3条总线及片选线,总线分别为:SCK、MOSI、MISO,片选线为SS,主要作用如下:
(1)SS(片选线):用于选择从设备,成为片选信号线。当有多个SPI从设备与SPI主机相连时,设备的其他三条总线并联到相同的SPI总线,即使三条总线又从设备公用,但是片选线每个从设备都是独有的。SPI这一点与I2C协议不同,I2C通信是通过设备地址选中某个设备。SPI通信时,主机选择从设备时,将选中从设备的NSS信号线置为低电平,通信结束时,NSS信号线拉高。
(2)SCK:时钟信号线,用于数据同步。由主机产生,决定两者通讯速率,不同设备支持的最高时钟频率不一样。设备通讯速率受限于低速设备。
(3)MOSI:主设备输出/从设备输入引脚。主机数据输出,从机数据接收。该条线数据方向主机到从机。
(4)MISO:主设备输入/从设备输出引脚。主机由信号线读入数据,从机数据由信号线输出到主机。数据方向从机到主机。

SPI协议

1. SPI通讯时序图如下:

转载自零死角玩转STM32
这是一个主机通讯时许。NSS、SCK、MOSI信号均由主机控制产生,而MISO信号由从机产生,主机通过该信号线读取从机数据。在SCK的每个时钟周期MOSI和MISO传输一位数据。

2. SPI通信的起始和停止信号

上图标处1处,NSS信号线由高变低,是SPI通信的起始信号。标号6处,NSS信号由低变高,是SPI通信的停止信号,标志通信结束。

3. 数据有效性

MOSI及MISO数据线在SCK的每个时钟周期传输以为数据,并且数据输入输出是同时进行的。数据传输MSB或者LSB线性并没有作硬性规定,需要保证通讯设备之间使用同样的协定。上图中标号2345处,MOSI和MISO的数据在SCK的上升沿期间变化输出,在SCK的下降沿时被采样。SPI 每次数据传输可以8 位或16 位为单位,每次传输的单位数不受限制。

4. CPOL/CPHA

上图所描述的不过是SPI通信中的一种模式。SPI一共有四种通讯模式,主要区别是总线空闲时SCK的时钟状态以及数据采样时刻。介绍通信模式前需要引入“时钟极性CPOL”和“时钟相位CPHA”的概念。
时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK时钟线的电平信号,即是NSS线为高电平时SCK的电平状态。CPOL=0时,SCK在空闲状态时为低电平,CPOL=1时正好相反。
在这里插入图片描述

时钟相位CPHA 是指数据的采样的时刻, 当CPHA=0 时,MOSI 或MISO 数据线上的信号将会在SCK 时钟线的“奇数边沿”被采样。当CPHA=1时,数据线在SCK 的“偶数边沿”采样。
在这里插入图片描述根据CPOL和CPHA的时钟极性,SPI一共可分为四种通信模式:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值