RK3576屏幕最底下一行刷新异常调试

屏幕是RGB565的屏幕,而RK3576用的MIPI接口,因此使用了ICN6211作为RGB转接板转发MIPI信号为RGB信号给屏幕。

转接板是实习生调试的,最终的效果是最下面一行还有闪烁未解决。

通过跑LVGL的benckmark时候的结果页面发现,最下面一行其实刷新的是第一行的内容。这样问题就很明显了,就是垂直信号刷快了,把垂直前后沿的值调大就行了。

屏幕的DTS配置如下:

 1 &dsi_panel{
 2     status = "okay";
 3     compatible = "simple-panel-dsi";
 4     reg = <0>;
 5     backlight = <&backlight>;
 6     power-supply = <&vcc_lcd>;//指定了LCD面板的电源供应器。
 7     
 8     enable-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;//启用显示面板的GPIO引脚
 9     reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;//重置显示面板的GPIO引脚。
10     
11     //指定了各种操作(重置、启用、准备、取消准备、禁用、初始化)之间的延迟时间。
12     reset-delay-ms = <200>;
13     enable-delay-ms = <300>;
14     prepare-delay-ms = <200>;
15     unprepare-delay-ms = <300>;
16     disable-delay-ms = <300>;
17     init-delay-ms = <600>;
18     //指定面板的物理尺寸。
19     //width-mm = <71>;
20     //height-mm = <105>;
21     //指定了DSI接口的一些模式标志,包括视频模式、视频突发模式、低功耗模式和不使用EOT包。
22     //dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
23     //dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET)>;
24     dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM)>;
25     dsi,format = <MIPI_DSI_FMT_RGB565>;//DSI接口传输的像素格式,这里是24位RGB。
26     dsi,lanes  = <2>;//DSI接口使用的数据线数量。
27     //15 00 02 B1 38
28     //定义一个数组,数组中包含了初始化面板时发送的命令序列。
29     panel-init-sequence = [
30         23 00 02 7A C1
31         23 00 02 20 20
32         23 00 02 21 E0
33         23 00 02 22 13
34         23 00 02 23 37
35         23 00 02 24 04
36         23 00 02 25 55
37         23 00 02 26 00
38         23 00 02 27 08
39         23 00 02 28 04
40         23 00 02 29 1F
41         23 00 02 34 80
42         23 00 02 36 37
43         23 00 02 86 29
44         23 00 02 B5 A0
45         23 00 02 5C FF
46         23 00 02 2A 01
47         23 00 02 56 92
48         23 00 02 6B 72
49         23 00 02 69 24
50         23 00 02 10 40
51         23 00 02 11 88
52         23 00 02 B6 20
53         23 00 02 51 20
54         23 00 02 09 10
55         //05 78 01 11 
56         //05 64 01 29
57         //05 78 01 11
58         //05 1E 01 29
59     ];
60 
61     panel-exit-sequence = [];
62     pinctrl-names = "default";
63     pinctrl-0 = <&asclcdm0_stbyb>, <&asclcdm0_rst>;
64 
65     disp_timings: display-timings {
66         native-mode = <&dsi_timing0>;
67         //面板的默认显示模式。
68         dsi_timing0: timing0 {
69             clock-frequency = <25000000>;
70             hactive = <800>;
71             vactive = <480>;
72             hsync-len = <4>;
73             hback-porch = <85>;
74             hfront-porch = <55>;
75             vsync-len = <4>;
76             vback-porch = <31>;
77             vfront-porch = <8>;
78             hsync-active = <0>;
79             vsync-active = <0>;
80             de-active = <0>;
81             pixelclk-active = <0>;
82         };
83     };
84 
85     ports {
86         #address-cells = <1>;
87         #size-cells = <0>;
88 
89         port@0 {
90             reg = <0>;
91             panel_in_dsi: endpoint {
92                 remote-endpoint = <&dsi_out_panel>;
93             };
94         };
95     };
96 
97     
98 };

修改vback-porch & vfront-porch发现不起作用。问了deep seek也是给的这个建议。

然后想起来同事以前说过,转接板需要调初始化序列来控制,使用厂家给的工具来生成初始化序列控制命令

ICN6211 Config.exe

同时继续问deep seek的意见。

 

 

 

 1已经试了没用。使用2试了下也没改变。3看着有用,先加上。

同步使用ICN6211 Config.exe生成初始化序列控制命令发现,

