display timing值的计算与修改

一、值的意义

下面是一组参考的timing设置:

/ {
	fragment {
		target-path = "/";
		__overlay__ {
			lcds {
				xxxxxx: xxxxxx { // 这里的xx表示LCD节点名,必须和kernel中的lcd DTS节点名称保持一致,
				// 否则kernel无法匹配到正确的LCD驱动

					qcom,dsi-work-mode = <1>; /* burst mode */ // lcd 传输图像采用DSI模式,后面的数值表示支持和的模式
					//qcom,dsi-work-mode = <2>; /* sync pulse mode */
					//qcom,dsi-work-mode = <3>; /* sync event mode */
					qcom,dsi-lane-number = <4>; // LCD在接收video数据传输时的data lane总条数
					qcom,dsi-color-format = "rgb888"; // 配置bpp的位数,当前是24位
					qcom,dpi-clk-div = <6>;  // LCD分频系数

					qcom,phy-bit-clock = <1188000>;	/* kbps */ // high speed模式下数据传输时,clock lane的传输速率,即物理时钟
					qcom,phy-escape-clock = <20000>;/* kHz */ // low power模式下数据传输的速率

					qcom,power-gpio-delay = <20>;/* ms */
					qcom,video-lp-cmd-enable = <1>; // 采用6分频模式下面两个必须要添加
					qcom,hporch-lp-disable = <1>;

					qcom,width-mm = <68>;
					qcom,height-mm = <152>;

					qcom,esd-check-enable = <0>;
					qcom,esd-check-mode = <0>;
					qcom,esd-check-period = <2000>;
					qcom,esd-check-regs = <0xA>;
					qcom,esd-return-code = <0x9c>;

					qcom,reset-on-sequence = <1 5>, <0 5>, <1 20>;
					qcom,reset-off-sequence = <0 5>;

					qcom,use-dcs-write;
					qcom,initial-command = [
						];

					qcom,sleep-in-command = [
						];

					qcom,sleep-out-command = [
						];

					display-timings {
						native-mode = <&xxxxxx>;

						xxxxxx: timing0 {
							clock-frequency = <198000000>; // pixel clock,单位Hz
							hactive = <1920>;
							vactive = <2880>;
							hback-porch = <80>;
							hfront-porch = <120>;
							vback-porch = <56>;
							vfront-porch = <40>;
							hsync-len = <80>;
							vsync-len = <24>;
						};
					};
				};
			};
		};
	};
};

这里面主要有几个值需要注意:像素之中pixel clock,也就是timing中的clock-frequency,该值是通过下面h和v开头的参数计算出来的,hactive、vactive这些参数可以通过屏的参考手册找到。通常适配一款屏幕这些参数需要做相应的调整。

二、计算公式

2.1 像素时钟计算

pixel-clock = h * v * fps
按照上面给出的参数做如下计算:
h = hactive + hback-porch + hfront-porch + hsync-len = 1920 + 80 + 120 + 80 = 2200
v = vactive + vbach-porch + vfront-porch + vsync-len = 2880 + 56 + 40 + 24 = 3000
fps假设是30帧,则计算如下:
pixel-clock = 2200 * 3000 * 30 = 198 000 000(Hz)

2.2 物理时钟

通过像素时钟计算出前面的phy-bit-clock,这里计算出来的是每一lane的传输速率应该是多少
phy-bit-clock = 位时钟 / MIPI lane数
位时钟 = pixel-clock * 每像素位数
前面的配置可以看到每像素的配置是RGB888,也就是24位,因此这里计算如下:
位时钟 = 198 000 000 * 24 = 4752 000 000;
phy-bit-clock = 4752 000 000 / 4 = 1188 000 000(Hz) = 1188 000(Kbps)

三、多屏扩展

如果外部同时支持多个屏幕,如两个屏幕,此时h和v的那些参数不能直接按照屏的手册来填写,而需要考虑两个屏幕在输出的时候是如何进行拼接的, 假设是两个1920 x 720分辨率的屏幕,有如下两种拼接方式:
分屏
从SOC中给出图片数据的时候可以横向拼接也可以纵向拼接,如果横向拼接则所有h相关的参数都应该*2,如果是纵向拼接则所有v相关的参数都要*2。
例:
屏给的参考hback-porch是40,则横向拼接的时候就需要改成80,纵向拼接不需要修改该参数,vback-porch是28则纵向拼接需要改成56,横向拼接不需要修改该参数

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值