> 文章列表 > rk3568点亮LCD(RGB)

rk3568点亮LCD(RGB)

rk3568点亮LCD(RGB)

rk3568 Android11/12 调试 RGB 屏

RGB一般是指RGB色彩模型(RGB color model),是工业界的一种颜色标准。RGB接口占用的资源较多,所以这个接口的LCD刷新率非常快,软件控制也比较简单。缺点是控制需要增加电路,软件初始化需要增加程序,占用资源较多;时钟频率要设置合适,否则不会显示内容。


提示:RGB屏幕参数要求比较严苛,须反调整。

文章目录

  • rk3568 Android11/12 调试 RGB 屏
  • 圈重点 看想学
  • 1. 核查原理图,适配RGB硬件
    • 1.1 核查原理图,适配RGB硬件
    • 1.2 RGB 屏参调整
    • 1.3 查GPIO复用
  • Tips
  • 总结

圈重点 看想学

  1. rk3568 适配RGB屏
  2. 调整屏参

1. 核查原理图,适配RGB硬件

  • rk3568 并口 RGB 屏幕使用引脚
    rk3568点亮LCD(RGB)

  • LCD 屏幕硬件参数
    rk3568点亮LCD(RGB)- LCD 屏幕排线定义
    rk3568点亮LCD(RGB)rk3568点亮LCD(RGB)由 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。
rk3568点亮LCD(RGB)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 11  1970 pinctrl-devices # gpio 设备申请
-r--r--r-- 1 root root 0 11  1970 pinctrl-handles # gpio 引用
-r--r--r-- 1 root root 0 11  1970 pinctrl-maps # gpio 映射
drwxr-xr-x 2 root root 0 11  1970 pinctrl-rockchip-pinctrl
drwxr-xr-x 2 root root 0 11  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

  1. 屏幕闪烁
    先确定背光闪烁还是屏幕内容闪?
    背光闪烁则需要确认背光供电是否充足,PWM 信号是否稳定。
    内容闪烁在排除排线异常后,很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。
  2. 屏幕出现现条纹
    很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。
  3. 开机过程无开机logo或开机过程黑屏休眠唤醒可正常显示
    可从logo 显示控制和 VOP 匹配排查。
&rgb_in_vp2 {status = "okay";
};&route_rgb {status = "okay";
};

总结

活学活用,做个合格的搬运工。