VFP = 27

VBP = 29

上面deep seek给的调22/23当然没用。

最终调节的值如下时终于解决了此问题

1         23 00 02 27 58      //VFP
2         23 00 02 28 04
3         23 00 02 29 3F      //VBP

 

下一步排除无用项

首先就是删除flags

MIPI_DSI_MODE_VIDEO_SYNC_PULSE  // 启用同步脉冲

第一次删除的时候是能解决此问题的,但是等在删除这项后调整VFP & VBP的值的时候发现失效了。即使 将

VFP & VBP再修改回58 & 3F,也没用了。再加回MIPI_DSI_MODE_VIDEO_SYNC_PULSE 才恢复。
最终锁定方案就是
MIPI_DSI_MODE_VIDEO_SYNC_PULSE + VFP & VBP
 1 &dsi_panel{
 2     status = "okay";
 3     compatible = "simple-panel-dsi";
 4     reg = <0>;
 5     backlight = <&backlight>;
 6     power-supply = <&vcc_lcd>;//指定了LCD面板的电源供应器。
 7     
 8     enable-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;//启用显示面板的GPIO引脚
 9     reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>;//重置显示面板的GPIO引脚。
10     
11     //指定了各种操作(重置、启用、准备、取消准备、禁用、初始化)之间的延迟时间。
12     reset-delay-ms = <200>;
13     enable-delay-ms = <300>;
14     prepare-delay-ms = <200>;
15     unprepare-delay-ms = <300>;
16     disable-delay-ms = <300>;
17     init-delay-ms = <600>;
18     //指定面板的物理尺寸。
19     //width-mm = <71>;
20     //height-mm = <105>;
21     //指定了DSI接口的一些模式标志,包括视频模式、视频突发模式、低功耗模式和不使用EOT包。
22     //dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
23     //dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET)>;
24     dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_VIDEO_SYNC_PULSE)>;
25     dsi,format = <MIPI_DSI_FMT_RGB565>;//DSI接口传输的像素格式,这里是24位RGB。
26     dsi,lanes  = <2>;//DSI接口使用的数据线数量。
27     //15 00 02 B1 38
28     //定义一个数组,数组中包含了初始化面板时发送的命令序列。
29     panel-init-sequence = [
30         23 00 02 7A C1
31         23 00 02 20 20
32         23 00 02 21 E0
33         23 00 02 22 13
34         23 00 02 23 37
35         23 00 02 24 04
36         23 00 02 25 55
37         23 00 02 26 00
38         23 00 02 27 58      //VFP
39         23 00 02 28 04
40         23 00 02 29 3F      //VBP
41         23 00 02 34 80
42         23 00 02 36 37
43         23 00 02 86 29
44         23 00 02 B5 A0
45         23 00 02 5C FF
46         23 00 02 2A 01
47         23 00 02 56 92
48         23 00 02 6B 72
49         23 00 02 69 24
50         23 00 02 10 40
51         23 00 02 11 88
52         23 00 02 B6 20
53         23 00 02 51 20
54         23 00 02 09 10
55         //05 78 01 11 
56         //05 64 01 29
57         //05 78 01 11
58         //05 1E 01 29
59     ];
60 
61     panel-exit-sequence = [];
62     pinctrl-names = "default";
63     pinctrl-0 = <&asclcdm0_stbyb>, <&asclcdm0_rst>;
64 
65     disp_timings: display-timings {
66         native-mode = <&dsi_timing0>;
67         //面板的默认显示模式。
68         dsi_timing0: timing0 {
69             clock-frequency = <25000000>;
70             hactive = <800>;
71             vactive = <480>;
72             hsync-len = <4>;
73             hback-porch = <85>;
74             hfront-porch = <55>;
75             vsync-len = <4>;
76             vback-porch = <63>;
77             vfront-porch = <88>;
78             hsync-active = <0>;
79             vsync-active = <0>;
80             de-active = <0>;
81             pixelclk-active = <0>;
82         };
83     };
84 
85     ports {
86         #address-cells = <1>;
87         #size-cells = <0>;
88 
89         port@0 {
90             reg = <0>;
91             panel_in_dsi: endpoint {
92                 remote-endpoint = <&dsi_out_panel>;
93             };
94         };
95     };
96 
97     
98 };

 

posted @ 2025-06-04 09:45  xjxcxjx  阅读(178)  评论(0)    收藏  举报