SSD1306 Datasheet V1.5 第61页接线图放大
SSD1306 的高版本手册不太好找,这里先甩俩文件日后备用。。
128×64 的单色 OLED 屏幕模块,淘宝上卖五块钱,搞过单片机的应该都把玩过。
淘宝上出售的 128×64 小屏,主控芯片有 SSD1306/SH1106/SSD1315 这些指令大体上兼容但是又有区别的型号,都支持 SPI/I2C/8080并口 之类的接口,可以通过短接0欧电阻来配置功能。
大一刚学 STM32 的时候,把玩过 SSD1306 SPI 的屏幕。当时打算拿状态机做个带灰度效果的 UI 界面动效玩玩,设置成水平寻址模式,拿 SPI+DMA 全屏刷新,一秒刷他个几百帧,再给每个像素调占空比,实现四阶灰度效果。然后发现灰度的效果很奇怪,画面撕裂,闪烁的厉害,压根没法看。后面改成了纯黑白UI,把动效也砍掉了。当时我还去翻过了英文文档,SSD1306 的屏幕刷新速率可以通过内部RC振荡器进行配置,最快大概是106帧左右,显存刷新速率取决于外部接口有多快。B站上还有一秒刷一千多帧的。
学过了信号与系统之后再回头看看,屏幕刷新速率就是采样速率,感觉可能是混叠了?汗。。。
今天刷B站,看到有人讨论 ST7789 的画面撕裂和完美刷屏方案,提到了一个用于同步画面的 TE 引脚,但是很少有厂家引出。SSD1306 似乎也有类似的问题。
SSD1306 的第 51 号引脚 FR,用作同步信号,可以避免帧撕裂,但是不知道为什么原因,这个引脚在所有的市售模组上都未被引出。

其他 29 个引脚都有电气连接,唯独 7脚 是悬空的,一看就很可疑。
可以看到,和 BLOCK DIAGRAM 对比,中景园的 SSD1306 30P FPC 模组缺少了三个引脚没有引出。
其中两个是外部时钟输入与内外部时钟切换 CL 和 CLS,另一个就是 FR。这三个引脚,只要任意引出其中一组,都可以实现画面的垂直同步,从而实现完美的灰度效果。然鹅全都没有引出,那就肯定是厂商的阴谋,让你去买专门的灰度屏,多多爆金币了。
互联网冲浪找到了一些难得的相关讨论,在这里放下链接记录下。
通过 FPC排线的连接细节放大,可以肯定厂商就是故意的,傻而逼之。
发现一个热衷于拿 Arduino 和 OLED 小屏搓游戏掌机的神秘小众论坛,他们对于这些东西应该有挺多研究,这个帖子 非常重要,提供了很多有用的信息。
在 18楼 有个自称搞机 50 年的老资历爆改成功,把漆包线飞上去了,牛而逼之。老资历的灰度显示效果展示

说不定之后啥时候闲着蛋疼,可以自己改一个玩。