配屏方法

1、配屏基本流程和原理

1.1 流程

Android产品开发,产品成熟后,各种原因,需要配各种屏。无论使用哪个厂商的芯片,屏驱动基本都已开发,除非特殊的屏。在驱动开发的情况下,只需要按照驱动需要的参数,构建屏参数文件,编译到固件升级即可。基本流程如下:
在这里插入图片描述
配屏说明文档和系统强相关,使用不同的系统方案,配屏文档不同,由系统解决方案方提供。

2.2 sync、DE屏

从软件上来说,DE 模式和 SYNC 模式是一样的,软件上不做区分。从表中我们可以得
到如下参数:
在这里插入图片描述
参数

Left_margin = HBP(Horizontal Back Porch)
Right_margin = HFP(Horizontal Front Porch)
Hsync = HPW(Horizontal Pulse Width )
Xres = HVD(Horizontal Valid)
Upper_margin = VBP(Vertical Back Porch)
low_margin = VFP(Vertical Front Porch)
Vsync = VPW(Vertical Pulse Width)
Yres = VVD(Vertical Valid) 

参数满足关系

Left_margin + right_margin + hsync + xres = horizontal period
即:HBP+HFP+HPW+HVD=horizontal period
Upper_margin + low_margin + vsync + yres = vertical period
即:VBP+VFP+VPW+VVD=vertical period
刷新率 =DCLK/((xres+left_margin+right_margin+hsync)*(yres+upper_margin+low_margin+vsync))
即:刷新率=DCLK/(horizontal period*vertical period)

有些 DE 模式的屏幕,并没有直接告诉 HFP、HSYNC、HBP、VFP、VSYNC、
VBP 这些参数,而给的是 Horizontal blank time 和 Vertical blank time,这时我们
只要保证如下关系即可:

HFB + HSYNC + HBP = Horizontal blank time
VFP + VSYNC + VBP = vertical blank time

这里需要说明的一点是,Android 的最高刷新频率为 60fps,所以我们最好保证
LCDC 的刷新频率也为 60fps,根据文档第一部分介绍的 LCDC 的刷新频率计算公式可以
知道,LCDC 的刷新频率和 DCLK 成正比,和水平方向与垂直方向参数之和的乘积成反
比。根据屏幕的 datasheet 我们可以看出,对于一款屏幕 H_VD/V_VD 对应屏幕的分辨
率,值是固定的不能修改,BP、FP、PW 的值都有一个最大值和最小值的取值范围,所
以当我们的 DCLK 分配不到想要的频率的时候,可以适当的调整 BP、FP、PW,是的 LCDC
的刷新率尽可能的接近 60FPS。式

2.1 rk3288配屏
a. 配屏文档

配屏说明文档:RockChip_LCD开发文档v1.6.pdf
屏规格书,部分截图如下:
在这里插入图片描述

b. 在RK3288_6.0_0518\kernel\arch\arm\boot\dts目录下添加屏参数文件

不同的屏,配置的参数不同,此处以lvds为例:

/*
 * rockChip. LCD-hsd121kxn1a103jf_lvds
 *
 */
/ {
	disp_timings: display-timings {
		native-mode = <&timing0>;
		timing0: timing0 {
        	screen-type = <SCREEN_LVDS>;
			lvds-format = <LVDS_8BIT_1>;
			out-face = <OUT_P888>;
			color-mode = <COLOR_RGB>;
			clock-frequency = <51200000>;
			hactive = <1024>;
			vactive = <768>;
			hback-porch = <48>;
			hfront-porch = <14>;
			hsync-len = <16>;
			hsync-active = <0>;
			vback-porch = <3>;
			vfront-porch = <5>;
			vsync-len = <1>;
			vsync-active = <0>;
			screen-width = <245>;
			screen-hight = <184>;
			de-active = <0>;
			pixelclk-active = <0>;
			swap-rb = <0>;
			swap-rg = <0>;
			swap-gb = <0>;
		};
	};
};

文件名命名格式为:lcd-屏型号-屏类型或分辨率.dtsi,此例文件名为:lcd-hsd121kxn1a103jf-lvds.dtsi。

c. 在主设备树种添加对屏参数文件的应用

rk3288-huaxia.dts修改如下,此处新配屏未实际使用(12.1屏):

 #include "rk3288.dtsi"
+// 12.1 size panel for robot
+// #include "lcd-hsd121kxn1a103jf-lvds.dtsi"
 //#include "lcd-xinshixun-mipi.dtsi"
