嵌入式通信协议:SPI简明学习笔记

SPI学习笔记

概述

SPI(Serial Peripheral interface)是一种高速、全双工、同步的通信总线,SPI通信速率具体取决于设备规格和性能,一般都可达10Mbps。

SPI分为主、从两种模式,一个SPI系统包含一个主设备,一个或多个从设备。提供时钟的为主设备,接收时钟的从设备。

通信协议

信号线

SPI接口共有四条信号线:
SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)
·MISO:主设备输入/从设备输出引脚。
·MOSI:主设备输出/从设备输出引脚。
·SCLK:串行时钟信号,由主设备产生。
·CS/SS:从设备片选信号,由主设备控制。
在这里插入图片描述

设备选择

SPI是单主设备通信协议,这意味着总线中的只有一个中心设备能发起通信。当SPI主设备想要读/写从设备时,它会首先拉低从设备对应的CS线(片选信号低电平有效),接着开始发送工作脉冲到时钟线上,在对应的脉冲时间上,主设备把信号发送到MOSI实现写,对MISO采样实现读

在这里插入图片描述

数据发送与接收

SPI主机和从机都有一个串行移位寄存器,主机通过向它的SPI移位寄存器写入一个字节来发起一次传输。

1.首先拉低对应的CS信号线,选择对应的从设备。
2.主机通过发送CLK时钟信号,来告诉从机写数据或者读数据。
3.主机将要发送的数据写到发送数据缓冲区SPIDAT,缓存区经过移位寄存器将字节通过MOSI信号线一位一位的传出去,而从机通过MOSI接收到SPIBUF中。
4.从机也通过MISO将自己的缓冲区数据一位一位的传送给主机的SPIBUF中。

在这里插入图片描述

SPI无读写的说法,只有主、从模式之分,外设的读写操作是同时完成的。如果只进行写操作,则可以忽略接收到的字节,如果只需要读操作,则必须发送一个空字节触发从机传输,也就是说,发一个数据必然会得到一个数据,收一个数据也要先发一个数据。

通信模式的选择

SPI有四种通信模式,不同的从设备出厂设定的通信模式是固定的,无法改动,此时就需要通过配置主设备的通信模式来实现与从设备通信。具体如下:

时钟极性(CPOL)定义了时钟空闲状态电平:

·CPOL=0,表示CLK=0时处于空闲态,所以有效状态为CLK为高电平时。
·CPOL=1,表示CLK=1时处于空闲态,所以有效状态为CLK为低电平时。

时钟相位(CPHA)定义了数据的采集时间:

·CPHA=0,在时钟的第一个跳变沿(上升沿/下降沿)进行数据采样,在第二个边沿发送数据。
·CPHA=1,在时钟的第二个跳变沿(上升沿/下降沿)进行数据采样,在第一个边沿发送数据。

如图:

在这里插入图片描述

模式1:数据在 SPICLK 上升沿输出。 输入数据在 SPICLK 下降沿锁存。

在这里插入图片描述

模式2:数据在 SPICLK 第一个上升沿之前的一个半周期输出,并在随后的下降沿输出。 输入数据在 SPICLK 的上升沿锁存。

在这里插入图片描述

模式3:数据在 SPICLK 下降沿输出。 输入数据在上升沿锁存。

在这里插入图片描述

模式4:数据在 SPICLK 第一个下降沿之前的一个半周期输出,并在随后的上升沿输出。 输入数据在 SPICLK 下降沿锁存。

SPI的三种模式

运行模式:基本模式。
等待模式:一种可配置的低功耗模式,如果为主机,则所有传输停止,但在进入运行模式后可重新开始;如果为从机,会继续接收和传输一个字节,保持从机和主机同步。
停止模式:如果为主机,传输停止;如果为从机,会继续接收和发送一个字节,保持同步。

SPI的数据格式

·SPI的数据长度从 2 位到 16 位不等
·SPI的移位方向(MSB优先或LSB优先)可以配置
·SPI 支持接收数据自动向右对齐,与移位方向和数据字长度无关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值