[STM32]SPI总线协议详解及软件实现
1.SPI简介SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工的同步串行通信协议,广泛应用于嵌入式系统中连接微控制器与外围设备。SPI采用主从架构,通过四根基本信号线实现通信:MOSI(主设备输出,从设备输入)、MISO(主设备输入,从设备输出)、SCLK(时钟信号)和SS/CS(片选信号)。主设备通过片选信号(SS)选择目标从设备,并控制时钟(SCLK)同步数据传输,支持多从设备架构,但每个从设备需独立片选线,导致引脚占用较多。SPI通过配置时钟极性(CPOL)和时钟相位(CPHA)适应不同设备的时序需求,传输速率可达数十MHz。其优势在于协议简单、全双工通信及高传输效率,适用于存储器(如SD卡)、传感器(如加速度计)和显示屏驱动等场景。相比I2C,SPI无需地址寻址且速率更高,但缺乏错误检测机制,扩展性受限于引脚数量,因此多用于对速度要求高、设备数量较少的系统。2. SPI接口定义引脚简称全称方向作用备注SCLKSerial Clock主设备 → 从设备主设备产生的时钟信号,同步数据传输时序。频率决定传输速率(如1MHz、10MHz)。MOSIMaster Out Slave In主设备 → 从设备主设备发送数据到从设备(如指令、写入值)。部分文档可能标记为 SDO(Serial Data Out)。MISOMaster In Slave Out从设备 → 主设备从设备发送数据到主设备(如传感器读数、状态反馈)。部分文档可能标记为 SDI(Serial Data In)。