[技术问答] 画板时rgb接口的R和B互换了,软件上如何调整过来?

[复制链接]
2049|18
 楼主| classroom 发表于 2021-2-19 16:39 | 显示全部楼层 |阅读模式
画板时觉得线有点拧,就把R和B整组互换了,就是R0<=>B0 ......  R7<=>B7。
现在接上lcd后,看到的是红色和蓝色互换的,请问,该如何修正?
在uboot目录的driver/video目录下找到了nuc970fb.c这个文件,但是没看懂是如何控制RGB数据
jekey 发表于 2021-2-19 22:40 | 显示全部楼层
相应颜色的数据交换位置就可以了。
正圆椭圆 发表于 2021-2-19 23:53 | 显示全部楼层
接口调换一下
cepoly 发表于 2021-2-20 14:49 | 显示全部楼层
软件GPIO管脚定义,目测R和B也整组互换就可以了吧
drer 发表于 2021-3-3 18:18 | 显示全部楼层
飞线处理一下
gwsan 发表于 2021-3-3 18:20 | 显示全部楼层
飞线的话会不会产生干扰
kxsi 发表于 2021-3-3 18:22 | 显示全部楼层
在软件上把两个数据对调一下
nawu 发表于 2021-3-3 18:22 | 显示全部楼层
软件处理最好了
qcliu 发表于 2021-3-3 18:24 | 显示全部楼层
怎么方便怎么处理吧 看情况
yangjiaxu 发表于 2021-3-3 22:30 | 显示全部楼层
建议还是换回来吧,比如你做一张图片,颜色都是反的才可以在RGB上正常显示呢 麻烦
jcky001 发表于 2021-4-14 14:43 | 显示全部楼层

NUC970没有软件的方式来交换
BA20MW 发表于 2021-4-15 13:33 | 显示全部楼层
建议重Layout,RGB严格按开发板原理图对应。
twjiang 发表于 2021-4-16 06:10 | 显示全部楼层
Screenshot 2021-04-16 060336.png

上图中第一张为正常显示的图片,第二张为R与B互换后的显示效果,第三张是仿射变换(Affine Transformation)后的效果。
上述代码在 N9H series(N9H20/N9H26/N9H30)上运行测试通过,可应用到 NUC972上。


#define RGB565(r,g,b) (((r & 0x1f) << 11) | ((g & 0x3f) << 5) | (b & 0x1f))

typedef struct tagMEMORYBITMAP
{
    int                width;
    int                height;
    int                bpp;
    U16*    image;
} MEMORYBITMAP, *PMEMORYBITMAP;



PMEMORYBITMAP RBSwap(GUI_BITMAP *image)
{
    PMEMORYBITMAP pMemImage = (PMEMORYBITMAP)malloc(sizeof(MEMORYBITMAP));

    pMemImage->width = image->XSize;
    pMemImage->height = image->YSize;
    pMemImage->bpp = 16;
    pMemImage->image = (U16*)malloc(sizeof(U16) * (pMemImage->width) * (pMemImage->height));

    U16* src = (U16*)image->pData;

    for (int i = 0; i < pMemImage->height; i++) // row
    {
        for (int j = 0; j < pMemImage->width; j++) // col
        {
            U8 r = GETR(src[j + i * image->XSize]);
            U8 g = GETG(src[j + i * image->XSize]);
            U8 b = GETB(src[j + i * image->XSize]);

            pMemImage->image[j + i * pMemImage->width] = RGB565(b, g, r);
        }
    }

    return pMemImage;
}



huquanz711 发表于 2021-4-16 07:39 来自手机 | 显示全部楼层
数据换位,比较麻烦,还是改板吧。
twjiang 发表于 2021-4-16 09:57 | 显示全部楼层
#define GETR(color16) ((color16 & 0xf800) >> 11)
#define GETG(color16) ((color16 & 0x07e0) >> 5)
#define GETB(color16) ((color16 & 0x001f))

贴了这么一大堆代码,是不是很别扭呀,所以啊还是建议硬件改过来,不然的话,在底层软件都要那么“疙瘩”地转一下,效能不高。
两只袜子 发表于 2021-4-16 16:15 | 显示全部楼层

飞线处理一下
piteqiu 发表于 2021-4-17 12:10 | 显示全部楼层
软件如果定义规范的话,底层的宏定义变一下就好了,因为这个不涉及到硬件的外设驱动。
springvirus 发表于 2021-4-20 08:37 | 显示全部楼层
觉得还是重画板子吧,不然软件将来维护也是别扭
天意无罪 发表于 2021-4-20 09:15 | 显示全部楼层
软件上可以处理,但是很麻烦,浪费时间,建议还是硬件上改回来吧、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

541

主题

3413

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部