RK3568平台(背光篇)背光调试常见问题

news2024/11/26 16:33:30

一.屏幕背光概述

背光就是屏幕的从里往照射的光。

LCD 主要由液晶面板、背光、驱动电路等组成,液晶面板不会主动发光,需要背光源才能显示,液晶面板的作用就是通过电压改变某像素光的透过率来显示的,当然此光要求是偏振光,所以LCD面板上下都有偏振片的。

现在的背光源主要是LED的白色面光源,发光都是非常均匀的。

在电子工业中,背光是一种照明的形式,常被用于LCD显示上。背光式和前光式不同之处在于背光是从侧边或是背后照射,而前光顾名思义则从前方照射。他们被用来增加在低光源环境中的照明度和电脑显示器、液晶荧幕上的亮度,以和CRT显示类似的方式产生出光。

二.背光的几个基本概念 

背光开关:

背光开光是控制背光的亮灭,在RK的硬件设计上,通常会提供一个GPIO作为背光开光,通过控制这个GPIO的高低电平而控制背光的亮灭。

背光的频率:

由于控制背光亮度的是一个PWM波,因此他是有一个频率的。不同的屏,也会有一个对应的背光频率范围。如果背光不在 要求的范围内,就会出现一个滚动的黑条(水波纹)。

背光占空比:

针对 PWM 背光的屏,用来调节背光的亮度,当正占空比越大时,背光越亮, 越小时,背光就暗。当占空比不在 100%时,使用手机拍照,可以明显看到滚动的黑条。当 占空比为 100%比,这个时候的调光是一条直线,可以看到滚动的黑条消失。

背光极性:

极性简单来说,就是交换PWM波的正反输出。比如正极性时,背光越大,正占空比越多,当背光调到最大时,输出应该就是一条高电平的直线。而负极性时,背光越大,负占空比就越多,当背光调到最大时,输出应该就是一条低电平的直线。

三.常见问题

背光开光:

添加一个背光开光的控制节点来控制背光的熄屏亮屏。

路径:kernel-5.10/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c

struct rockchip_hdmi *g_hdmi = NULL;
static int vbo_ctl_open(struct inode *inode, struct file *file)
{
    return 0;
}

static int vbo_ctl_release(struct inode *inode, struct file *file)
{
    return 0;
}

static const struct file_operations vbo_ctl_fops = {
    .open = vbo_ctl_open,
    .release = vbo_ctl_release,
};

struct miscdevice vbo_device = {
	.minor = MISC_DYNAMIC_MINOR,
	.name = "vbo_ctl_dev",
	.fops = &vbo_ctl_fops,
};

static ssize_t vbo_bl_power_show(struct device *dev,
                struct device_attribute *attr, char *buf)
{
    int value;
    struct rockchip_hdmi *hdmi = g_hdmi;//container_of(dev, struct rockchip_hdmi, dev);

    value = gpiod_get_value(hdmi->backlight_gpio);

    return sprintf(buf, "%d\n", value);
}

static ssize_t vbo_bl_power_store(struct device *dev,
                 struct device_attribute *attr,
                 const char *buf, size_t count)
{
    int value;
    struct rockchip_hdmi *hdmi = g_hdmi;//container_of(dev, struct rockchip_hdmi, dev);

    if (!kstrtoint(buf, 10, &value))
    {
        dev_info(hdmi->dev, "set backlight gpio value to %d\n", value);
        gpiod_set_value(hdmi->backlight_gpio, !!value);
    } else
        dev_err(hdmi->dev, "%s: error\n", __FUNCTION__);

    return count;
}

DEVICE_ATTR_RW(vbo_bl_power);

static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)
{
    ....

    //这里为控制背光脚的GPIO
    hdmi->backlight_gpio = devm_gpiod_get_optional(hdmi->dev, "lcd-bl",
						    GPIOD_OUT_LOW);
    if (IS_ERR(hdmi->backlight_gpio)) {
        ret = PTR_ERR(hdmi->backlight_gpio);
        dev_err(hdmi->dev, "failed to request lcd-bl-gpio GPIO: %d\n", ret);
        return ret;
    }

    g_hdmi = hdmi;
    ret = misc_register(&vbo_device);
    if (ret) {
        dev_err(hdmi->dev, "vbo_device ERROR: could not register vbo_device\n");
        return ret;
    }

    ret = device_create_file(vbo_device.this_device,
                    &dev_attr_vbo_bl_power);
    if (ret) {
        dev_err(hdmi->dev, "failed to create attr vbo_bl_power!\n");
        return ret;
    }
    return 0;
}

