news 2026/4/18 4:13:07

[Linux外设驱动详解]PWM Backlight 驱动详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[Linux外设驱动详解]PWM Backlight 驱动详解

PWM Backlight 驱动详解

1. 概述

pwm_bl.c是 Linux 内核中基于 PWM 的背光控制驱动程序。该驱动通过 PWM(脉冲宽度调制)信号来控制 LCD 屏幕的背光亮度,是嵌入式系统中常用的背光控制方案。

文件位置:linux-4.19.125/drivers/video/backlight/pwm_bl.c

主要功能:

  • 通过 PWM 占空比控制背光亮度
  • 支持设备树(Device Tree)配置
  • 支持 CIE 1931 亮度曲线算法
  • 支持亮度等级线性插值
  • 支持电源管理和休眠/唤醒

2. 驱动架构

2.1 核心数据结构

structpwm_bl_data{structpwm_device*pwm;// PWM 设备structdevice*dev;// 设备指针unsignedintperiod;// PWM 周期(纳秒)unsignedintlth_brightness;// 最低亮度阈值unsignedint*levels;// 亮度等级表bool enabled;// 使能状态structregulator*power_supply;// 电源 regulatorstructgpio_desc*enable_gpio;// 使能 GPIOunsignedintscale;// 亮度缩放因子bool legacy;// 旧版 API 标志unsignedintpost_pwm_on_delay;// PWM 开启后延迟unsignedintpwm_off_delay;// PWM 关闭前延迟int(*notify)(structdevice*,intbrightness);// 亮度变化前通知void(*notify_after)(structdevice*,intbrightness);// 亮度变化后通知int(*check_fb)(structdevice*,structfb_info*);// framebuffer 检查void(*exit)(structdevice*);// 退出回调};

2.2 背光操作接口

staticconststructbacklight_opspwm_backlight_ops={.update_status=pwm_backlight_update_status,// 更新背光状态.check_fb=pwm_backlight_check_fb,// 检查 framebuffer};

3. 核心功能实现

3.1 电源控制

开启背光 (pwm_backlight_power_on)
staticvoidpwm_backlight_power_on(structpwm_bl_data*pb,intbrightness){// 1. 检查是否已开启if(pb->enabled)return;// 2. 使能电源 regulatorregulator_enable(pb->power_supply);// 3. 启用 PWMpwm_enable(pb->pwm);// 4. 延迟(如果配置)if(pb->post_pwm_on_delay)msleep(pb->post_pwm_on_delay);// 5. 设置使能 GPIOif(pb->enable_gpio)gpiod_set_value_cansleep(pb->enable_gpio,1);pb->enabled=true;}
关闭背光 (pwm_backlight_power_off)
staticvoidpwm_backlight_power_off(structpwm_bl_data*pb){if(!pb->enabled)return;// 1. 关闭使能 GPIOif(pb->enable_gpio)gpiod_set_value_cansleep(pb->enable_gpio,0);// 2. 延迟(如果配置)if(pb->pwm_off_delay)msleep(pb->pwm_off_delay);// 3. 配置 PWM 并禁用pwm_config(pb->pwm,0,pb->period);pwm_disable(pb->pwm);// 4. 禁用电源 regulatorregulator_disable(pb->power_supply);pb->enabled=false;}

3.2 占空比计算

staticintcompute_duty_cycle(structpwm_bl_data
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:45:13

GPT 系列学习总结(1-3)

GPT(Generative Pre-Trained Transformer): GPT 系列是 OpenAI 的一系列预训练模型,GPT 的目标是通过 Transformer,使用预训练技术得到通用的语言模型(目前已经公布论文的有 GPT-1、GPT-2、GPT-3) 核心架构:仅解码器(…

作者头像 李华
网站建设 2026/4/14 22:31:11

当测试遇到产品经理:用测试思维评审需求文档的核心方法论

一、需求评审的测试思维转型 传统认知中,测试是开发流程的末端环节。但现代敏捷实践要求测试人员前置介入需求评审,通过四大核心思维重构评审逻辑: 可测性思维:立即识别模糊表述(如"快速响应""用户体验…

作者头像 李华
网站建设 2026/4/17 5:55:53

我发现LLM解析中医脉象数据慢性病管理效率提升30%

📝 博客主页:Jax的CSDN主页 目录当AI开始读我的病历:一位医疗从业者的困惑与狂想 一、从"AI不会看X光"到"AI比我还懂患者" 二、药物研发的"魔法时刻":当AlphaFold遇上咖啡因 三、当AI开始"揣测…

作者头像 李华
网站建设 2026/4/17 14:42:10

2026中专学电商,考哪些证书对找工作有帮助?

电商一组数据引起了业内的广泛关注:那些能够熟练运用数据分析工具来制定营销策略的团队,其活动转化率平均高出传统运营团队40%以上。这一现象指向了一个明确的趋势——今天的电商行业,正从流量驱动转向数据驱动。对于2026年即将毕业的中专电商…

作者头像 李华