Administrator
发布于 2026-07-20 / 20 阅读
0

ST7735S MicroPython 驱动:面向 ESP32-S3 的轻量 TFT 显示方案

摘要

ST7735S-Drives-Micropython 是一个面向 ESP32-S3 的单文件 TFT 屏幕驱动。它使用 MicroPython 的硬件 SPI 接口与 1.8 英寸 ST7735S 屏幕通信,提供清屏、区域填充、像素绘制、图像显示和旋转等基础能力,并针对受限内存环境准备了缓冲区降级策略。

项目背景

在 MicroPython 嵌入式项目中,显示驱动往往决定了界面开发的起点。一个可读、可修改、没有复杂依赖的驱动,既能缩短传感器仪表和状态屏的开发时间,也便于理解 SPI、RGB565 与显示控制器寄存器之间的关系。

这个项目将核心实现集中在 st7735s.py 中,适合直接复制到设备,也方便根据屏幕批次、引脚或方向进行定制。

核心功能

  • 使用硬件 SPI 与屏幕通信,默认速率最高 40MHz。
  • 支持 128×160 分辨率和 RGB565 颜色格式。
  • 提供硬件复位和完整初始化序列。
  • 支持设置显示窗口、清屏、填充矩形、绘制像素与显示图像。
  • 支持 0°、90°、180°、270° 四种显示方向。
  • 预分配绘图缓冲区,并在内存不足时缩减缓冲区。
  • 支持可选背光控制引脚。

技术架构与技术栈

驱动直接使用 MicroPython 的 machine.Pinmachine.SPI。命令和数据通过 DC 引脚区分,CS 控制单次传输边界,RST 完成硬件复位。绘制前先通过 CASET、RASET 和 RAMWR 寄存器设置目标区域,再发送 RGB565 像素数据。

项目没有引入外部框架,核心依赖仅为 MicroPython 自带的 machinetimegc 模块。对嵌入式环境而言,这种轻依赖方式易于移植与调试。

项目亮点

README 不只列出 API,还解释了接线、初始化寄存器、颜色格式、旋转参数、内存占用、性能建议和故障排查。对于想理解显示驱动工作方式的开发者,它比一个只提供调用示例的代码片段更有学习价值。

驱动也对内存不足进行了基础处理:优先申请全屏缓冲区,失败后回收内存并降级为较小缓冲区。区域绘制会根据像素数量选择复用缓冲区或临时申请空间。

使用与部署

先按 README 连接 DC、CS、RST、SCL、SDA、3.3V 和 GND;如果需要程序控制背光,再连接可选 BL 引脚。把 st7735s.py 上传到 ESP32-S3 文件系统后即可导入并实例化驱动。

初始化时可以按自己的接线传入 GPIO 编号。随后使用 clearfill_rectdraw_pointshow_imagerotate 等方法完成基础绘制。图像数据需要预先转换为连续的 RGB565 字节流。

不同厂商的 ST7735S 模组可能在颜色顺序、显示偏移、反色配置或最高稳定 SPI 频率上存在差异。首次使用建议从较低 SPI 频率开始测试,并根据实际屏幕调整初始化参数。README 中的 DMA 描述也应以所用 MicroPython 固件和端口实现为准。

适用场景

  • ESP32-S3 传感器数据显示屏。
  • 小型状态面板、仪表和设备菜单。
  • MicroPython SPI 与 LCD 控制器学习。
  • 需要单文件、低依赖显示驱动的快速原型。

项目地址

GitHub:https://github.com/hemo528/ST7735S-Drives-Micropython