You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 = 16M
    
    (0x90000000是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:23:28