1.首先可以从licheePi nano原理图中看出LCD接线是RGB666的 也就是位深度是18
2.从官网设备树找到屏幕设备是qd43003c0_40 然后在panel-simple.c找到该设备属性
static const struct drm_display_mode qd43003c0_40_mode = {
.clock = 9000,
.hdisplay = 480,
.hsync_start = 480 + 8,
.hsync_end = 480 + 8 + 4,
.htotal = 480 + 8 + 4 + 39,
.vdisplay = 272,
.vsync_start = 272 + 4,
.vsync_end = 272 + 4 + 10,
.vtotal = 272 + 4 + 10 + 2,
.vrefresh = 60,
};
static const struct panel_desc qd43003c0_40 = {
.modes = &qd43003c0_40_mode,
.num_modes = 1,
.bpc = 8,
.size = {
.width = 95,
.height = 53,
},
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
可以看到位深度是RGB888 也就是24
3.然后在littlevGL的lv_conf.h要把位深度设置为32显示才正常
这几个位深度度如何理解?什么情况该怎么填?
离线
1. RGB666 这是硬件位深度18bit, f1c100s实际上也可以输出RGB888, 但这样多占了几个IO, 当然你不介意显示精度也可以RGB111, 只是这样画面太美不敢想象.
2. 不管实际硬件是RGB888/RGB666/RG565/RGB111, 主线Linux驱动为了方便处理都是当RGB888, 每像素占用32bit宽度.
3. lv_conf.h 的 32bit 估计是他显存的处理方式, 也是和2一样, 为了方便软件处理, 最终如果你的物理/虚拟显示屏是16bit(2字节宽度), 在驱动部分再做一次 RGB888 <=> RGB656 的双向转换.
以上说法可能不全对, 仅供参考.
原来做了转换 明白他们的关系了 感谢晕哥讲解
离线