ESP32-S3-LCD-1.28

资料

文档

程序

软件

数据手册


说明

产品简介

ESP32-S3-LCD-1.28(以下统称开发板) 是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其中板载了 1.28 英寸 LCD 屏、锂电池充电芯片、六轴传感器(三轴加速度计与三轴陀螺仪)等外设,采用的 ESP32-S3R2 是集成了低功耗 Wi-Fi 和 BLE5.0 的系统级芯片(SoC),此外还具有外部 16MB Flash 和 2MB PSRAM。Soc内部的硬件加密加速器、RNG、HMAC 和数字签名 (Digital Signature) 模块,可以满足物联网的安全要求。多种低功耗工作状态满足在物联网 (IoT)、移动设备、可穿戴电子设备、智能家居等应用场景的功耗需求。

产品特性

  • 搭载高性能 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth® 5 (LE),板载天线
  • 内置 512KB 的 SRAM 和 384KB ROM,叠封 2MB PSRAM 和外接 16MB Flash
  • 采用 Type-C 接口,紧跟时代潮流,无需纠结正反插
  • 板载 1.28 英寸 LCD 屏,圆形 IPS 面板,240×240 分辨率,65K 彩色
  • 板载 QMI8658 六轴惯性测量单元 (3 轴加速度、3 轴陀螺仪),可检测运动姿态
  • 板载 3.7V 锂电池充放电接口和引出大部分 GPIO 排座
  • 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式
  • 集成 USB 串口全速控制器,GPIO 可灵活配置各种外设功能

产品参数

LCD参数
显示芯片GC9A01A显示接口SPI
分辨率240(H)RGB x 240(V)显示尺寸Φ32.4mm
显示面板IPS像素大小0.135(H)x0.135(V)mm


IMU参数
传感器名称QMI8658
加速度计特性分辨率:16 位
量程 (可选):±2、±4、±8、±16g
陀螺仪特性分辨率:16 位
量程 (可选):±16、±32、±64、±128、±256、±512、 ±1024、±2048°/sec

注意事项

  1. 开发板使用时注意陶瓷天线区域,避免PCB板,金属,塑料件盖住陶瓷天线
  2. 板载高效充放电管理芯片 ETA6096 和 MX1.25 电池接口,目前设置充电电流为 1A,用户可自行更换 R15 电阻更改充电电流,接入 3.7V 单节锂电池,详情请查阅原理图,建议接入 500mAH 以下的 3.7V 单节锂电池
  3. 为防止电池过充过放, 当满电 4.2V 锂电池放电到 3.7V 时, 应停止放电.

硬件说明