添加之后会在/sys/class/misc/vbo_ctl_dev/vbo_bl_power路径下生成控制背光的节点。

固定背光频率:

路径:kernel-5.10/drivers/video/backlight/pwm_bl.c

static int pwm_backlight_probe(struct platform_device *pdev)
{
    if (!state.period && (data->pwm_period_ns > 0))
		state.period = data->pwm_period_ns;
    //这个state.period可以修改背光的频率
}

修改背光占空比:

路径:kernel-5.10\drivers\video\backlight\pwm_bl.c

int mapBrightness(struct pwm_bl_data *pb, int num) 
{
	//android range(10-255), change to (0-255)
	num = (num - 10) * (255 - 0) / (255 - 10);
	

    if (num >= 0 && num <= 255) {
    -    return pb->min_duty + (num - 0) * (pb->max_duty  - pb->min_duty ) / (pb->max_duty - 0);
    +    return pb->min_duty + (num - 0) * (pb->max_duty  - pb->min_duty ) / (255 - 0);
    } else {
	-	return -1;
    +   return 104;
	}
}

在此函数里面能修改背光占用比。

修改占空比也能在设备树里面修改:

背光占空比为30%~100%

backlight: backlight {
		compatible = "pwm-backlight";
		brightness-levels = <
		-	  0  20  20  21  21  22  22  23
		-	 23  24  24  25  25  26  26  27
		-	 27  28  28  29  29  30  30  31
		-	 31  32  32  33  33  34  34  35
		-	 35  36  36  37  37  38  38  39
		-	 40  41  42  43  44  45  46  47
		-	 48  49  50  51  52  53  54  55
		-	 56  57  58  59  60  61  62  63
		-	 64  65  66  67  68  69  70  71
		-	 72  73  74  75  76  77  78  79
		-	 80  81  82  83  84  85  86  87
		-	 88  89  90  91  92  93  94  95
		-	 96  97  98  99 100 101 102 103
		-	104 105 106 107 108 109 110 111
		-	112 113 114 115 116 117 118 119
		-	120 121 122 123 124 125 126 127
		-	128 129 130 131 132 133 134 135
		-	136 137 138 139 140 141 142 143
		-	144 145 146 147 148 149 150 151
		-	152 153 154 155 156 157 158 159
		-	160 161 162 163 164 165 166 167
		-	168 169 170 171 172 173 174 175
		-	176 177 178 179 180 181 182 183
		-	184 185 186 187 188 189 190 191
		-	192 193 194 195 196 197 198 199
		-	200 201 202 203 204 205 206 207
		-	208 209 210 211 212 213 214 215
		-	216 217 218 219 220 221 222 223
		-	224 225 226 227 228 229 230 231
		-	232 233 234 235 236 237 238 239
		-	240 241 242 243 244 245 246 247
		-	248 249 250 251 252 253 254 255
        +    77  77  78  78  79  79  80  81
		+	82  83  84  85  86  87  87  88
		+	88  89  90  90  91  91  92  93
		+	94  94  95  95  96  96  97  97
		+	98  98  99  99  100 100 101 101
		+	102 103 104 104 105 106 107 107
		+	108 108 109 109 110 111 112 113
		+	114 115 116 116 117 117 118 118
		+	119 119 120 121 122 123 124 124
		+	125 125 126 126 127 127 128 128
		+	129 129 130 130 131 131 132 132
		+	133 133 134 134 135 135 136 136
		+	137 137 138 138 139 139 140 141
		+	142 142 143 144 145 146 146 147
		+	147 148 148 149 149 150 151 151
		+	152 153 153 154 154 155 156 156
		+	157 158 158 159 160 161 162 162
		+	163 163 164 164 165 165 166 166
		+	167 168 168 169 170 171 172 172
		+	173 174 175 175 176 177 178 179
		+	180 181 182 182 183 184 185 186
		+	187 188 189 190 190 191 192 193
		+	194 194 195 196 197 198 199 199
		+	200 201 202 203 204 204 205 206
		+	207 208 209 210 211 211 212 213
		+	214 215 216 216 217 217 218 219
		+	219 220 220 221 222 223 224 224
		+	225 225 226 227 228 229 229 230
		+	231 232 232 233 234 235 236 237
		+	238 239 239 240 240 241 242 242
		+	243 244 245 246 246 247 247 248
		+	249 250 251 251 252 253 254 255
		>;
		default-brightness-level = <200>;
	};

