这是我第一次尝试使用 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,并且它在发送帧缓冲区之前进行转换。
谁能指出我下一步要检查什么的正确方向?或者我可以尝试的事情?