电子通信的SPI通信协议的基础

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

本文介绍了SPI、I2C和UART三种通信协议,适用于微控制器和传感器之间的通信。SPI是一种高速、全双工、同步的通信总线,适用于EEPROM、FLASH等设备之间的通信。SPI具有四种传输模式,只有主模式和从模式。使用SPI的优点是高速传输和连续流式传输数据,缺点是使用四根线,无法确认数据接收成功,只允许单个主机。

🔎

延伸解读

SPI 的“数据交换”本质:发与收同步进行

SPI 协议规定,每个时钟周期内主从设备会同时发送并接收一个比特的数据,因此数据传输被称为“数据交换”。这意味着设备无法只发送或只接收:你发一个数据必然会收到一个数据,要收数据也必须先发数据。这种机制要求程序在传输后及时读取接收缓冲区,即使数据无用,否则可能被丢弃,导致 SPI 模块失效。

模式匹配是关键:CPOL 与 CPHA 必须一致

SPI 有四种传输模式,由时钟极性(CPOL)和时钟相位(CPHA)组合决定。主设备的模式必须与从设备一致才能正常通信。从设备的模式可能由硬件固定(需查阅数据手册确定空闲电平和采样边沿),也可能由软件配置。因此,在编写主设备程序前,务必先确认从设备的 SPI 模式,再设置主设备对应的寄存器位。

SPI 的取舍:高速简单,但缺乏确认与多主支持

SPI 的优点包括无启动停止位、可连续流式传输、比 I2C 几乎快两倍的数据速率,以及独立的 MISO 和 MOSI 线实现全双工。但代价是使用四根线(I2C 和 UART 仅两根),无法确认数据是否被成功接收,也没有奇偶校验等错误检查机制,并且只允许单个主机。这些特性决定了 SPI 更适合短距离、高速、对可靠性要求不苛刻的板级通信。

❓

Q&A

SPI通信协议是什么?它主要用在哪些设备之间?

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速、全双工、同步的通信总线,由Motorola首先在其MC68HCXX系列处理器上定义。它主要应用于EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器等设备之间的通信。

SPI协议有哪些主要特点?

SPI的主要特点包括:采用主-从模式控制,主设备通过片选信号控制多个从设备;采用同步方式传输数据,时钟信号由主设备提供;数据交换是全双工的,每个时钟周期发送和接收一个比特;有四种传输模式(基于时钟极性和相位);只有主模式和从模式之分,没有读和写的说法。

SPI的四种传输模式是如何定义的?

SPI的四种传输模式由时钟极性(CPOL)和时钟相位(CPHA)的组合决定:Mode 0(CPOL=0, CPHA=0)、Mode 1(CPOL=0, CPHA=1)、Mode 2(CPOL=1, CPHA=0)、Mode 3(CPOL=1, CPHA=1)。CPOL表示时钟空闲时的电平状态,CPHA表示数据采样发生在第一个还是第二个边沿。

SPI通信的工作机制是怎样的?涉及哪些关键组件?

SPI通信通过主从设备间的数据交换实现。关键组件包括:SSPBUF(同步串行端口缓冲区,用于临时保存数据)、SSPSR(同步串行端口寄存器,即移位寄存器,根据数据位宽移入/移出数据)、Controller(控制寄存器,配置传输模式)。通信过程涉及四个管脚:SCK(时钟)、SS/CS(片选)、SDO/MOSI(数据输出)、SDI/MISO(数据输入)。主设备通过片选信号选择从设备,并在时钟信号控制下进行全双工数据交换。

使用SPI协议有哪些优点和缺点?

SPI的优点包括:没有启动和停止位,数据可以连续流式传输;没有复杂的从机寻址系统;比I2C有更高的数据传输速率(几乎快两倍);有独立的MISO和MOSI线,可以同时发送和接收数据。缺点包括:使用四根线(I2C和UART使用两根);无法确认数据已成功接收;没有错误检查机制;仅允许单个主机。

如何设置SPI的极性和相位以匹配从设备?

首先需要确定从设备的SPI模式:如果从设备的模式是固定的,需查阅其数据手册,了解空闲时时钟电平(决定CPOL)和数据采样边沿(决定CPHA);如果从设备模式可配置,则可通过软件设置。确定从设备模式后,将主设备的SPI模式设置为与从设备相同的模式即可正常通信。通常通过配置SPI控制器中对应的CPOL和CPHA寄存器位来实现。

🏷️

标签

➡️

继续阅读