[STM32F7] 从16位SDRAM更改为32位SDRAM的问题。

[复制链接]
jerry尧 发表于 2025-8-27 11:42 | 显示全部楼层 |阅读模式
我最初基于ST32F7508-DK开发项目,并通过TouchGFX生成了代码和工程。一切运行正常。后来我们决定将16位SDRAM升级为32位SDRAM,因此制作了一块与开发板完全相同的板卡,唯一区别是增加了32位所需的引脚,这导致需要调整部分ltdc(屏幕)的引脚布局。完成此更改后,我在板卡上刷写和运行相同程序时遇到问题(相同指主代码和TouchGFX代码未改动)。使用STM32Programmer刷写时出现以下报错:
18:55:58 : Error: Data mismatch found at address 0x90000002 (byte = 0x00 instead of 0x05)
18:55:58 : Error: Download verification failed
通过内存查看器发现,0x90000000之后的地址似乎没有任何数据刷写。我怀疑可能是SDRAM配置有误,或是启动文件/链接文件存在遗漏。此问题在其他设备和不同板卡上使用相同hex文件时也可复现。

公羊子丹 发表于 2025-8-28 07:18 | 显示全部楼层
你换成32位总线后,FMC的时序和宽度配置需要改,CubeMX里要重新生成FMC的初始化。
周半梅 发表于 2025-8-28 07:19 | 显示全部楼层
刷写失败提示的是外部内存校验错误,很大可能是SDRAM没初始化好,导致程序下载到无效地址。
帛灿灿 发表于 2025-8-28 07:20 | 显示全部楼层
启动文件里是不是配置了外部RAM作为加载区?如果总线宽度改了,链接脚本和scatter文件也要调整。
童雨竹 发表于 2025-8-28 07:21 | 显示全部楼层
TouchGFX生成的代码一般默认针对16位宽度的SDRAM,改成32位需要手动修正配置。
万图 发表于 2025-8-28 07:21 | 显示全部楼层
你可以先在裸机工程里单独做个SDRAM测试,看能否正确写入/读取数据。
Wordsworth 发表于 2025-8-28 07:22 | 显示全部楼层
有些情况下CubeMX生成的FMC配置参数不适合32位,需要手动参考芯片参考手册调整时序。
Bblythe 发表于 2025-8-28 07:23 | 显示全部楼层
调试时可以先用内部Flash运行,再通过代码去写SDRAM,确认读写是否正确。
Pulitzer 发表于 2025-8-28 07:23 | 显示全部楼层
下载失败和屏幕引脚布局关系不大,根源还是FMC控制器对外部SDRAM的配置问题。
Uriah 发表于 2025-8-28 07:24 | 显示全部楼层
建议对比F7508-DK自带的FMC配置和你现在32位总线的配置,看差别在哪里。
Clyde011 发表于 2025-8-28 07:25 | 显示全部楼层
如果确定配置没问题,还要看看复位后SDRAM初始化顺序是否满足JEDEC标准,否则写入校验会失败
麻花油条 发表于 2025-8-28 14:50 | 显示全部楼层
可能是SDRAM总线位宽配置错误。
duo点 发表于 2025-8-28 14:50 | 显示全部楼层
可能是内存映射未正确更新,导致硬件无法访问预期的32位地址空间
onlycook 发表于 2025-8-28 14:51 | 显示全部楼层
FMC总线位宽未适配32位SDRAM?
七毛钱 发表于 2025-8-28 14:51 | 显示全部楼层
链接脚本未更新内存区域定义导致的吧。
内政奇才 发表于 2025-8-28 14:52 | 显示全部楼层
启动文件未初始化32位SDRAM的栈和堆?
海滨消消 发表于 2025-8-28 14:52 | 显示全部楼层
硬件连接或时序问题。
豌豆爹 发表于 2025-8-28 14:53 | 显示全部楼层
需要修改FMC配置。
麻花油条 发表于 2025-8-28 14:54 | 显示全部楼层
更新链接脚本,更新.data和.bss段的加载地址以匹配新地址。编译后生成.map文件,检查代码/数据是否分配到0x90000000区域。
星辰大海不退缩 发表于 2025-8-28 23:38 | 显示全部楼层
建议直接更改程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部