按照例程配置好mipi屏且正确显示bootlogo后,用echo 8 > /sys/class/disp/disp/attr/colorbar 命令测试发现屏幕上边有白线并且屏幕有线在波动
本人比较新手,想请问一下老师,像设备树里屏幕的timing这类参数应该看哪个数据手册的哪部分呢,这块mipi屏幕也是跟这块板子配套的
今天早些时候也碰到了这个问题。
抓了 framebuffer 和 DE,显示都正常,所以基本可以判断是硬件链路侧的问题。
可以先使用下面的命令查看显示状态:
cat "/sys/class/disp/disp/attr/sys" | sed -n '/lcd output/,+1p'
返回类似:
lcd output backlight(255) fps:47.1 480x800
err:780 skip:91 irq:109159 vsync:0 vsync_skip:0
过几秒后再次执行 cat,可以看到 err 会持续增加。
按照此时的配置,启动日志中显示的实际时钟频率为:
[ 1.094105] [DISP] lcd_clk_config,line:702:
[ 1.094106] disp 0, clk: pll(150000000),clk(150000000),dclk(25000000) dsi_rate(25000000)
[ 1.094106] clk real:pll(288000000),clk(288000000),dclk(72000000) dsi_rate(150000000)
猜测原因可能是:
MIPI DSI 链路在约 240 Mbps/lane 时能够稳定工作,而在 264 Mbps/lane 及以上 时会开始失稳。
百问提供的 SDK 中,board.dts 和 uboot-board.dts 里的 lcd_dclk_freq 均被设置为 25:
lcd_dclk_freq = <25>;
将其修改为:
lcd_dclk_freq = <20>;
修改后,屏幕显示恢复正常。
此时再次执行:
cat "/sys/class/disp/disp/attr/sys" | sed -n '/lcd output/,+1p'
返回:
lcd output backlight(255) fps:47.1 480x800
err:0 skip:91 irq:109159 vsync:0 vsync_skip:0
可以看到 err 已经变为 0,之后屏幕显示也一直正常。
希望还能对你有帮助
1 个赞
