屏幕省电技术

1 篇文章 0 订阅

参考文章:
有趣的屏幕省电技术:Intel DPST动态节能技术
DRRS 支持

一台笔记本电脑什么部分最耗电?当然是屏幕了,据Intel研究( DPST技术介绍),一台超薄本,在典型使用场景下,耗电分解如下:
在这里插入图片描述
可以看到,在通常使用中,显示屏幕几乎耗费了三分之一的电力!这也是为什么,我们笔电开发中,对省电最直接的度量标准是开屏待机时间(Idle-screen-on time)的原因了。对此,Intel有很多有趣的屏幕省电技术,如DPST(Display Power Saving Technology)、DRRS(Display Refresh Rate Swithing)、PSR(Panel Self-Refresh)等技术。

在这里插入图片描述

1 DPST

这些技术的着力点各有不同,DPST着力点主要在背光部分。据测算在200尼特亮度的时候,背光部分占据笔电Panel整体耗电量的80%;在60尼特的时候,也占据Panel的67%的耗电量,可谓是大头中的大头。对此,显卡厂商有很多方案方案,如N卡的DIDIM。Intel的DPST号称能够无感节省25%的电力,那它是怎么做到的呢?这个要从笔电的Panel的原理讲起。

1.1 显示器Panel的原理

一个普通的LCD显示屏由四部分组成:电路层、背光层、液晶层和表层。
在这里插入图片描述
LCD显示器的真正发光的部分是背光(Backlight)层,它发出均匀的面状白光(LED是点状光);液晶层根据每个点的色彩和亮度信息,对光线进行偏转,由于对三原色不同光线偏转率不同,从而影响不同点最后的颜色。液晶层实际上是个耗散层,如白色就让三原色等量的透过;纯黑色则遮蔽三原色;纯红色则红光透过率高,而其他两个颜色遮蔽等等。理解这点对理解DPST的原理相当重要。

1.2 DPST的工作原理

背光是功耗的大头,降低背光亮度就能省电。但降低背光就会导致图像整体变暗,就像我们手动调节屏幕亮度一样,对使用体验有很大影响。有没有办法即降低背光亮度,又不影响使用体验呢?

有减就要有增才能保证结果不变,要不影响摄入我们眼睛的光强,排除掉大家原地变异,瞳孔忽然变大这种不可能以后,那就需要对光传播路线的其他部分进行补偿。既然知道液晶层是个纯耗散层,光是由背光提供的,液晶层只是提供偏转和遮蔽功能,那么少一些偏转,让更多的光通过,不就可以补偿背光的减弱了吗?不错,这就是DPST的原理:
在这里插入图片描述
参考资料1是Intel的工程在IEEE上发表的Paper,详细介绍了DPST的原理。图片上部分是普通的情况,正常背光,落叶照片在液晶层每个点的选择性偏转下,显示的结果在右上部;图片下面是开启DPST后的情况,背光减弱后,通过让整体图片每个点少遮住的调节,也就是相当于将原图片调亮一点来进行补偿,结果显示在右下部。两种情况最后结果肉眼看起来相差不大,不影响使用体验。那么具体是怎么调节每个色点呢?

其实相当简单粗暴。大家都知道,图形显示是GPU里面的Framebuffer通过Display Engine搬运到Panel上的,每个LCD上的色点对应FrameBuffer里的一个色点(如真彩一个点占据32位bit)。DPST通过不停扫描(每秒好多次)FrameBuffer,将FrameBuffer中的每个点根据图形分析算法,改浅色一点,从而增加光通过量来进行补偿的。

1.3 DPST的调节与关闭

DPST出现的很早,最早记得还是在GM965的时候,到现在已经是DPST 7.x了。它对大多数情况下适应良好,但对于某些色阶差距很大的图像情况下,还是有些影响的。网上有很多问如何关闭DPST的问题,最根本的方法是在BIOS里面关闭,而比较方便的方法是在Intel的GPU Control Panel里面关闭。
在这里插入图片描述

2 DRRS

DRRS(Display Refresh Rate Switching)是通过降低笔记本上内置屏幕刷新率达到省电的目的。因为很多时候用户并不是在播放3D或电影这样需要高刷新率的媒体。当用户处于电池模式下,处理邮件或使用其他标准办公软件时,或者浏览网页、社交媒体网站时,并不需要很高的刷新率,这时就可以动态降低刷新率来降低功耗。

具体分两种:
1.Static DRRS
2.Seamless DRRS(SDRRS)

