找回密码
 立即注册
查看: 978|回复: 7

OLED屏幕还能这么玩?真160帧刷新显示

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-9-24 11:34:42 | 显示全部楼层 |阅读模式
不知道大家是否观察到过这样一种现象?
使用手机视频拍摄OLED屏幕时,总是会拍摄到OLED屏幕产生倾斜的黑色条纹。就像下面这个样子
截图202409241132017046.jpg
拍摄会带有条纹的OLED

产生这个现象的问题是什么呢?其实要从两个方面来看,首先是OLED本身上的,因为OLED同时点亮所有像素点会造成功耗非常高,所以OLED其实是使用的逐个点点亮。在选通一列后,通过一个1/64duty的脉冲快速扫描一遍,将显存中的数据显示出来。我们可以通过一个照片来观察这个现象。
截图202409241132195167.jpg
高快门速度下的OLED显示屏
上面讲的另一个方面就是手机曝光,因为手机摄像头是从上到下的逐行曝光,可以看到每一行都有一个像素(实际是刷新了一整行)。这也就解释了上面普通拍摄时候的斜条纹是怎么产生的了。
所以,想要让这个拍摄起来不产生这种条纹,有两种解决方式:
一种是顺应OLED屏幕刷新的方向,将手机横过来拍摄,条纹自然而然的就消失掉了。
另一种方式,就是提高OLED的实际刷新帧率,让手机摄像头捕获不到这个频闪。而这篇文章,将从OLED的技术手册入手,手把手的来教学如何对OLED屏幕进行合理的“超频”。
首先我们需要直接移植一个屏幕厂家给的驱动初始化代码,这里我使用了中景园的51版本OLED驱动进行移植。

首先是找到一个STC的官方例程进行“移花接木”,这里使用了AI8051U实验箱程序“77-DMA SPI刷新OLED12864显示屏程序,SSD1306驱动,0.96寸”,因为我买的是1.3寸OLED屏幕,所以需要稍微进行一些改造。如果是OLED 0.96寸的,可以直接像我这样直接查找对应技术手册和例程。
截图202409241132295952.jpg
直接移植初始化程序,发现虽然OLED能正常点亮了,但是却有两列显示花屏了。

截图202409241132462223.jpg
在添加了偏移后,屏幕已经正常显示了,接下来,就开始干初始化部分的寄存器!

这里我推荐使用Windows自带的Edge浏览器打开数据手册PDF,用来翻译还是很方便的。
截图202409241132552017.jpg
想要让显示帧率提高,首先想到的就是让OLED内部的时钟频率变高,所以我们直接在整篇文档内搜索“pll”“clk”这样的关键词。
截图202409241133075947.jpg
经过一番搜索,我们看到这个0xD5指令显然就是设置内部时钟的频率,通过翻译文档得知,0xD5 后面的这个参数,就可以设置分频系数和系统时钟。
截图202409241133196904.jpg
首先是A3~A0为分频系数,因为我们是想让这个时钟频率变得更快,所以也就不需要取动这个选项了,因为默认的(POR)值就是1分频。
截图202409241133287518.jpg
接下来就是高四位A7~A4,可以看到如果为0101时,系统时钟是默认的fosc,但是如果设置为1111,则会变成150%的fosc。显然,这就是我们所需要的提高时钟频率参数。
综合下来,0xD5指令后面的这个参数,在0xf0的情况下可以将时钟频率拉到最高。

所以我们改动一下这个初始化函数中有关0xD5关键指令的后方数据。
截图202409241133394062.jpg
改造完成后,编译程序,烧录,打开手机相机高级模式。
截图202409241133502487.jpg
160帧无频闪测试
很好,这下录视频就可以感受到没有频闪条纹的OLED了。同时,因为实际显示帧率的上升,对OLED显存的更高刷新频率也并就并不是毫无提升的事情了。是实实在在会让人感觉到流畅的。

像这样同时提升实际显示帧率和刷写速度,“里应外合”才能得到更好的效果。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-9-24 12:06:43 | 显示全部楼层
刷新率怎么高啊,但是实际使用中MCU还要处理其它任务,应该会吧刷新率拉下来吧。

点评

应该是屏幕主控自己对像素点的刷新,MCU完全可以干其它事情。  详情 回复 发表于 2024-9-24 12:48
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-05-01 10:50:05
已绑定手机

6

主题

285

回帖

881

积分

荣誉版主

积分
881
发表于 2024-9-24 12:48:47 | 显示全部楼层
so*** 发表于 2024-9-24 12:06
刷新率怎么高啊,但是实际使用中MCU还要处理其它任务,应该会吧刷新率拉下来吧。 ...

应该是屏幕主控自己对像素点的刷新,MCU完全可以干其它事情。应该功耗也上去了...

15
(仅供参考,欢迎探讨)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-9-24 15:30:24 | 显示全部楼层
wnag*** 发表于 2024-9-24 13:14
屏幕所有像素能同时点亮吗?那还怎么显示内容?

屏幕所有像素点肯定是没法同时点亮的
这里只是调整oled本身的刷新频率,让他自己快到正常拍视频看不出来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-9-24 17:11:38 | 显示全部楼层
wnag*** 发表于 2024-9-24 13:14
屏幕所有像素能同时点亮吗?那还怎么显示内容?

和显示器的高刷一个道理,主打一个提高视觉体验。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-9-25 00:01:57 | 显示全部楼层
在高刷新率的情况下,是否会存在撕裂(tear effect)?

点评

会出现的,但是因为刷新显存帧率可以做到1000多帧,远远高于显示帧率,所以撕裂现象会非常轻微。 较为容易受撕裂影响的主要是写入显存速度和实际刷新速度近似的屏幕。比如60帧的彩屏  详情 回复 发表于 2024-9-25 00:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-9-25 00:16:43 | 显示全部楼层
哈哈*** 发表于 2024-9-25 00:01
在高刷新率的情况下,是否会存在撕裂(tear effect)?

会出现的,但是因为刷新显存帧率可以做到1000多帧,远远高于显示帧率,所以撕裂现象会非常轻微。
较为容易受撕裂影响的主要是写入显存速度和实际刷新速度近似的屏幕。比如60帧的彩屏
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-29 13:02:20
已绑定手机

0

主题

130

回帖

174

积分

注册会员

积分
174
发表于 2024-11-13 22:13:14 来自手机 | 显示全部楼层
王神又发好玩的了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 23:57 , Processed in 0.122912 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表