接口说明


  • Type-C 接口 : 开发板使用CH343P芯片进行USB转UART,连接ESP32-S3的UART_TXD(GPIO43)和UART_RXD(GPIO44),用于固件烧录和日志打印。搭配自动下载电路,接上Type-C线缆后可直接下载固件。
  • 1.27mm 间距排座 : 开发板引出大部分 GPIO 用于外部连接,GPIO可配置成I2C、SPI等外设功能,VSYS可直接输入5V为开发板供电。
  • LCD 接口 : 开发板板载4线 SPI 通信的 1.28 寸屏幕,SPI速率可提升至80MHz,触摸使用 I2C 通信(开发板使用 GPIO2 控制背光亮度,另外引出两个 MOS 管控制开关触点在电池座子周边,分别连接GPIO4,GPIO5,可自行焊接小电流设备如震动电机等,详情请查阅原理图
  • I2C 接口 : ESP32-S3提供多路硬件I2C,目前使用GPIO6(SDA)和GPIO7(SCL)引脚做I2C总线。挂载板上QMI8658六轴惯性测量单元和LCD触摸控制芯片,详情请查阅原理图
  • MX1.25连接器 : 开发板的 GPIO1 用于测量电池电压引脚,电池电压使用 200K 和 100K 串联分压连接到 GPIO1, ESP32-S3 系列有 2 路 12Bit SAR ADC 测量单元,源码中转换成电压公式是 3.3 / (1<<12) * 3 * AD_Value
引脚连接
ESP32-S3R2LCDMX1.25QMI8658other
GPIO0BOOT0
GPIO1ADC
GPIO5TP_INT
GPIO6SDA
GPIO7SCL
GPIO8LCD_DC
GPIO9LCD_CS
GPIO10LCD_CLK
GPIO11LCD_MOSI
GPIO12LCD_RST
GPIO40LCD_BL
GPIO47INT1
GPIO48INT2

产品尺寸



环境设置

ESP32 系列开发板的软件框架成熟,可使用 C/C++(Arduino,ESP-IDF),MicroPython 等进行快速开发产品原型,以下简要介绍:

  • 乐鑫官方的 C/C++ 库方便快速安装,中国大陆用户遇到下载问题请查看FAQ解决
    • ESP32系列 的 Arduino 开发手册
    • ESP32系列 的 ESP-IDF 开发手册
  • MicroPython 是 Python 3 编程语言的精简高效实现,其中包括 Python 标准库的一小部分,并且经过优化,可在微控制器和受限环境中运行。
    • Micropython 相关应用开发参考开发文档
    • Micropython 的 Github 库可以进行重新编译作定制开发
  • 环境设置是在 Windows 10 系统下进行,用户可以选择使用 Arduino 或 Visual Studio Code(ESP-IDF) 作为 IDE 进行开发,Mac/Linux 操作系统用户请参考官方说明

Arduino

1. 下载安装Arduino IDE,注意默认配置及全英文路径
2. Arduino IDE 安装 ESP32 库,详细安装过程如下,相关资料请点击链接参考

  • 中国大陆安装:

1. 下载离线包esp32_packages2.0.12_arduinome.exe 后双击安装,若之前在线安装失败,请删除掉 %LOCALAPPDATA%/Arduino15/packages 下的 esp32 文件夹



2. 安装离线包后,打开 Arduino IDE,在 File->Preferences 下 Settings 界面的 Additional boards manager URLs 处填写下面链接后保存

https://arduino.me/packages/esp32.json



3. 重启 Arduino IDE,离线包安装完成

  • 其它地区安装:

1. 在 File->Preferences 下 Settings 界面的 Additional boards manager URLs 处填写下面链接后保存

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json



2. 在 Board Manager 中搜索 esp32 进行安装,下载安装完成后重启 Arduino IDE 生效
3. 打开 Arduino IDE,注意菜单栏中 Tools 选择 16MB Flash 和使能 QSPI PSRAM,如下图所示



库安装

  • TFT_SPI,lvgl 库安装后需要配置文件,建议直接使用Esp32-s3-lcd-1.28-lib中的 TFT_eSPI_Setups,TFT_eSPI,lvgl 文件夹复制到 C:\Users\xxxx\Documents\Arduino\libraries 目录下,xxxx 代表您电脑上用户名,注意甄别



折叠

MicroPython

1. 下载安装最新 Thonny IDE后,打开Thonny IDE -> Configure interpreter...,如下图所示



2. Type-C 接口接入USB线缆,查找设备管理器或对应COM口,下载或运行程序,具体请查看硬件连接章节
3. 本教程请忽略此步骤(直接跳到第四步),按照下图步骤所示选择 ESP32-S3 系列的在线 MPY 固件下载,下载前会清除开发板的 Flash 内容,整个下载过程持续1分钟左右,MPY固件可以在官网下载



4. 目前开发板使用定制的固件进行开发,打开flash_download_tool_3.9.5下载固件工具,固件在示例程序中,固件制作来自链接,固件合并成单个文件,注意下载地址是0x0位置

  • ESP32-S3-LCD-1.28连接电脑后,长按BOOT按键,单击RESET按键后松开BOOT按键,使其进入Download Mode
  • 选择芯片:ESP32-S3,下载模式:USB



  • 选择下载文件S3-Touch-LCD-1.28-MPY.bin(和ESP32-S3-Touch-LCD-1.28共用),下载地址是0x0位置,COM选择ESP32-S3-LCD-1.28的COM,点击START进行烧录,等待烧录完成



5. 烧录固件,按下RESET按键,将 mpy 目录下的示例程序导入开发板,如下图所示

  • 打开Thonny,选择ESP32,并选择对应COM口




  • 点击该按钮,可看到shell中输出语句,则说明开发板固件成功使用



  • 将示例程序中 mpy 文件夹上传至ESP32-S3-LCD-1.28中



参考MicroPython Documentationreleases note 进行编程

其它固件下载方式

  • 若使用flash_download_tool_3.9.5下载固件,请按照如下图所示操作,注意 ESP32-S3 应用程序固件地址是 0x10000,partition_tables.bin 地址是 0x8000 , bootloader.bin 地址是 0x0



示例程序

Arduino

注意:在使用Arduino例程前,请先检查Arduino IDE环境与下载设置是否正确配置,具体操作可查看Arduino环境配置

Arduino IDE示例

Arduino 示例程序可以使用 arduino-esp32 或 Arduino IDE 中的 File->examples中的示例程序(如:ESP32的GPIO、WIFI等通用示例使用),若需要使用到屏幕驱动,可参考屏幕驱动程序请查阅示例程序中esp32-s3-lcd-1.28-demo例程的屏幕驱动


esp32-s3-lcd-1.28-demo

esp32-s3-lcd-1.28-demo 示例,用于测试屏幕、六轴传感器、BAT、触摸屏的使用

  • 以下是该例程效果:
上电后,屏幕先间隔2秒显示白,红,绿,蓝四种颜色,检查屏幕有无漏光和黑点,若屏幕太快未看清,请按 RESET 按键重新复位开始

a.接着进入传感器测试环节,颜色显示完毕后,将会在屏幕上显示传感器数据,静止时,ACC_X和ACC_Y数值低于200,ACC_Z数值 在1000 左右,GYR_X ,GYR_Y ,GYR_Z 数值在0~10左右 属于正常情况,若数值混乱,则可能是六轴传感器损坏

b.此时接上3.7V锂电池,正常情况下,BAT(V)数值会降低

Arduino_LVGL

Arduino_LVGL 示例,用于显示 LVGL benchmark,music 等,LVGL 的具体开发请参考LVGL开发文档

  • LVGL库中用于显示刷新的回调函数,负责将LVGL的绘图缓冲区的内容刷新到TFT LCD上
void my_disp_flush( lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p )
参数:
     lv_disp_drv_t *disp_drv:LVGL: 提供的显示驱动结构体指针,包含了与显示相关的信息和函数指针。在这个函数中,用于向 LVGL 通知刷新完成
     const lv_area_t *area:LVGL  : 定义的区域结构体指针,表示需要刷新的区域。这个区域是相对于整个显示屏幕的一个矩形区域
     lv_color_t *color_p:LVGL    : 定义的颜色结构体指针,表示要在刷新区域内显示的颜色数据。在这个函数中,通过将这些颜色数据写入 TFT 缓冲区,完成绘制
  • 定时器的回调函数,通过调用 LVGL 函数 lv_tick_inc 来通知 LVGL 过去的时间,以便 LVGL 能够更新其内部的时间状态,处理与时间相关的任务,例如动画、定时器等。例子中,它每隔 EXAMPLE_LVGL_TICK_PERIOD_MS 毫秒就调用一次
void example_increase_lvgl_tick(void *arg)
  • 定时器的回调函数,其中计数器 count,每次调用就将计数器加一,在计数达到一定值时触发一个操作,这里是模拟在 30 次定时器触发后执行重启操作,具体的行为可以根据需要进行调整
void example_increase_reboot(void *arg)

Arduino_Chinese_Font

  • Arduino_Chinese_Font 示例,用于显示 LVGL 内置的 1000 个常用中文字体

Arduino_Chinese_7500_Char

  • Arduino_Chinese_7500_Char 示例,用于显示 LVGL 的 7500 个中文字体,字体文件较大,下载固件时间比较长

Micropython

注意:在使用Micropython例程前,请先检查ESP32-S3-LCD-1.28是否已经烧录mpy 固件,Thonny环境是否正确配置,具体操作可查看Micropython环境配置
  • mpy文件中包含以下示例,具体示例说明与使用可以查看链接