SPI Flash(以 W25Q32 为典型代表)支持多模式引脚复用机制,通过切换引脚功能,可在传输速率、硬件功能、引脚资源占用之间灵活取舍。器件核心关键引脚包含:片选引脚 /CS、时钟引脚 CLK、写保护引脚 /WP、总线保持引脚 /HOLD 以及四组通用数据引脚 IO0~IO3。不同工作模式下,数据引脚与功能引脚会发生复用切换,以此提升数据吞吐效率。
一、三种主流 SPI 工作模式及引脚定义
1. 标准 SPI 模式(Standard SPI)
2. 双线 SPI 模式(Dual SPI)
3. 四线 SPI 模式(Quad SPI)
二、STM32 芯片引脚复用与模式配置要点
5. 配置 SPI 控制寄存器 CR1 中的 CPOL、CPHA 时钟极性/相位参数,严格匹配 Flash 工作模式,避免通信异常;
GPIO_InitTypeDef GPIO_InitStruct;
SPI_InitTypeDef SPI_InitStruct;
// 引脚初始化:SCK、MISO、MOSI
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
// SPI 模式配置
SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 双线全双工
SPI_InitStruct.SPI_Mode = SPI_Mode_Master; // 主机模式
SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b; // 8位数据帧
SPI_InitStruct.SPI_CPOL = SPI_CPOL_High; // 时钟极性
SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge; // 时钟相位
SPI_InitStruct.SPI_NSS = SPI_NSS_Soft; // 软件片选
SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; // 4分频波特率
SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB; // 高位先行
SPI_Init(SPI2, &SPI_InitStruct);
优势为通用性、兼容性拉满,适配低速读写、需要保留硬件写保护、引脚功能复用受限的常规场景,是工业设备、通用单片机项目的通用选型。
四、拓展应用(FPGA / SoC 平台)