屏幕初始化

BPI-Centi-S3 正面有一块1.9英寸TFT LCD彩屏,分辨率是170*320,驱动芯片为ST7789V3, 采用8bit 并行接口与ESP32S3芯片连接。

出厂固件中已集成ST7789 C模块 驱动,来自于:

russhughes/st7789s3_esp_lcd , The MIT License

感谢 russhughes 的开源,在他的GitHub README中可以查阅编译方法和所有API接口。

初始化,点亮屏幕

在本地文件夹中创建一个 main.py ,将下方代码拷贝进去,保存文件。

使用 ctrl + S 快捷键即可保存当前窗口中的文件。

""" BPI-Centi-S3 170x320 ST7789 display """

import st7789
from machine import freq


def config(rotation=0, options=0):

    return st7789.ST7789(
        170,
        320,
        15, 14, 13, 12, 11, 10, 9, 8,
        wr=6,
        rd=7,
        reset=3,
        dc=5,
        cs=4,
        backlight=2,
        power=2,
        rotation=rotation,
        options=options)


freq(240_000_000)  # Set esp32s3 cpu frequency to 240MHz
tft = config(rotation=1, options=0)
tft.init() # Initialize
tft.fill(st7789.RED) 
tft.show(True)
tft.deinit()  # Deinitialize the display or it will cause a crash on the next run

使用mpbridge同步文件到开发板。

同步完成后,BPI-Centi-S3 屏幕将全屏显示红色。

单独的配置文件

我们可以将初始化配置ST7789的代码单独置于一个python脚本文件中,然后在其他地方任意导入使用,包括在REPL中,这可以增强代码复用性。

新建一个单独的配置文件 tft_config.py ,将下方代码拷贝进去,保存文件。

""" BPI-Centi-S3 170x320 ST7789 display """

import st7789
from machine import freq


def config(rotation=0, options=0):

    return st7789.ST7789(
        170,
        320,
        15, 14, 13, 12, 11, 10, 9, 8,
        wr=6,
        rd=7,
        reset=3,
        dc=5,
        cs=4,
        backlight=2,
        power=2,
        rotation=rotation,
        options=options)

freq(240_000_000)  # Set esp32s3 cpu frequency to 240MHz

将 main.py 修改为如下代码:

""" BPI-Centi-S3 170x320 ST7789 display """

import st7789
import tft_config

tft = tft_config.config(rotation=1, options=0)
tft.init()
tft.fill(st7789.RED) 
tft.show(True)
tft.deinit()  # Deinitialize the display or it will cause a crash on the next run

使用mpbridge同步文件到开发板。

后续我们就可以像这样简单的导入然后初始化屏幕了。