1. W25Q64 Flash 存储器与 SPI 总线工程实践
在嵌入式系统开发中,外部 Flash 存储器是扩展主控芯片非易失性存储能力的关键组件。W25Q64 是一款基于 SPI 接口的 64Mbit(8MB)串行 NOR Flash 芯片,广泛应用于固件存储、数据日志、参数配置等场景。其核心价值在于掉电后数据不丢失,且通过标准 SPI 总线即可实现高速、可靠的数据存取。本节将基于 STM32F103C8T6 微控制器,完整解析 W25Q64 的硬件连接、驱动初始化、底层通信协议及数据读写全流程。所有实现均严格遵循芯片官方数据手册(Winbond W25Q64JV Datasheet Rev. J),不依赖任何第三方库封装,确保开发者对每一行代码的物理意义和时序逻辑有完全掌控。
1.1 硬件连接与引脚重映射的工程必要性
W25Q64 采用标准四线 SPI 接口:SCK(时钟)、MOSI(主机输出/从机输入)、MISO(主机输入/从机输出)和 NSS(片选信号)。在 STM32F103C8T6 上,SPI1 外设的默认引脚为 PA5(SCK)、PA6(MISO)、PA7(MOSI)。然而,实际硬件设计中,为规避 PCB 布局冲突或复用其他功能,常需将这些信号重映射至其他 GPIO。本例中,SPI1 被重映射至 PB3(SCK)、PB4(MISO)、PB5(MOSI),此操作通过GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE)完成,该函数本质是置位 AFIO_MAPR 寄存器中的 SPI1_REMAP 位,强制将 SPI1 的复用功能路由至 PB 端口。
片选信号(NSS)的处理更具工程挑战性。本项目选用