+// panel for face recognize product
 #include "lcd-huaxia-purui.dtsi"
 //#include "lcd-F402.dtsi"
 //#include "lcd-shanghaidunlian.dtsi"

电压引脚使能修改,增加以下代码

lcd_en:lcd_en {
    rockchip,power_type = <GPIO>;
    gpios = <&gpio0 GPIO_B5 GPIO_ACTIVE_HIGH>;
    ockchip,delay = <10>;
};
2.2 a40i配屏
a. 配屏文档
配屏说明文档:A40I sys_config.fex使用配置说明V1.0.pdf

特殊参数说明:在这里插入图片描述

b. 修改配置文件

a40i\lichee\tools\pack\chips\sun8iw11p1\configs\a40-p1\sys_config.fex
部分内容如下

[lcd0]
lcd_used            	= 1
lcd_driver_name     	= "default_lcd"
lcd_backlight       	= 204
lcd_if              	= 0
;lcd_if              	= 3
;=======800X480===============
;lcd_x               	= 800
;lcd_y               	= 480
;lcd_width           	= 154
;lcd_height          	= 86
;lcd_dclk_freq       	= 33
;======1024X600===============
lcd_x               	= 1024
lcd_y               	= 600
lcd_width           	= 154
lcd_height          	= 85
lcd_dclk_freq       	= 51.2
;======1920X1080===============

3、解决的问题

3.1 rk3288配屏后显示不符合要求

旋转输出信号
a、硬件修改屏决定图像显示方向的引脚
b、软件做图像输出旋转
软件修改如下

diff --git a/kernel/arch/arm/configs/rockchip_defconfig b/kernel/arch/arm/configs/rockchip_defconfig
index 712f628..0d28ad6 100755
--- a/kernel/arch/arm/configs/rockchip_defconfig
+++ b/kernel/arch/arm/configs/rockchip_defconfig
@@ -2507,7 +2507,8 @@ CONFIG_FB_ROCKCHIP=y
 # CONFIG_DUAL_LCDC_DUAL_DISP_IN_KERNEL is not set
 # CONFIG_ONE_LCDC_DUAL_OUTPUT_INF is not set
 CONFIG_NO_DUAL_DISP=y
-# CONFIG_FB_ROTATE is not set
+CONFIG_FB_ROTATE=y
+CONFIG_ROTATE_ORIENTATION=90
 CONFIG_THREE_FB_BUFFER=y
 CONFIG_LCDC_RK3188=y
 CONFIG_LCDC_RK3288=y
3.2 配屏开机logo显示半屏

开机logo分辨率不正确

3.3 配屏出现显示屏固定地方花屏

初始配置参数不正确,导致屏烧坏,出现花屏

3.4 a40i配屏背光不可控

背光控制代码如下

