STM32F746G-Disco外接N25Q128A:固件烧录及外部闪存启动配置指导
STM32F746G-Disco 外接N25Q128A:固件烧录与外部闪存启动配置
一、硬件连接核对
- 确认N25Q128A与STM32的SPI布线:SCK接PA5、MISO接PA6、MOSI接PA7、CS接PB6(若实际接线不同,后续工程配置需对应调整)
- 确保7寸电容触摸LCD的供电与信号线连接正常(开发板原LCD接口无需改动)
二、工程编译配置(以STM32CubeIDE为例)
1. 内存映射调整
- 打开工程的
.ld链接脚本,修改FLASH段的起始地址与容量:
(FLASH (rx) : ORIGIN = 0x90000000, LENGTH = 16M0x90000000是STM32F7默认的外部SPI闪存映射地址,16M对应N25Q128A的128Mb存储容量) - 设置向量表偏移:在
system_stm32f7xx.c中修改VECT_TAB_OFFSET为0x90000000;或在CubeMX的System Core -> NVIC面板,将Vector Table Location设为手动指定偏移并填入该地址
2. SPI闪存驱动配置
- 在CubeMX中启用对应SPI外设(如SPI1),配置为
Full-Duplex Master模式 - 基于HAL SPI接口封装N25Q128A的擦除、写入、读取函数(建议开启Quad SPI模式以提升读写速度)
三、外部闪存烧录步骤
使用STM32CubeProgrammer烧录
- 开发板连接电脑,打开STM32CubeProgrammer并选择ST-LINK连接方式
- 切换至
Memory & File选项卡,目标地址填入0x90000000 - 选择生成的
.hex或.bin文件,点击Download完成烧录(链接脚本调整正确后,hex文件会自动包含外部闪存地址段内容)
调试时直接下载(可选)
- 在调试配置中添加
Pre-debug脚本,调用SPI驱动擦除外部闪存指定区域 - 将调试器的下载目标地址设为
0x90000000,而非内部闪存
四、启动配置(核心操作)
1. BOOT引脚设置
- 保持BOOT0=0、BOOT1=0(默认用户闪存启动状态),无需改动引脚,通过代码重映射向量表实现外部闪存启动
2. 代码层面向量表重映射
- 在
main()函数最开头(HAL初始化之前)添加以下代码:SCB->VTOR = 0x90000000; // 直接将向量表偏移指向外部闪存起始地址
3. 启动状态验证
- 烧录完成后复位开发板,观察LCD是否正常显示
- 使用调试器查看
SCB->VTOR寄存器值,确认其为0x90000000 - 通过STM32CubeProgrammer读取外部闪存数据,与烧录文件对比验证内容完整性
五、常见问题排查
- LCD无显示:检查LCD驱动代码是否适配外部闪存启动逻辑,确保LCD初始化在向量表重映射之后执行
- 启动失败:核实BOOT引脚状态、向量表偏移配置,确认外部闪存烧录内容完整
- 读写速度慢:启用N25Q128A的Quad SPI模式,将SPI时钟频率拉至最高支持的108MHz
内容的提问来源于stack exchange,提问作者Gopinath
相关产品推荐
相关产品推荐

