ST意法半导体
直播中

文甘翀

8年用户 1037经验值
私信 关注
[问答]

怎样去解决TouchGFX模拟器颜色显示错误的问题呢

这是我第一次尝试使用 TouchGFX 库,所以我仍在学习一切是如何工作的。我有一个在 STM32G473CBU6 上运行的定制板,带有一个通过 SPI 连接的 1.54" ST7789V LCD。
我知道 LCD 驱动程序正在工作,因为我可以在不使用 TouchGFX 库的情况下运行测试并且我得到了预期的结果,只有基本功能,如绘制矩形、圆形、填充颜色等,它们都可以工作。
我在 ToughGFX Designer 上实现了一个简单的屏幕,它只是一个带有彩色背景的简单文本元素,此摘录来自 screenViewBase.cpp
  • screenViewBase::screenViewBase()
  • {
  •     __background.setPosition(0, 0, 240, 240);
  •     __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 255));
  •     textAreaVoltage.setXY(46, 59);
  •     textAreaVoltage.setColor(touchgfx::Color::getColorFromRGB(0, 255, 0));
  •     textAreaVoltage.setLinespacing(0);
  •     textAreaVoltage.setTypedText(touchgfx::TypedText(T_RESOURCEIDVOLTAGE));
  •     add(__background);
  •     add(textAreaVoltage);
  • }
模拟器显示正确的颜色,但电路板显示的颜色如下所示,其中背景应为蓝色显示为绿色,文本应为绿色的位置显示为红色。
我尝试使用 RGB 或 BGR 设置 LCD 驱动程序,但我仍然得到错误的颜色。我也试过在不同模式下设置 SPI 时钟相位,但没有。
我注意到 getColorFromRGB 函数似乎生成了 24 位颜色,但我猜 GUI 引擎知道我的屏幕只有 16bpp,并且它在发送帧缓冲区之前进行转换。

谁能指出我下一步要检查什么的正确方向?或者我可以尝试的事情?





回帖(1)

杨春林

2022-12-21 10:53:11
为了解决这个问题,我在阅读 STM32G071 上的 TouchGFX 实现时找到了解决方案。在这种情况下,当使用 SPI 与 LCD 驱动程序通信时(同样适用于 ILI9341),commads 以 SPI 8 位模式发送,但是当发送 RGB 颜色切换到 16 位 SPI 的数据时,解决了显示部分下解释的问题。
举报

更多回帖

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