d133,跑lvgl例程,硬件上是画了rgb888接口到lcd。然后sdk里菜单配置lcd也是rgb888, 顺序是bgr。
lvgl配置里,有个色深,只有16和32可选,我就选了32。
结果运行后,屏幕有些区域有些闪,字体看不到,或者放大发虚。
按群友配置,rgb565,色深16,就正常了。我又改成argb8888,色深32,也正常了。
rgb888的话,我的理解是正好通过24条信号线传到了屏里。那么argb8888呢?这是怎么传输的啊?lcd颜色信号线只有24条啊。
另,lcd配置里还有个data mirror选项,这个是干什么用的?
│ │ rgb mode (PRGB) ---> │ │
│ │ interface format (PRGB 24 BIT) ---> │ │
│ │ data order (BGR) ---> │ │
│ │ clock phase select (0 degree) ---> │ │
│ │ [ ] data mirror │ │
│ │
离线
rgb888,argb8888这种表达的是像素在内存里的布局,其中rgb888可以是3字节,也可以是4字节(最高字节忽略);而argb8888是4字节(最高字节是透明度)。他们送到显示屏时都是24位色。内存像素布局和显示屏RGB信号没有必然对应的关系!
比如内存布局是rgb888,通过LCD控制器也可以输出RGB565的颜色信号,同时也可以翻转R/B。
离线
@Gentlepig
1、RGB888跟ARGB888是显示引擎DE处理的数据源格式,ARGB888在数据源上一个像素点是4Byte数据,比RGB888一个像素点3Byte数据多1个Alpha Byte。对于LCD接口,这两种数据源格式在经过DE处理后,都只收到24bit的RGB信号。
2、data-mirror应该是D[7:0]转换成D[0:7],不太确定,可以查看下LCD接口的用户手册看看
离线
受教,明白了些,感谢两位。
离线