am335x LCD背光问题
/**************************************************************** * am335x backlight problem * * 本问记录am335x背光问题的解决过程。 * * Tony Liu, 2016-4-21, Shenzhen ***************************************************************/ 1.现象 在app中,根据QSlider的变化,调节背光的亮度。变化范围10-100。 当QSlider调节到最低时,背光变量。 2.问题分析 2.1 查看QSlider的变化,此时的值其实是0,而不是label显示的10。 在串口中输入: echo 100 > /sys/class/backlight/pwm-backlight/brightness echo 50 > /sys/class/backlight/pwm-backlight/brightness 发现背光的亮度随着输入的值减小,逐渐变暗。 输入0,却发现背光变亮。 echo 0 > /sys/class/backlight/pwm-backlight/brightness 进一步确定当出入参数为0时有问题。 2.2 驱动代码如下,目前只跟到这里,有时间再跟。 //每次设置pwm都会调用下面的函数 kernel/driver/video/backlight/pwm_bl.c static int pwm_backlight_update_status(struct backlight_device *bl) { struct pwm_bl_data *pb = dev_get_drvdata(&bl->dev); int brightness = bl->props.brightness; int max = bl->props.max_brightness; if (bl->props.power != FB_BLANK_UNBLANK) brightness = 0; if (bl->props.fb_blank != FB_BLANK_UNBLANK) brightness = 0; if (pb->notify) brightness = pb->notify(pb->dev, brightness); if (brightness == 0) { //当传入的参数为0时调用,问题就出在这里 pwm_set_duty_ns(pb->pwm, 0); pwm_stop(pb->pwm); } else { //传入参数是1-100时,调用 brightness = pb->lth_brightness + (brightness * (pb->period - pb->lth_brightness) / max); pwm_set_period_ns(pb->pwm, pb->period); pwm_set_duty_ns(pb->pwm, brightness); pwm_start(pb->pwm); } if (pb->notify_after) pb->notify_after(pb->dev, brightness); return 0; } 3.解决方法: 在QT中进行更改,设置slider的最大值和最小值,并更新到显示的label. ui->slider->setMaximum(100); ui->slider->setMinimum(10); //transform int to QString, base 10 ui->label->setText(QString::number(ui->slider->minimum(), 10)); ui->label_2->setText(QString::number(ui->slider->maximum(), 10)); 这样一来,就不会出现QSlider的值是0的情况,传给底层的参数也不会为0。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?