-
-
- Posts: 3
- Joined: 2026-02-25 15:04
我现在正在在luckfox pico上驱动st7796s
系统是自定义的buildroot
我从https://github.com/Sergey1560/fb_st7796s获取了驱动并整合到我的源码树中
以下是dts:
Code: Select all
fbtft@0 {
compatible = "sitronix,st7796s";
bgr;
reg = <0>;
spi-max-frequency = <100000000>;
fps = <60>;
buswidth = <8>;
debug = <0x7>;
led-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;//BL
dc-gpios = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;//DC
reset-gpios = <&gpio1 RK_PD1 GPIO_ACTIVE_LOW>;//RES
};
fbset的输出如下:
Code: Select all
mode "480x320-0"
# D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz
geometry 480 320 480 320 16
timings 0 0 0 0 0 0 0
accel false
rgba 5/11,6/5,5/0,0/0
endmode
我使用ffmpeg用rgb565le格式生成了Red Green Blue Yellow纯色用于测试,以下是测试结果:
红色: 显示为浅蓝色
绿色: 显示为浅粉色
蓝色: 显示为纯黄色
黄色: 显示为纯蓝色
看起来黄色和蓝色存在反色问题,但我不清楚为什么另外两个颜色的变化是为什么
-
Attachments
-

-
- Posts: 2038
- Joined: 2024-01-23 7:21
您好,第三方硬件的适配我们不提供技术支持;建议用raw图去测试,在PC上用ffmpeg把纯色jpg图转换为raw,然后发送到板端显示,避免是软件层导致的色偏
PC端转换
Code: Select all
ffmpeg -i xxx.jpg -vf scale=$水平分辨率:$垂直分辨率 -pix_fmt bgra -f rawvideo xxx.raw
发送到板端显示
如果还存在色偏就得从驱动的初始化序列上看了,一般有一个寄存器控制显示的rgb565顺序
-
- Posts: 3
- Joined: 2026-02-25 15:04
Crocodile wrote: ↑2026-02-26 1:10
您好,第三方硬件的适配我们不提供技术支持;建议用raw图去测试,在PC上用ffmpeg把纯色jpg图转换为raw,然后发送到板端显示,避免是软件层导致的色偏
PC端转换
Code: Select all
ffmpeg -i xxx.jpg -vf scale=$水平分辨率:$垂直分辨率 -pix_fmt bgra -f rawvideo xxx.raw
发送到板端显示
如果还存在色偏就得从驱动的初始化序列上看了,一般有一个寄存器控制显示的rgb565顺序
我现在就是直接用的raw图测试
驱动初始化序列确实包含一个BGR控制,但无论我怎么调整它和dts中的bgr属性,显示都不正常
另外,我的st7789上也有一样的问题
-
- Posts: 3
- Joined: 2026-02-25 15:04
我现在已经解决该问题
在确保你的BGR设置正确后,尝试在驱动中加入发送0x21指令的代码
就像这样:
write_reg(par, ST7796S_INVON);
该指令会启用反转,在我的案例中启用后颜色显示就正常了