背光亮度极性问题:

在调节背光的时候极性相反会导致背光的亮度相反。

修改背光极性可以修改设备树DTS:

backlight: backlight {
        compatible = "pwm-backlight";
    +   pwms = <&pwm1 0 5555555 1>;
    -   pwms = <&pwm1 0 5555555 0>;
	    brightness-levels = < 
                .......
		>;
        default-brightness-level = <235>;
};

以上的修改能让背光的极性相反过来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(5.5_3)——并查集的进一步优化

Find操作的优化(压缩路径) 压缩路径——Find操作&#xff0c;先找到根节点&#xff0c;再将查找路径上所有结点都挂到根结点下 代码&#xff1a; //Find "查"操作优化&#xff0c;先找到根节点&#xff0c;再进行"路径压缩" int Find(int S[], int x) {…

Shell、C/C++、Python操作环境变量

环境变量 环境变量是一种在操作系统中用于存储信息的机制&#xff0c;这些信息可以被系统进程、应用程序和脚本访问和使用。环境变量在操作系统中的作用类似于一个全局配置参数&#xff0c;它们定义了操作系统的运行环境&#xff0c;包括系统行为、应用程序路径、用户信息等。…

uniapp自定义浮动图标、列表布局

uniapp自定义浮动图标 <button class="fab" @click="goPage"><image src="../../../static/yiyuan.png" mode="" style="width: 60rpx;height:60rpx;"></image></button>.fab {z-index: 100;positi…

TLE4966-3G带方向检测功能的高灵敏度汽车霍尔开关

TLE4966-3G是一款集成电路双霍尔效应传感器&#xff0c;专为使用旋转极轮的高精度应用而设计。通过片上有源补偿电路和斩波器技术实现精确的磁切换点和高温稳定性。 该传感器在Q2提供速度输出&#xff0c;其状态&#xff08;高或低&#xff09;与磁场值相对应。对于超过阈值BO…

小白零基础学数学建模系列-Day3-线性回归模型的构建与评估

文章目录 1 线性回归基础1.1 线性回归概念与应用1.2 数学原理与推导1.3 线性回归的实现 2 案例分析&#xff1a;房价预测2.1 加载数据2.2 数据预处理2.3 探索性数据分析2.4 观察选择特征2.5 准备训练模型的数据2.6 将数据拆分为训练集和测试集2.7 训练和测试模型2.8 模型评估 3…

Ubuntu每次登录都提示有新的更新,apt更新却0个软件需要升级:清空MOTD消息 安装update-notifier-common组件 运行强制更新脚本

问题 每登录ubuntu&#xff0c;都会显示有更新需要注意。 80更新可以立即应用。 这些更新中有 1 个是标准安全更新。 要查看这些附加更新&#xff0c;请运行&#xff1a;apt list --upgradable 然而使用更新命令却提示0可更新 查询了一下&#xff0c;这似乎是MOTD的错误&#x…

Gartner发布2024年网络风险管理成熟度曲线:使网络安全战略与业务目标保持一致的概念、方法、流程和技术

网络风险管理现在是高管和监管机构最关注的问题&#xff0c;它采用多种方法和技术来支持治理、风险管理和合规性。安全和风险管理领导者可以使用此技术成熟度曲线来评估解决方案并做出适当的采用决策。 战略规划假设 到 2026 年&#xff0c;60% 的网络安全职能将实施以业务影响…

【Qt】Qt编程注意事项

目录 Qr中的命名规范 Qt Creator中的快捷键 查询文档的方式 Qt窗口坐标体系 Qr中的命名规范 在学习编程语言阶段&#xff0c;给变量、函数、文件、类命名是非常有讲究的。 命名要有描述性&#xff0c;不要使用abc&#xff0c;xyz这种比较无规律的名字类描述。如果名字比较…

什么是前端微服务,有何优势

随着互联网技术的发展&#xff0c;传统的单体应用架构已经无法满足复杂业务场景的需求。微服务架构的兴起为后端应用的开发和部署提供了灵活性和可扩展性。与此同时&#xff0c;前端开发也经历了类似的演变&#xff0c;前端微服务作为一种新兴的架构模式应运而生。 一、前端微服…

开源web版3D展示工具Online3DViewer

Online3DViewer是一个免费且开源的Web解决方案&#xff0c;它允许用户在浏览器中直接预览和探索3D模型。 以下是关于Online3DViewer的详细介绍&#xff1a; 一、基本概述 定义&#xff1a;Online3DViewer是一个在线3D模型查看器&#xff0c;支持多种3D文件格式&#xff0c;用…

如何评价2023年数学建模国赛?

2023年的赛题已经发布了,ABC三题侧重点不同,但是A题专业性较强,涉及微分方程,以及优化模型,B题题目为多波束测线问题,第一问需要计算,结合函数和几何的相关知识点,问题2涉及到最小路径问题,如下有总结,可以查看相应的模块方法,C题目为“蔬菜类商品的自动定价与补货决…

C++ 哈希使用与底层原理

哈希的概念 哈希是一种建立映射的思想&#xff0c;我们尝试用的数据结构是哈希表 &#xff0c;又称「散列表」&#xff0c;其通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具 体而言&#xff0c;我们向哈希表输入一个键 key &#xff0c;则可以在 &am…

Docker③_VMware虚拟机和Docker的备份与恢复

目录 1. VMware虚拟机的快照备份 1.1 VMware本机的快照备份 1.2 VMware快照备份到另一电脑 2. Docker知识点 2.1 Docker镜像和容器的关系 2.2 Docker的存储卷 2.3 Docker命令简介 2.4 删除Anylink镜像 3. Docker备份和恢复 3.1 确定要回滚的容器和版本 3.2 备份当前…

【C语言-扫雷游戏】mineweeper【未完成】

编程小白如何成为大神&#xff1f;大学新生的最佳入门攻略 编程已成为当代大学生的必备技能&#xff0c;但面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&…

psychopy stroop 实验设计

斯特鲁stroop实验就是色词一致/不一致实验。 设计步骤如下&#xff1a; 1. 先去设置中将Input改为PsychToolbox&#xff0c; 2. 然后左上角File-New新建一个 3. 右键trial&#xff0c;rename改名 改成自己想要的名字即可&#xff0c;比如欢迎界面welcome。 4. 接下来添加提示语…

老阳推荐的temu选品师项目能不能做成?

在不断变化的电商领域&#xff0c;temU选品师项目作为一种新兴职业&#xff0c;受到了越来越多的关注。老阳的推荐使得这一项目引起了不少人的兴趣&#xff0c;那么&#xff0c;temU选品师项目究竟能否成功呢?让我们从一个新的角度来探讨这一问题。 新兴市场的机遇与挑战 temU…

C语言 ——— 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

目录 题目要求 代码思路 代码实现 题目要求 写一个函数&#xff0c;判断一个字符串是否为另外一个字符串旋转之后的字符串 例如 s1 "AABCD" &#xff1b;s2 "BCDAA" &#xff0c;返回1 s1 "AABcd" &#xff1b;s2 "BCDAA" …

免费分享一套SpringBoot+Vue仓库(进销存)管理系统【论文+源码+SQL脚本】,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue仓库(进销存)管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue仓库(进销存)管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 该系统的设计初衷是解决传统仓库管理中存…

高可用集群KEEPALIVED

文章目录 高可用集群KEEPALIVEDVRRPkeepalived 部署环境准备 开启通信功能设置独立日志设置独立子配置文件抢占模式和非抢占模式延迟抢占非抢占模式 单播模式邮箱邮件通知脚本 双主架构实现ipvs的高可用性lvs-dr VRRP Script实现HAProxy高可用 文章相关连接如下&#xff1a; 如…

力扣 | 动态规划 | 在字符串的应用 | 最长回文子串、最长回文子序列、单词拆分、编辑距离

文章目录 1.最长回文子串2.最长回文子序列3.单词拆分4.编辑距离5. 共同点和思路6. 各个问题的思路和扩展1. 最长回文子串2. 最长回文子序列3. 单词拆分4. 编辑距离 在解答字符串动态规划的应用时&#xff0c;我们需要非常注意一个问题&#xff1a;   有时候我们定义 d p [ i …