找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3755

积分

0

好友

501

主题
发表于 2026-5-19 21:18:36 | 查看: 105| 回复: 0

把玩微雪 ESP32-S3-RLCD-4.2 开发板:用 MicroPython 来探索硬件中,我已经验证了 LCD 的接口,能够完全控制这块低功耗、全反射的单色 LCD。不过 U8g2 对这款屏幕的驱动支持还不够完善,没能直接驱动起来,于是我决定自己写一个 U8g2 驱动,方便后续的小项目直接使用。

思路很简单:先让它跑起来,再一步步优化性能,最终得到一个相当不错的成果:

  • 第一次完成驱动编写,让基于 U8g2 的演示程序正常运行:仅支持全屏刷新,刷新率约 40fps。
  • 首次实现局部刷新能力:更新 128×32 区域时,刷新率超过 300fps。
  • 为了支持横屏显示,实现了旋转功能。由于 ST7305 控制器按行传输数据,128×32 区域旋转后需要更多次 SPI 传输,刷新率下降到约 280fps。
  • 将 SPI 时钟从 10MHz 提高到 24MHz,刷新率提升到 480fps。
  • 将一次更新中的多行数据预处理后拼接成连续数据,尽量做到一次传输完成,减少 SPI 事务次数,刷新率提升到约 500fps。
  • 增加一个 16 字节大小的 LUT,把像素布局调整中的大量运算改为查表操作,减少 CPU 运算时间,刷新率提升到约 550fps。
  • 优化掉一次 memset 调用,并合并 CS 帧,减少 CS 信号切换次数,刷新率提升到 700fps 以上。

在约 10 秒的视频中,计数器更新了 7300 多次。

到这个程度后,进一步优化的空间已经非常有限,先到这里为止。

我已经将 ST7305_U8g2.hST7305_U8g2.cpp 上传到 GitHub gist,源码可在项目仓库中找到。如果你也有类似的驱动开发心得,欢迎到云栈社区与大家交流分享。

(完)




上一篇:个人开发者自建Git服务:Gitea部署与数据安全实践
下一篇:没写一行代码,她靠UGC复制把2款AI App做到月入40万
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-6-10 09:06 , Processed in 0.636258 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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