ST意法半导体
直播中

王丽

7年用户 1316经验值
私信 关注
[问答]

使用FMC和内存时显示屏保持黑色是有什么问题吗?

我正在努力让显示器连接到 FMC 总线并运行。
问题是显示屏始终保持黑色。
我遵循了 TouchGFX 文档,并根据 TouchGFX AL Development 实现了代码。我使用了场景“FMC 和 SPI 显示接口”并实现了该章中描述的代码。
我使用 STM32CubeMx 设置硬件并生成代码(用于 IAR EWB)。然后 TouchGFX Designer 用于生成图形。然后在STM32CubeMx中重写代码,然后使用IAR EWB实现剩下的。我在 STM32CubeMx 中启用了 FreeRTOS,并且 MX_TouchGFX_Process() 正在任务中运行。
我已经为显示器(带有 ILI9341 驱动程序的 Winstar 2.4" 320x240)制作了设置代码。设置代码已经过测试,我可以向/从显示器发送和接收数据。
Vsync (FMARK) 正在工作并为 touchgfx vsync (OSWrappers::signalVSync();) 更新信号量。
我可以看到 touchGFX 的 tick() 正在不断更新。
但是显示器一直是黑色的。
我在 TouchGFX 设计器中制作了一个简单的屏幕,只显示一张图片。当我在 TouchGFX 设计器中运行模拟器时,它的行为符合预期。
如果我查看 touchGFX 帧缓冲区,整个缓冲区为 0,所以看起来它从未更新过。
如果我在 TouchGFXHAL::flushFrameBuffer() 中放置一个断点,然后用例如 0xf000(蓝色)填充帧缓冲区,然后在 TouchGFXHAL::flushFrameBuffer() 中运行传输代码,则显示变为蓝色。所以从那里开始。帧缓冲区的填充似乎是在 TouchGFX 库中完成的,所以我无法调试。
我用过的版本:
STM32CubeMx:6.3.0
TouchGFX 设计师:4.17.0
IAR EWB:8.50.9
我正在使用 STM32H7B3I-EVAL,我们已经为显示器制作了适配器板。
我只使用 STM32H7 的内部存储器(代码和帧缓冲区数据)
知道有什么问题吗?


回帖(1)

陈蓓

2022-12-23 14:15:17
不幸的是,这是代码错误。
我正在使用双帧缓冲区策略,并且在 TouchGFXHAL::flushFrameBuffer() 中我使用了 getTFTFrameBuffer() 而不是 getClientFrameBuffer()。
然后我总是得到指向 framebuffer1 开始的指针,而不是指向当前缓冲区的指针。
使用 getClientFrameBuffer() 解决了这个问题,我在屏幕上看到了图片。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分