**Static DRRS:**当使用Battery/DC Mode的时候使用最低刷新率;当使用Adapter/AC Mode的时候使用最高刷新率。其中的最低刷新率和最高刷新率是Panel的EDID给定的。无论是为支持PSR的Panel都可以支持这个模式。当切换不同的频率时,会黑屏一下。

实现要求:EDID中有两套模式信息,他们Pixel Clock不同其余参数相同。同时VBT中的OS Graphics Driver Configtuaration ->PowerConservation-> Intel Display Refresh Rate Switching (DRRS) 必须 Eanble . Intergrated Display Configturation 里面激活的 Panel 中的 DPS Panel Type 需要设置为 Static DRRS。

Seamless DRRS: 在Battery/DC Mode下,当使用画面不动时候维持最低刷新频率; 当使用画面有变化的时候使用最高刷新频率。其中的最低频率和最高频率是Panel 的 EDID 给定的。在切换频率的时候不会有黑屏的现象。

要求: EDID 中有两套模式信息,他们 Pixel Clock 不同其余参数相同。同时 VBT 中的 OS Graphics Driver Configtuaration ->PowerConservation-> Intel Display Refresh Rate Switching (DRRS)必须 Eanble . Intergrated Display Configturation 里面激活的 Panel 中的 DPS Panel Type 需要设置为 Seamless 。同时 Panel的 EDID Byte 18h Bit0 必须为 1.

3 PSR

The panel self-refresh (PSR) feature, typically used for embedded display port (eDP) displays, allows the SOC to go to lower standby states (S0iX) when the system is idle but the display is on. The PSR achieves this by completely eliminating the display refresh requests to the DDR memory as long as the frame buffer for that display is unchanged. In such cases, the PSR stops the display engine from fetching data from external memory and turns off the display engine.

4 LPSP

Low-power single pipe is a power conservation feature that helps save power by keeping the inactive pipes powered OFF. This feature is enabled only in a single display configuration without any scaling functionalities. This feature is supported from 4th Generation Intel® Core™ processor family onwards. LPSP is achieved by keeping a single pipe enabled during eDP* only with minimal display pipeline support. This feature is panel independent and works with any eDP panel (port A) in single display mode.

5 Intel® S2DDT

Intel® S2DDT(Intel® Smart 2D Display Technology) reduces display refresh memory traffic by reducing memory reads required for display refresh. Power consumption is reduced by less accesses to the IMC. Intel S2DDT is only enabled in single pipe mode.

Intel® S2DDT is most effective with:

Display images well suited to compression, such as text windows, slide shows, and so on. Poor examples are 3D games.
Static screens such as screens with significant portions of the background showing 2D applications, processor benchmarks, and so on, or conditions when the processor is idle. Poor examples are full-screen 3D games and benchmarks that flip the display image at or near display refresh rates.

其他

