
点击上方蓝色字体,关注我们
在嵌入式系统的面试中,SPI总线问题是非常常见的,面试官通常会从几个维度进行提问,包括协议基础、硬件实现、时序、性能优化等。
SPI(Serial Peripheral Interface,串行外围接口)是由Motorola(现NXP)公司于1980年代开发的同步串行协议,适用于短距离、高速芯片间通信。
不同于异步协议如UART,SPI依赖主设备生成的时钟信号实现同步,确保数据无漂移。其全双工特性允许同时发送和接收数据,数据速率可达数Mbps甚至更高(现代实现中可至100Mbps),但受限于迹线长度和电磁干扰(EMI)。
拓展学习:SPI、DSPI、QSPI技术对比、为什么SPI信号输出端加22Ω或33Ω电阻?、一文搞懂SPI通信协议

1
SPI总线的基本工作原理是什么?
SPI是一种同步串行通信协议,它用于在微控制器和外设(如传感器、存储器、显示器等)之间传输数据。SPI总线包含四个基本信号线:
SPI是一种全双工通信协议,可以在每个时钟周期内传输和接收数据。
每个传输通常是一个字节(8位),并且传输过程中,主设备控制时钟信号。

2
如何选择SPI的传输模式(CPOL、CPHA)?
SPI协议中有两个关键的时序参数:CPOL(Clock Polarity)和CPHA(Clock Phase)。
SPI总线的时序模式是通过CPOL和CPHA的组合来定义的。常见的模式有:
选择模式时要确保主从设备的时钟极性和相位一致,否则会导致数据错误。


3
如何避免数据丢失或时序错误?
SPI协议的时序错误常常由以下几个因素引起:
避免方法:
4
SPI总线中数据传输的错误检测和纠正方法是什么?
SPI协议本身不提供数据传输的错误检测机制,因此需要通过其他手段来确保数据传输的正确性:
5
SPI总线的多从机系统设计中,如何管理多个从设备?
在SPI的多从机系统中,主设备通过多个片选信号(SS)来选择不同的从设备。
每个从设备都有一个独立的片选引脚,在通信时,主设备需要拉低对应从设备的片选信号,只有选中的从设备才会响应。
设计注意事项:

6
如何在SPI通信中实现高速数据传输?
在SPI中实现高速传输的关键在于优化时钟频率、减少延迟、增强信号质量等。
7
比较SPI、I2C和UART这三种常用协议
SPI适用于需要高速数据流和高吞吐量的场景。它的全双工特性和高时钟频率使其成为处理大容量、连续数据流的首选 。例如,从高速ADC采集数据、与外置闪存或EEPROM进行读写操作,以及驱动液晶显示器等 。在这种场景下,SPI的引脚数劣势可以被其性能优势所弥补。
I2C适用于板内低速、多设备通信且需要节省引脚的场景。I2C通过地址寻址实现了多设备共享总线,大大减少了所需的连线数量 。它的半双工通信和较低的传输速率使其不适合高速应用,但非常适合连接各类传感器(如温度、湿度、加速度计)以及实时时钟等外设 。I2C更像一个“内部网络”,用于在多个低速设备间传递控制信息。
UART适用于简单的、点对点、无需严格时序的通信。UART的异步特性使其无需时钟线,硬件开销最低 。它主要用于PC与MCU之间的调试打印日志,或与GPS、蓝牙、WiFi等模块进行数据通信 。UART的局限在于其点对点的拓扑结构和相对较低的速率。

8
SPI总线如何支持DMA?
我们可以为SPI的发送(TX)和接收(RX)数据寄存器分别配置DMA通道。
当SPI TX数据寄存器空时,会触发DMA请求,DMA自动将内存中的数据搬移到SPI DR;当SPI RX数据寄存器满时,DMA自动将数据搬移到指定内存。整个过程无需CPU介入。
9
请设计一个系统,一个SPI主设备需要与三个SPI从设备通信,其中一个从设备只支持模式0,另外两个只支持模式3
由于从设备要求的SPI模式不同,不能简单地通过片选来切换,因为主设备在切换片选的瞬间,SPI时钟的模式是固定的。
SPI总线是嵌入式系统中常用的通信协议,掌握SPI的基本原理、时序设计、传输模式及性能优化是面试中的关键。
希望这些示例能帮助你更好地准备嵌入式面试。记住,面试官不仅想知道你“懂”什么,更想知道你是如何“用”这些知识的。