rk3568点亮LCD(RGB)
rk3568 Android11/12 调试 RGB 屏
RGB一般是指RGB色彩模型(RGB color model),是工业界的一种颜色标准。RGB接口占用的资源较多,所以这个接口的LCD刷新率非常快,软件控制也比较简单。缺点是控制需要增加电路,软件初始化需要增加程序,占用资源较多;时钟频率要设置合适,否则不会显示内容。
文章目录
- rk3568 Android11/12 调试 RGB 屏
- 圈重点 看想学
- 1. 核查原理图,适配RGB硬件
-
- 1.1 核查原理图,适配RGB硬件
- 1.2 RGB 屏参调整
- 1.3 查GPIO复用
- Tips
- 总结
圈重点 看想学
- rk3568 适配RGB屏
- 调整屏参
1. 核查原理图,适配RGB硬件
-
rk3568 并口 RGB 屏幕使用引脚
-
LCD 屏幕硬件参数
- LCD 屏幕排线定义
由 LCD pins定义可以确定屏幕需要初始化代码,并且为SPI协议;集成触摸盖板。
1.1 核查原理图,适配RGB硬件
核对原理图中的LCD 的供电、复位以及足够多的GPIO复用,此处不再赘述。屏幕背光与常规平无异,使用PWM控制信号且带有供电使能。相信大多数小伙伴已经掌握相关匹配方法。初始化代码仅仅适配本文中用到的屏幕,需要点屏的小伙伴可找供应商所要相关资料。
/ {panel: panel {compatible = "simple-panel";bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;backlight = <&backlight>;enable-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;enable-delay-ms = <20>;reset-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>;reset-delay-ms = <10>;prepare-delay-ms = <20>;unprepare-delay-ms = <20>;disable-delay-ms = <20>;/* spi-sdo-gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; */spi-sdi-gpios = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;spi-scl-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;spi-cs-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;width-mm = <43>;height-mm = <73>;pinctrl-names = "default";pinctrl-0 = <&spi_init_cmd>;rockchip,cmd-type = "spi";/* type:0 is cmd, 1 is data */panel-init-sequence = [/* type delay num val1 val2 val3 */00 00 01 e001 00 01 0001 00 01 0701 00 01 0f01 00 01 0d01 00 01 1b01 00 01 0a01 00 01 3c01 00 01 7801 00 01 4a01 00 01 0701 00 01 0e01 00 01 0901 00 01 1b01 00 01 1e01 00 01 0f00 00 01 e101 00 01 0001 00 01 2201 00 01 2401 00 01 0601 00 01 1201 00 01 0701 00 01 3601 00 01 4701 00 01 4701 00 01 0601 00 01 0a01 00 01 0701 00 01 3001 00 01 3701 00 01 0f00 00 01 c001 00 01 1001 00 01 1000 00 01 c101 00 01 4100 00 01 c501 00 01 0001 00 01 2201 00 01 8000 00 01 3601 00 01 4800 00 01 3a /* interface mode control */01 00 01 6600 00 01 b0 /* interface mode control */01 00 01 0000 00 01 b1 /* frame rate 70hz */01 00 01 b001 00 01 1100 00 01 b401 00 01 0200 00 01 B6 /* RGB/MCU Interface Control */01 00 01 32 /* 02 mcu, 32 rgb */01 00 01 0200 00 01 b701 00 01 c600 00 01 be01 00 01 0001 00 01 0400 00 01 e901 00 01 0000 00 01 f701 00 01 a901 00 01 5101 00 01 2c01 00 01 8200 78 01 1100 00 01 29];panel-exit-sequence = [/* type delay num val1 val2 val3 */00 0a 01 2800 78 01 10];display-timings {native-mode = <&kd050fwfba002_timing>;kd050fwfba002_timing: timing0 {clock-frequency = <12000000>;hactive = <320>;vactive = <480>;hback-porch = <10>;hfront-porch = <5>;vback-porch = <10>;vfront-porch = <5>;hsync-len = <10>;vsync-len = <10>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;};};port {panel_in_rgb: endpoint {remote-endpoint = <&rgb_out_panel>;};};};
};&backlight {enable-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
};&rgb_in_vp2 {status = "okay";
};&rgb {status = "okay";ports {rgb_out: port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;rgb_out_panel: endpoint@0 {reg = <0>;remote-endpoint = <&panel_in_rgb>;};};};
};&route_rgb {status = "okay";
};&pinctrl {spi_panel {spi_init_cmd: spi-init-cmd {rockchip,pins =/* spi sdi */<4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>,/* spi scl */<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>,/* spi cs */<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;};};
};
1.2 RGB 屏参调整
拿到屏幕规格书那一刻,都会多不过看屏参的时刻。配置屏幕参数时一般选取 type (典型值),如屏幕有轻微偏位简单调整屏幕参数,可参照另一篇文章rk3568点亮LCD(lvds)。以下时某一个款屏幕的 timings。
timing0中参数解释如下:
水平分辨率:hactive 垂直分辨率:vactive
水平前尖:hfront-porch(HFP) 垂直前尖:vfront-porch (VFP)
水平后尖:hback-porch(HBP) 垂直后尖:vback-porch (VBP)
水平消隐信号:hsync - len(HS) 垂直消隐信号:vsync - len (VS)
– clock-frequency = HFP(Hactive + HS + HBP) x VFP(Vactive + VS + VBP) x fps(帧频率)
– lane-rate = clk (时钟频率) x RGB(3) x BIT(6或8) / lane_num
lane_num 表示差分时钟通道数,RGB与BIT值根据 dsi,format 具体情况而定。
– dsi,format 表示RGB三原色位深大小,可用参数如下:
MEDIA_BUS_FMT_RGB888_1X24 表示8bit色深,RGB888 24BIT 屏。
MEDIA_BUS_FMT_RGB666_1X18 表示6bit色深,适配RGB666 18 bit 屏。
MEDIA_BUS_FMT_RGB565_1X16 表示565色深(单位bit),适配RGB565 16 bit 屏。
1.3 查GPIO复用
- 核查常规GPIO申请
# andorid
cat /d/gpio
# linux
cat /sys/kernel/debug/gpio
- 核查 iomux 申请
ls /sys/kernel/debug/pinctrl/pinctrl-maps
-r--r--r-- 1 root root 0 1月 1 1970 pinctrl-devices # gpio 设备申请
-r--r--r-- 1 root root 0 1月 1 1970 pinctrl-handles # gpio 引用
-r--r--r-- 1 root root 0 1月 1 1970 pinctrl-maps # gpio 映射
drwxr-xr-x 2 root root 0 1月 1 1970 pinctrl-rockchip-pinctrl
drwxr-xr-x 2 root root 0 1月 1 1970 rk805-pinctrl-rk817-pinctrl
以查看TF卡GPIO为例
cat pinctrl-handles | grep mmc
device: fe2b0000.dwmmc current state: defaulttype: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-bus4 (61) function: sdmmc0 (37)type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-clk (62) function: sdmmc0 (37)type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-cmd (63) function: sdmmc0 (37)type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-det (64) function: sdmmc0 (37)
device: fe2c0000.dwmmc current state: defaulttype: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-bus4 (65) function: sdmmc1 (38)type: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-cmd (67) function: sdmmc1 (38)type: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-clk (66) function: sdmmc1 (38)
Tips
- 屏幕闪烁
先确定背光闪烁还是屏幕内容闪?
背光闪烁则需要确认背光供电是否充足,PWM 信号是否稳定。
内容闪烁在排除排线异常后,很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。 - 屏幕出现现条纹
很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。 - 开机过程无开机logo或开机过程黑屏休眠唤醒可正常显示
可从logo 显示控制和 VOP 匹配排查。
&rgb_in_vp2 {status = "okay";
};&route_rgb {status = "okay";
};
总结
活学活用,做个合格的搬运工。