1.根据显示内容自适应亮度
Windows11操作系统可以根据内置屏幕上显示的内容自动调整屏幕亮度和对比度(亮度调整时,亮度设置的值不会变)。 例如,如果你正在观看的视频具有深色场景,后跟较亮的场景 (例如,显示一个明亮阳光充足的) ,则亮度和对比度可能会变化。 这是正常情况。
内容自适应亮度控制提供理想的亮度和对比度级别,同时节省电源和延长电池寿命。
在这里插入图片描述
2.根据光环境调整亮度
如果电脑有光感传感器,亮度还可以通过环境光来调整亮度。
请添加图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32可以通过IIC通信协议来控制OLED屏幕。具体步骤如下: 1. 配置IIC总线:设置STM32的GPIO引脚为IIC模式,并配置IIC总线的时钟速率、地址等参数。 2. 初始化OLED屏幕:发送初始化命令,设置OLED屏幕的显示模式、亮度、对比度等参数。 3. 发送数据:将要显示的数据通过IIC总线发送到OLED屏幕上,可以显示文字、图像等。 4. 关闭OLED屏幕:发送关闭命令,关闭OLED屏幕。 以上是控制OLED屏幕的基本步骤,具体实现需要根据具体的硬件和软件环境进行调整。 ### 回答2: STM32是一款广泛使用的微控制器,它的I2C(也称为IIC)总线接口可以用于控制诸如OLED屏幕之类的外设。在这里,本人将详细介绍如何使用STM32的I2C接口来驱动OLED屏幕。 首先,我们需要了解OLED和I2C协议的一些基础知识。OLED屏幕是一种显示技术,它使用有机发光材料来发光,相对于传统的液晶显示器,它的对比度更高、响应更快、更省电。而I2C是一种串行通信协议,它可以让微控制器与其他设备(如传感器、存储器、芯片等)进行通信,它使用两根线路(SCL和SDA)进行通信。 接下来,我们将详细介绍如何在STM32中使用I2C来控制OLED屏幕。 步骤1:准备工作 在开始之前,我们需要准备好一些材料: 1. STM32微控制器板 2. OLED显示屏幕 3. 电缆线 4. 电源 步骤2:建立硬件连接 将OLED显示屏分别连接到VCC,GND,SCL,SDA的接口上,并连接到STM32的I2C接口上。 步骤3:编写代码 以下是控制OLED屏幕的代码 #include "oled.h" #include "i2c.h" void OLED_WriteCmd(uint8_t cmd) { uint8_t data[2] = {0x00, cmd}; HAL_I2C_Master_Transmit(&hi2c1, OLED_I2C_ADDR, data, sizeof(data), 100); } void OLED_WriteData(uint8_t data) { uint8_t _data[2] = {0x40, data}; HAL_I2C_Master_Transmit(&hi2c1, OLED_I2C_ADDR, _data, sizeof(_data), 100); } void OLED_Init() { //设置 OLED_WriteCmd(0xAE); OLED_WriteCmd(0x20); OLED_WriteCmd(0x10); OLED_WriteCmd(0xb0); OLED_WriteCmd(0xc8); OLED_WriteCmd(0x00); OLED_WriteCmd(0x10); OLED_WriteCmd(0x40); OLED_WriteCmd(0x81); OLED_WriteCmd(0xff); OLED_WriteCmd(0xa1); OLED_WriteCmd(0xa6); OLED_WriteCmd(0xa8); OLED_WriteCmd(0x3f); OLED_WriteCmd(0xd3); OLED_WriteCmd(0x00); OLED_WriteCmd(0xd5); OLED_WriteCmd(0xf0); OLED_WriteCmd(0xd9); OLED_WriteCmd(0x22); OLED_WriteCmd(0xda); OLED_WriteCmd(0x02); OLED_WriteCmd(0xdb); OLED_WriteCmd(0x49); OLED_WriteCmd(0x8d); OLED_WriteCmd(0x14); OLED_WriteCmd(0xaf); } 如上代码,OLED_Init()用来初始化OLED屏幕,OLED_WriteCmd()用来向OLED屏幕写入命令,OLED_WriteData()用来向OLED屏幕写入数据。在写入之前,需要使用HAL_I2C_Master_Transmit()函数将数据通过I2C协议发送到OLED屏幕。 步骤4:测试 完成以上步骤后,就可以通过写入数据和命令来控制OLED屏幕的显示,可以在代码中加上一些图形和文字等来测试OLED屏幕的显示效果。 综上所述,使用STM32的I2C接口控制OLED屏幕,不仅需要熟悉I2C协议的使用,还需要掌握OLED屏幕的通信协议及基础知识。通过以上步骤的实践,可以更好地理解和掌握STM32对I2C和OLED屏幕的控制方法。 ### 回答3: STM32是一种32位的微控制器,而OLED屏幕是一种基于有机发光二极管技术的显示屏幕。它们可以通过IIC通信协议进行连接和控制。下面将会介绍如何使用STM32控制OLED屏幕。 首先,我们需要知道IIC通信协议。IIC通信协议是一种串行通信协议,它使用两根线路进行通信:SDA(串行数据线)和SCL(串行时钟线)。在OLED屏幕中,这两根线通常被称为SDA(数据)和SCL(时钟)。STM32上有硬件IIC模块,可以方便地实现IIC通信。 接下来,我们需要确定OLED屏幕的IIC通信地址。不同的OLED屏幕可能具有不同的IIC通信地址。一般情况下,我们可以通过查看OLED屏幕的数据手册或者询问厂家来确定它的IIC通信地址。一旦我们知道了这个地址,我们就可以在STM32中使用IIC控制器向OLED屏幕发送命令或数据了。 具体实现的步骤如下: 1.初始化STM32的IIC控制器。这通常包括设置IIC的时钟速率、使能IIC控制器等。 2.在STM32上编写要发送的指令或数据。 3.通过IIC控制器将指令或数据从STM32发送到OLED屏幕。 4.在OLED屏幕上显示。 需要注意的是,通过IIC通信协议进行通信可能存在信号干扰等问题,因此在实现过程中需要进行一定的电路设计和软件优化。 使用STM32来控制OLED屏幕可以实现某些应用场景下的高端功能和复杂图像显示。例如,可以通过STM32控制OLED屏幕显示实时监测数据、运动状态信息等。同时,这种实现方法可以提高产品的整体性能,使之具有更高的可定制性、易操作性和卓越的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值