牛卧堂MCU技术交流

标题: 求教RGB如何整组调换? [打印本页]

作者: any012    时间: 2023-2-7 10:23
标题: 求教RGB如何整组调换?
用972画了个板子,为了布线时不那么拧,将R和B调换了,变成了BGR顺序。
接到屏幕后,红色和蓝色是反着的。
那么,如何修改驱动,将R和B整组调换呢?看了datasheet,应该是有这个功能的,就是不知道kernel里该如何修改。
作者: arthur    时间: 2023-2-7 13:48
不建议通过软件RB调换来纠正硬件设计的错误,这会影响显示速度。
作者: any012    时间: 2023-2-7 17:38
本帖最后由 any012 于 2023-2-7 17:50 编辑

[18:17]
[LCD_ODD :
SEL_ODD]
Control LCD Line Data Out
00 = First line data is RGB, second line data is GBR.
01 = First line data is BGR, second line data is RBG.
10 = First line data is GBR, second line data is RGB.
11 = First line data is RBG, second line data is BGR.

请问这个是不是RGB顺序设置?
不明白为何会有first line data和second line data。
这也算通过软件设置RGB顺序吗?

没看明白LCD的DEVICE_CONTROL寄存器的18、17位,是干什么用的,望指教。

作者: arthur    时间: 2023-2-10 10:43
any012 发表于 2023-2-7 17:38
[18:17]
[LCD_ODD :
SEL_ODD]

这个方法通过设置LCD硬件寄存器的方法来进行RB的调换,可以试试看。
因为支持两个 framebuffer, 这里就区分 first LCD Line, second LCD line
总共有四种选择,每种都试一次,看看哪个设置是对的。

作者: arthur    时间: 2023-2-10 10:46
在内核LCD驱动 nuc970fb.c   nuc970fb_activate_var() 里

writel(fbi->regs.lcd_device_ctrl, regs + REG_LCM_DEV_CTRL);

将 17, 18这两位的值写入到 fbi->regs.lcd_deive_ctrl |= [17,18];
作者: any012    时间: 2023-2-11 16:13
在buildroot/output/build/linux-master/drivers/video下修改nuc970fb.c文件,找到上边那个函数,修改:

  1.         fbi->regs.lcd_device_ctrl = ((fbi->regs.lcd_device_ctrl & 0xFFF9FFFF) | 0x00020000);
  2.         writel(fbi->regs.lcd_device_ctrl, regs + REG_LCM_DEV_CTRL);
复制代码

试过0x00020000、0x00040000、0x00060000,都不行,执行qt程序想显示红色背景,都显示的是蓝色背景。
修改nuc970fb.c后,都是执行make linux-rebuild的,并重新拷贝的970uImage文件。

其中有一次改错了值,0x00020000改成了0x0200,结果烧录到板子上进入内核后屏幕直接无任何显示。




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2