背景

最近碰到一些 st7735s 屏幕的调试问题,记录一下解决办法。

屏幕显示白边问题

问题现象是刷屏之后,屏幕右边和下边存在白边,没有显示内容。原因其实是屏幕显示的地址范围设置不正确,需要通过 0x2A、0x2B 指令设置行列地址偏移。

数据手册中对这两个命令的解释,0x2A命令带两个字节大小的两个参数,x_start、x_end,用来设置屏幕x轴上的显示地址范围,发数据的时候先发高字节再发第字节。

0x2B 指令也是带两个参数 y_start 、y_end ,数据大小 2 字节,用来设置y轴上的显示起始地址和结束地址。

示例代码修改屏幕显示地址偏移和范围:x: 1~128,y: 2~161。

屏幕规格书里写的屏幕分辨率是 128*128,st7735s 的数据手册提到可以通过硬件配置 3 种屏幕分辨率

  • 128*160
  • 132*132
  • 132*162

从实际的调试来看,这块屏幕应该配置的是 132*162 分辨率,设置显示地址偏移和范围之后便能正常显示了。

设置屏幕显示旋转方向

有时候可能需要设置屏幕的显示方向,比如旋转 90°、180°、镜像显示等,可以通过 0x36 指令的 MX MY MV 三个参数来设置,具体参考 st7735s 的数据手册。

比如需要屏幕顺时针旋转 90° 显示,配置 0x36 指令的参数为 0x60。

RGB-BGR 颜色顺序问题

UI 的 RGB 颜色顺序有可能和驱动配置颜色顺序不一致,导致颜色显示不正常,可以通过 0x36 指令中的 RGB 参数设置颜色顺序。

休眠唤醒出现花屏问题

屏幕进入休眠再唤醒,出现花屏的现象。屏幕唤醒之后重新执行了初始化配置导致,规避方法是在屏幕初始化的时候不打开屏幕显示 0x29 指令,在刷屏的时候再开启屏幕显示。