if (disp_lcd_is_used(lcd)) {
		__u64 backlight_bright;
		__u64 period_ns, duty_ns;
		if (lcdp->panel_info.lcd_pwm_used) {
			lcdp->pwm_info.channel = lcdp->panel_info.lcd_pwm_ch;
			lcdp->pwm_info.polarity = lcdp->panel_info.lcd_pwm_pol;
			lcdp->pwm_info.dev = disp_sys_pwm_request(lcdp->panel_info.lcd_pwm_ch);

			if (lcdp->panel_info.lcd_pwm_freq != 0) {
				period_ns = 1000*1000*1000 / lcdp->panel_info.lcd_pwm_freq;
			} else {
				DE_WRN("lcd%d.lcd_pwm_freq is ZERO\n", lcd->disp);
				period_ns = 1000*1000*1000 / 1000;  //default 1khz
			}

			backlight_bright = lcdp->lcd_cfg.backlight_bright;

			duty_ns = (backlight_bright * period_ns) / 256;
			//DE_DBG("[PWM]backlight_bright=%d,period_ns=%d,duty_ns=%d\n",(u32)backlight_bright,(u32)period_ns, (u32)duty_ns);
			disp_sys_pwm_set_polarity(lcdp->pwm_info.dev, lcdp->pwm_info.polarity);
			lcdp->pwm_info.duty_ns = duty_ns;
			lcdp->pwm_info.period_ns = period_ns;
		}

duty_ns是占空比,当占空比变大,对屏背光的电压电流变大,因此背光的最大值不能超过屏可支持的最大占空比。
period_ns 是背光时钟周期。
lcd_pwm_freq:配置的背光频率。
从代码中计算公式看,频率过大,即使背光值设置为最大值250,占空比也很小,屏不亮。
注意: 屏的背光频率也不能过小,频率太小对屏的背光电压不稳定,导致屏显示闪烁。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESP8266按键网是一种通过按下开发板上的物理按键来实现WiFi网络置的方法。一般来说,ESP8266开发板上都有一个或多个按键,用来与用户交互。 按键网的实现原理如下: 首先,ESP8266会在启动时进入网模式,此时可以通过按下按键来触发网功能。当按下按键后,开发板会将自身设置为一个WiFi热点,供用户连接。用户可以通过手机或电脑等设备连接到这个热点。 连接到ESP8266的热点后,用户可以打开浏览器,输入预设的IP地址或域名,然后进入置界面。置界面通常包含WiFi网络的SSID和密码等信息,用户需要输入正确的WiFi信息,然后保存置。 保存置后,ESP8266会断开当前连接的热点,并尝试连接用户置的WiFi网络。如果连接成功,开发板会重新启动并进入正常工作模式。如果连接失败,ESP8266会再次进入网模式,可以再次尝试置。 通过按键网,可以快速实现ESP8266的网络置,方便用户使用。使用按键网的好处是简单易懂,不需要复杂的置步骤,适用于初学者或不熟悉网络置的用户。同时,按键网也适用于没有显示的开发板,因为用户可以通过连接手机或电脑的浏览器来完成置。 需要注意的是,ESP8266按键网需要预先编写相关的程序代码来实现网功能,并确保按键的连接和程序逻辑的正确性。这需要一定的开发经验和编程知识。同时,在进行按键网时,需要保证可以正常连接到ESP8266的热点,并且正确地输入WiFi网络的信息,确保网络连接的成功。 ### 回答2: ESP8266是一款低成本、低功耗的Wi-Fi模块,用于物联网应用的开发。其中,按键网是一种常见的方法。 按键网是指通过按下ESP8266模块上的按键来进行Wi-Fi网络的置。在按键网的过程中,用户需要按照特定的操作流程来进行置。 首先,用户需要按住ESP8266模块上的网按键,同时按下重置按键,然后松开重置按键并保持网按键持续按下。 接下来,用户需要等待一定时间,此时ESP8266模块会进入网模式。在网模式下,它会创建一个热点,用户可以通过手机或电脑连接到该热点。 连接到ESP8266模块的热点后,用户需要打开手机或电脑上的浏览器,并输入特定的网址(通常是192.168.4.1)。在打开的网页界面中,用户可以看到ESP8266的置界面。 在置界面中,用户可以设置ESP8266模块连接的Wi-Fi网络的名称(SSID)和密码。用户需要输入正确的Wi-Fi名称和密码后,点击保存按钮进行保存。 置保存后,ESP8266模块会自动将置信息传递给Wi-Fi模块,并尝试连接到设定的Wi-Fi网络。如果连接成功,ESP8266会显示连接成功的提示,并退出网模式,重新启动进入正常工作模式。 总之,按键网是一种便捷的方法,用户只需按下网按键,通过手机或电脑连接到ESP8266的热点,进行置设置即可。这种方法简单易行,适用于各种物联网设备的快速上线。 ### 回答3: ESP8266按键网是指利用ESP8266芯片上的按键来进行无线网络置的过程。ESP8266是一款集成了无线网络功能的微控制器,它支持WiFi通信。在按键网过程中,用户可以通过按下ESP8266模块上的按键,触发设备进入特定的网模式,从而实现网络的置。 ESP8266按键网可以分为两个主要步骤:网模式的触发和网络信息的置。 首先,当用户长按ESP8266模块上的按键一段时间后,设备会通过相应的指示灯或其他方式进入网模式。在网模式下,ESP8266模块将会以热点(AP)模式工作,此时用户可以通过手机或电脑的WiFi设置界面找到该热点并连接。 接下来,用户可以通过访问预设的Web服务器或局域网中的设备置页面,输入所需的无线网络信息(如SSID和密码),并保存置。在保存置后,ESP8266模块将会自动重启,并尝试连接用户指定的WiFi网络。 如果连接成功,用户可以通过其他方式(如串口终端或应用程序)来获取ESP8266模块的IP地址,并进行进一步的网络通信。如果连接失败,则可以再次触发网模式,重新进行网络置。 总结来说,ESP8266按键网通过按键触发网模式,让用户可以方便地将ESP8266模块连接到无线网络中,从而实现更便捷的无线通信。同时,用户也可以根据自己的需求进行一些定制化的置,提高设备的灵活性和可操作性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值