ESP32-S3-LCD-7B 使用教程

产品介绍

产品简介

这是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载 7 英寸宽电容触摸LCD屏,可流畅运行 LVGL 等 GUI 界面程序;结合多种外设接口(如:CAN、I2C和RS485等接口),快速开发 ESP32-S3 的 HMI 等应用。多种功能与接口满足物联网 (IoT)、移动设备、智能家居等应用场景对功耗的需求。

产品特性

  • 搭载高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线
  • 内置 512KB SRAM 和 384KB ROM,叠封 16MB Flash 和 8MB PSRAM
  • 板载 7 英寸LCD屏,1024 × 600 分辨率,65K 彩色
  • 支持 I2C 接口控制电容触摸(可选),5 点触控,支持中断
  • 板载 CAN、RS485、I2C 接口和 Micro SD 卡座等,集成全速 USB
  • 外置 LED 指示灯,方便查看电源跟电池充电状态
  • 可以调节背光亮度,读取当前电池电压
  • 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式

资源简介


1、 ESP32-S3-WROOM-1-N16R8 模组
   WiFi 蓝牙 SoC 模块,240MHz 运行频率
   封装 8MB PSRAM 和 16MB Flash

2、屏幕显示接线端子

3、屏幕触摸接线端子

4、Micro SD 卡座

5、USB Type-C 接口

6、USB TO UART Type-C 接口

7、UART 接线端子
6 跟 7 是同一个 UART,由 15 的开关进行选择

8、I2C 接线端子

9、传感器接线端子

10、CAN 接线端子
11、RS485 接线端子
   屏幕背光升压芯片

12、5V 输出

13、3.7V 单节锂电池 PH2.0 接口

14、CAN 终端电阻选择接口

15、RS485 终端电阻选择接口

16、UART 选择开关
   UART1 或者 UART2

17、BOOT 按键
   按住上电进行程序烧录

18、RESET 按键
   按下复位控制器

19、DONE
   锂电池充电完成指示灯

20、CHARGE
   锂电池充电指示灯

21、POWER
   电源指示灯

接口说明

  • LCD 接口:连接液晶排线的接口
ESP32-S3LCD简介
GPIO0G3绿色数据第三位
GPIO1R3红色数据第三位
GPIO2R4红色数据第四位
GPIO3VSYNC竖向同步信号
GPIO5DE数据使能信号
GPIO7PCLK时钟信号
GPIO10B7蓝色第七位
GPIO14B3蓝色第三位
GPIO17B6蓝色第六位
GPIO18B5蓝色第五位
GPIO21G7绿色第七位
GPIO38B4蓝色第四位
GPIO39G2绿色第二位
GPIO40R7红色第七位
GPIO41R6红色第六位
GPIO42R5红色第五位
GPIO45G4绿色第四位
GPIO46HSYNC横向同步信号
GPIO47G6绿色第六位
GPIO48G5绿色第五位
IO EXTENSIONLCD-
EXIO2DISP背光使能引脚
EXIO6LCD_VDD_ENVCOM电压使能脚


  • 触摸屏接口:用于连接触摸排线的接口
ESP32-S3Touch简介
GPIO4TP_IRQ触摸中断引脚
GPIO8TP_SDA触摸数据引脚
GPIO9TP_SCL触摸时钟引脚
IO EXTENSIONTouch-
EXIO1TP_RST触摸复位引脚


  • USB 接口:用于供电跟烧录使用
ESP32-S3USB简介
GPIO19USB_DN数据线D-
GPIO20USB_DP数据线D+
IO EXTENSIONUSB-
EXIO5USB_SEL拉低设置成USB模式,否则为CAN模式


  • TF卡接口:用于连接TF卡的接口,引脚连接见下表。
ESP32-S3TF简介
GPIO11MOSITF卡输入引脚
GPIO12SCKTF卡时钟引脚
GPIO13MISOTF卡输出引脚
IO EXTENSIONTF-
EXIO4SD_CSTF卡使能引脚,低电平有效


  • RS485 接口:开发板板载 RS485 接口,可直连设备通信,电路收发模式自动切换
ESP32-S3RS485简介
GPIO16RS485_RXD数据输入
GPIO15RS485_TXD数据输出


  • CAN 接口:实现 CAN 总线网络的收发控制、数据分析、采集和监控
ESP32-S3CAN简介
GPIO20CANTX数据输出
GPIO19CANRX数据输入
IO EXTENSIONCAN-
EXIO5CAN_SEL拉高设置成CAN模式,否则为USB模式
  • I2C 接口:ESP32-S3 提供多路硬件 I2C,目前使用 GPIO8(SDA),GPIO9(SCL) 引脚做 I2C 总线
                     通过 I2C 接口连接 IO 扩展芯片和触摸屏等外设。
ESP32-S3I2C简介
GPIO8SDAI2C数据引脚
GPIO9SCLI2C时钟引脚
  • PH2.0 电池接口:开发板使用高效充放电管理芯片 CS8501 ,可将单节锂电池升压到 5V ,
    目前充电电流为 580mA,用户可更换 R45 电阻更改充电电流,详情请查阅ESP32-S3-Touch-LCD-7B 原理图

产品尺寸

无触控版本


带触控版本


产品参数

基础参数
处理器高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
Wifi/蓝牙支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线
Flash16MB Flash
PSRAM8MB PSRAM
供电范围TypeC 5V
屏幕参数
分辨率1024 x 600
显示接口RGB
显示面板IPS
可视角度170°
屏幕亮度235 cd/m²
触摸类型电容
触摸面板钢化玻璃
外设接口
通信接口CAN、RS485、I2C、USB
其它
功耗5V 350mA
操作温度0℃ ~ 65℃
产品尺寸 (L×W)无触控版:164×97mm
带触控版:192.96×110.76mm

使用说明

目前提供 Arduino IDEESP-IDF 和 PlatformIO三种开发工具和框架,提供了灵活的开发选择,你可以根据项目需求和个人习惯选择适合的开发工具。

开发工具介绍


Arduino IDE

Arduino IDE是一款便捷灵活、方便上手的开源电子原型平台。不需要太多基础,简单学习后,你也可以快速地进行开发。同时,Arduino 拥有庞大的全球用户社区,提供了海量的开源代码、项目示例和教程,还有丰富的库资源,封装了复杂功能,让开发者能快速实现各种功能。


ESP-IDF

ESP-IDF,全称Espressif IDE,是乐鑫科技为 ESP系列芯片推出的专业开发框架。它使用C语言开发,包括编译器、调试器、烧录工具等,可在命令行下或使用集成开发环境(如 Visual Studio Code 配合 Espressif IDF 插件)进行开发,插件提供代码导航、项目管理、调试等功能。


PlatformIO

PlatformIO 是一款跨平台、跨架构、多框架的专业工具,适用于嵌入式系统工程师和为嵌入式产品编写应用程序的软件开发人员。

这三种开发方式各有其优势,开发者可以根据自身需求和技能水平进行选择。Arduino 跟 PlatformIO(编译速度更快) 适合初学者和非专业人士,因其简单易学、上手快。而对于有专业背景或对性能要求较高的开发者,ESP-IDF 是更好的选择,它提供了更高级的开发工具和更强的控制能力,适用于复杂项目的开发。

器件准备

  • ESP32-S3-Touch-LCD-7B x1
  • SD卡 x1 (非必需,示例需要)
  • USB线 type A公口 转 Type C公口 x1
  • USB转RS485双向转换器 x1(非必需,示例需要)
  • USB 转 CAN 适配器分析仪 x1(非必需,示例需要)


注意事项

  • 开发板板载自动下载电路,UART 丝印处 Type C 端口用于程序下载和日志打印,下载程序后,按 RESET 按键运行程序
  • 使用时注意 PCB 天线区域,避免其它金属,塑料件贴合 PCB 天线
  • TF 卡可使用 SPI/MMC 通信,注意 SD_CS 引脚需要由 IO EXTENSION 的 EXIO4 驱动
  • 开发板使用 PH2.0 座子引出 ADC ,CAN,I2C,RS485 ,5V外设引脚,使用 PH2.0 转 2.54mm 杜邦公头配件连接传感器件
  • CAN 和 RS485 外设默认使用拨码开关连接 120 欧姆电阻,可选 NC 取消终端电阻连接
  • 7inch 屏幕占用绝大多数 GPIO,开发板使用芯片扩展 IO,用于复位,打开/关闭背光、调节亮度和读取电池电压等
  • 开发板使用USB下载程序,如果出现无法识别到端口,请进入boot模式(摁住boot按键后,再连接电脑,然后松开boot按键),下载程序后,按 RESET 按键运行程序
  • 目前在 ESP-IDF v5.3 下使用单核跑 LVGL benchamark 示例的平均帧率上限为 17, 对应接口 PCLK 频率为 30 MHz,编译前需要通过menuconfig 对ESP32 和 LVGL进行配置:
CONFIG_FREERTOS_HZ=1000
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHFREQ_120M=y [需要与 PSRAM 保持一致]
CONFIG_SPIRAM_MODE_OCT=y
CONFIG_IDF_EXPERIMENTAL_FEATURES=y and CONFIG_SPIRAM_SPEED_120M=y [需要与 FLASH 保持一致]
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
CONFIG_SPIRAM_RODATA=y
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y
CONFIG_COMPILER_OPTIMIZATION_PERF=y
#以下 LVGL 配置项对帧率提升有帮助 (LVGL v8.3):
#define LV_MEM_CUSTOM 1 or CONFIG_LV_MEM_CUSTOM=y
#define LV_MEMCPY_MEMSET_STD 1 or CONFIG_LV_MEMCPY_MEMSET_STD=y
#define LV_ATTRIBUTE_FAST_MEM IRAM_ATTR or CONFIG_LV_ATTRIBUTE_FAST_MEM=y
  • 详细 LCD 及 LVGL 性能说明,请参考文档
  • PH2.0锂电池座子只支持单节 3.7V 锂电池,勿使用多组电池包同时接入充放电,建议单节容量在 2000mAH 以下
  • ESP32-S3-Touch-LCD-7B占用了如下的从机地址,请勿使用相同地址的I2C设备:
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
10: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
20: -  -  -  -  24 -  -  - -  -  -  -  -  -  -  -
30: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
40: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
50: -  -  -  -  -  -  -  -  -  -  -  -  -  -  5d -
60: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
70: -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
在操作前,建议先浏览目录,快速了解文档结构。为顺利操作,请仔细阅读FAQ,提前了解可能的问题。文档中所有资料均提供超链接,方便下载。

Arduino开发

本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。

环境搭建

下载和安装 Arduino IDE

  • 点击访问Arduino官网,选择对应的系统和系统位数下载。Arduino IDE的版本需要≥1.8,安装的路径不能出现中文,否则编译时会出现错误。

  • 运行安装程序,全部默认安装即可。
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问Arduino-esp32环境搭建参考

安装 Arduino-ESP32

  • ESP32-S3-Touch-LCD-7B 所需开发板安装说明
板名称板安装要求注意
esp32-XIP-3.1.1“离线”安装必须根据安装教程进行“esp32-XIP-3.1.1”开发板安装

安装库

  • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装若库安装要求离线安装,则必须使用提供的库文件
    对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
  • 库安装教程,详见:Arduino 库管理教程
  • ESP32-S3-Touch-LCD-7B 库文件存放于示例程序中,点击此处跳转:ESP32-S3-Touch-LCD-7B示例程序
  • ESP32-S3-Touch-LCD-7 库文件安装说明
库名称说明版本库安装要求
lvglLVGL图形化库v8.4.0“离线”安装
lv_conf.hLVGL配置文件——“离线”安装

运行第一个 Arduino 程序


如果你刚入门学习ESP32和Arduino,还不知道如何创建、编译、烧录和运行Arduino ESP32程序,那么请展开看看,希望可以帮助到你!

新建工程

  • 运行Arduino IDE,选择 File -> New Sketch

  • 输入代码:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello, World!");
  delay(2000);
}
  • 保存代码工程,选择 File -> Save As...;在弹出的菜单选择保存工程路径,并输入工程名,如 Hello_World,点击保存

编译和烧录程序

  • 选择对应的开发板,以ESP32S3主板为例:

①. 点击选择下拉框选项“Select Other Board and Port”;
②. 搜索需要的开发板型号“esp32s3 dev module”并选择;
③. 选择COM口
④. 保存选择。

  • 若ESP32S3主板只有USB口,须打开(Enable)USB CDC,如下图所示:


  • 编译并上传程序:

①. 编译程序;②. 编译并下载程序;③. 下载成功。

  • 打开串口监视窗口,程序每隔2秒会打印“Hello World!”,运行情况如下所示:


示例程序

  • ESP32-S3-Touch-LCD-7B 示例程序
示例程序基础例程说明依赖库
01_GPIO测试GPIO-
02_UART测试UART-
03_I2C测试I2C-
04_CAN测试CAN-
05_RS485测试RS485-
06_LCD测试显示屏-
07_SD测试Micro SD-
08_TOUCH测试触摸屏-
09_DISPLAY_BMP将SD卡中的bmp图片显示到屏幕上-
11_WIFI_STA连接AP,并显示IP-
12_WIFI_AP启动AP,显示连接设备的MAC地址-
13_LVGL_TRANSPLANTLVGL移植LVGL
14_LVGL_BTN画一个按钮,控制GPIO工作LVGL
15_LVGL_SLIDER画一个滑动条,控制背光跟GPIO输出,并同时显示电池电压LVGL
  • 例程08、09、13、14、15只能适用于自带触摸屏的板子。
  • 选择型号 Waveshare ESP32S3 XIP 与端口


折叠

01_GPIO

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup()函数是初始化GPIO 6,设置成输出模式。

  • loop() :

loop()函数是程序的主要循环部分,其核心功能是来回拉高或拉低GPIO引脚,控制LED亮灭。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 屏幕无显示,连接的LED灯会以1Hz的频率亮灭

02_UART

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • setup() :

setup 函数主要用于初始化串口通信
使用 UART.begin 函数初始化串口 Serial ,设置波特率、数据格式以及指定接收和发送引脚,然后通过循环检查确保串口初始化成功。

  • loop()

loop 函数是程序主循环部分,主要功能是实现简单的 UART 通信数据回传
通过检查串口是否有数据可用,若有数据则读取一个字节并立即发送回去,实现将接收到的 UART 数据原封不动地回传的功能。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息,该设备会将收到的消息返回给串口调试助手



03_I2C

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • setup() :

setup()函数是初始化I2C跟IO 扩展。

  • DEV_I2C_Init() :

DEV_I2C_Init()函数是初始化I2C设备

  • IO_EXTENSION_Init() :

IO_EXTENSION_Init()函数是初始化 IO 扩展。

  • loop() :

loop()函数是程序的主要循环部分,其核心功能是控制IO 扩展芯片来回拉高或拉低DISP引脚,控制屏幕背光亮灭。

  • IO_EXTENSION_Output(uint8_t pin, uint8_t value) :

IO_EXTENSION_Output(uint8_t pin, uint8_t value)函数是控制 IO 扩展芯片输出指定电平。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 屏幕背光会以1Hz的频率亮灭
折叠

04_CAN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 开发板连接USB-CAN-A,如图


【代码分析】


  • setup() :

setup()函数是初始化I2C、IO 扩展跟CAN接口,在初始化CAN接口前,需要控制IO_EXTENSION_IO_5为高电平,,否则CAN接口将无法工作。

  • can_init(twai_timing_config_t t_config, twai_filter_config_t f_config, twai_general_config_t g_config) :
  • can_init函数主要主要负责处理 TWAI(类似于 CAN 总线的接口)的初始化
  • loop() :

loop()函数是检查是否有警报发生。通过调用 can_read_alerts 读取触发的警报,并获取 TWAI 的状态信息到 alerts_triggered 中。然后根据触发的不同警报进行相应的处理,例如如果触发了错误被动警报、总线错误警报、传输失败警报或传输成功警报,分别打印相应的消息并输出一些状态信息,如总线错误计数、待发送消息数量、传输错误计数器和传输失败计数等。

    • 如果是读取到了正确数据,它会读取信息,随后原封不动的将数据发送回去。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 屏幕不会显示
  • 配置USB-CAN-A_TOOL后启动,给ESP32-S3-Touch-LCD-7B发送的CAN消息,可以看到ESP32-S3-Touch-LCD-7B返回一样的信息。

 


05_RS485

【硬件连接】



【代码分析】


  • setup() :

setup 函数主要用于初始化串口通信
使用 RS485.begin 函数初始化串口 Serial1 ,设置波特率、数据格式以及指定接收和发送引脚,然后通过循环检查确保串口初始化成功。

  • loop()

loop 函数是程序主循环部分,主要功能是实现简单的 485 通信数据回传
通过检查串口是否有数据可用,若有数据则读取一个字节并立即发送回去,实现将接收到的 485 数据原封不动地回传的功能。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息(必须要带有换行,否则将不会返回数据),该设备会将收到的消息返回给串口调试助手



06_LCD

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :
  • setup 函数主要进行了一系列的初始化操作和对 显示屏 的测试
    • 首先,它初始化I2C、IO 扩展和 RGB LCD,再打开背光。然后创建一个缓存区来存放图像,初始化 GUI 图像数据,设置好当前图像格式跟旋转角度,最后开始控制屏幕显示响应的界面。
    • 测试时,可以自行设置旋转角度(在第13行),实现不同角度的显示。
  • waveshare_esp32_s3_rgb_lcd_init() :
  • waveshare_esp32_s3_rgb_lcd_init函数主要RGB LCD进行初始化。
  • wavesahre_rgb_lcd_bl_on() :
  • wavesahre_rgb_lcd_bl_on函数主要打开LCD背光。
    • 更多函数介绍,示例中也有一一说明,可以直接在示例中查看。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • ESP32-S3-Touch-LCD-7B会先显示RGB565的颜色框,然后显示图案跟文本,最后显示图片。


07_SD

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将Micro SD卡接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 SD 卡的测试,并在屏幕上显示相关信息。

  • sd_mmc_init() :

sd_mmc_init 函数主要对 SD 卡进行初始化并挂载。

  • read_sd_capacity(uint64_t *total_capacity, uint64_t *available_capacity) :

read_sd_capacity 函数主要读取 SD 卡的内存信息。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 运行效果:ESP32-S3-Touch-LCD-7B会显示 SD 卡信息,如果没有则显示"SD Card Fail!"


08_TOUCH

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 触摸屏 的测试,并在屏幕上显示。

  • touch_gt911_init() :

touch_gt911_init函数主要对 触摸屏 进行初始化。

  • touch_gt911_read_point(uint8_t max_touch_cnt) :

touch_gt911_read_point函数主要读取当前坐标点,最大识别到5点触摸。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 触屏屏幕时会在屏幕上显示点,同时触摸五个,将显示五个不同颜色的点。


09_DISPLAY_BMP

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将目录下的图片保存到Micro SD卡中,再接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 图像文件 的读取,并通过点击屏幕上的箭头进行切换显示。

  • list_files(const char *base_path) :

list_files函数主要进行 BMP 图像文件名称的读取,并将名称保存到BmpPath中。

  • GUI_ReadBmp(UWORD Xstart, UWORD Ystart, const char *path) :

GUI_ReadBmp 函数主要读取SD卡中 BMP 图像数据,并将数据写入到缓冲区中,位置由Xstart跟Ystart决定。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 如果挂载成功会,会显示箭头,点击箭头,就会显示图片了,再次点击会进行左右切换。


10_WIFI_SCAN

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和扫描附近 WIFI ,并通过屏幕显示扫描到的wifi名(目前还不能显示中文,因为字库没有那么全面)。


  • wifi_scan() :

wifi_scan 函数主要扫描附近的wifi,并将数据写入缓存区。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 开始扫描,扫描结束后会显示当前wifi名


11_WIFI_STA

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和连接指定的 WIFI (2.4GHz),并通过屏幕显示 WIFI 的IP地址。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 连接设置好的WIFI,连接成功后,在屏幕上打印IP地址


12_WIFI_AP

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和创建一个名为ESP32-S3-Touch-LCD-7B的热点,并通过屏幕显示 当前连接设备的MAC地址。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 启动热点,并显示连接设备的MAC地址


13_LVGL_TRANSPLANT

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和运行LVGL Demo。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 会运行lv_demo_widgets,可以进行交互操作。

【其他说明】


  • 在使用时出现屏幕漂移,请参考ESP官方FAQ
  • 在使用自己的ui程序时,出现内存不足,可以点击Tools选择更大的分区表

  • lvgl使用的版本是8.4,可以通过以下文档进行对LVGL的API查询跟使用

14_LVGL_BTN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作并创建一个按钮,点击按钮可以控制LED亮灭。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 显示一个按钮,点击按钮可以改变GPIO的状态,从而控制LED亮灭


15_LVGL_SLIDER

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作并创建一个滑动条跟文本(显示电池电压)。

【代码烧录】


  • 选择型号 Waveshare ESP32S3 XIP 与端口
  • 设置开发板参数


  • 烧录代码

【运行效果】


  • 显示一个滑动条跟当前电池电压,控制滑动条,可以同时调整 LED 跟 屏幕 的亮度。

ESP-IDF开发

本章介绍 ESP-IDF 环境搭建,包括 Visual Studio、Espressif IDF插件的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。 

环境搭建

下载和安装 Visual Studio

  • 打开VScode官网的下载页面,选择对应系统和系统位数进行下载

  • 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项

    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问ESP-IDF环境搭建参考

安装Espressif IDF插件

  • 国内部分区域安装,一般推荐“在线安装”, 若因网络因素无法在线安装,则使用“离线安装”。
  • 安装Espressif IDF插件教程,详见:安装Espressif IDF插件教程

运行第一个 ESP-IDF 程序


如果你刚入门学习ESP32和ESP-IDF,还不知道如何创建、编译、烧录和运行ESP-IDF程序,那么请展开看看,希望可以帮助到你!

新建项目




创建例程

  • 使用快捷键 F1 ,输入esp-idf:show examples projects


  • 选择你当前的IDF版本


  • 以Hello world例程为例

①选择对应例程
②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
③点击创建例程

  • 选择放置例程的路径,要求无例程同名文件夹


修改COM口

  • 此处显示使用对应的COM口,点击可以修改对应COM口
  • 请根据设备对应COM口进行选择(可通过设备管理器查看)
  • 若出现下载失败的情况请点击复位按键1秒以上或进入下载模式,等待 PC 端重新识别到设备后再次下载


修改驱动对象

  • 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3


  • 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可



其余状态栏简介

①.ESP-IDF开发环境版本管理器,当我们的工程需要区分开发环境版本时,可以通过安装不同版本的ESP-IDF来分别管理,当工程使用特定版本时,可以通过使用它来切换
②.设备烧录COM口,选择以将编译好的程序烧录进芯片上
③.set-target 芯片型号选择,选择对应的芯片型号,如:ESP32-P4-Nano需要选择 esp32p4 为目标芯片
④.menuconfig,点击修改sdkconfig配置文件内容,项目配置详细资料
⑤.fullclean 清理按钮,当工程编译报错或其他操作污染编译内容时,通过点击清理全部编译内容
⑥. Build 构建工程,当一个工程满足构建时,通过此按钮进行编译
⑦.当前下载方式,默认为UART
⑧.flash烧录按钮,当一个工程Build构建通过时,选择对应开发板COM口,点击此按钮可以将编译好的固件烧录至芯片
⑨.monitor开启烧录口监控,当一个工程Build-->flash后,可通过点击此按钮查看烧录、调试口输出的l0g,以便观察应用程序是否正常工作
⑩.Debug调试
⑪.Build Flash Monitor 一键按钮,用于连续执行Build-->Flash-->Monitor,常被称作小火苗


编译、烧录、串口监视

  • 点击我们之前介绍的 编译,烧录,打开串口监视器按键


  • 编译可能需要较长时间才能完成,尤其是在第一次编译时


  • 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿
  • 若是新工程首次烧录程序,将需要选择下载方式,选择 UART


  • 后续也可在 下载方式 处进行修改(点击即可弹出选项)


  • 因为板载自动下载电路,无需手动操作即可自动下载
  • 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启



使用IDF 示例程序

下文以使用“ESP32-S3-LCD-1.47-Demo”为例介绍工程的两种打开方式及使用的一般步骤、ESP-IDF工程项目详解,若使用其他工程,操作步骤类推。

软件内部打开

  • 打开 VScode 软件,选择文件夹打开示例


  • 选择提供的 ESP-IDF 下的示例,点击选择文件(位于 示例程序/Demo/ESP-IDF 路径下)



软件外部打开

  • 正确选择工程目录,打开工程,否则会影响后续程序编译烧录


  • 连接设备后,选择好COM口和型号,点击下方编译并烧录即可实现程序控制


ESP-IDF工程项目详解

  • 组件(Component):ESP-IDF中的组件是构建应用的基本模块,每个组件通常是相对独立的代码库或库,能实现特定的功能或服务,可以被应用程序或是其他组件重复使用,类似于Python开发中的库的定义。
    • 组件的引用:Python开发环境中引入库只需要“import 库名或路径”即可,而ESP-IDF基于C语言基础,引入库是通过CMakeLists.txt进行配置和定义的。
    • CmakeLists.txt的作用:ESP-IDF编译时编译工具CMake会首先通过读取工程目录的顶层CMakeLists.txt的内容来读取构建规则,识别需要编译的内容。当在CMakeLists.txt中引入了需要的组件、程序后,编译工具CMake会根据索引导入每个所需要编译的内容。编译过程如:


示例程序

  • ESP32-S3-Touch-LCD-7B 示例程序
示例程序基础例程说明
01_GPIO测试GPIO
02_UART测试UART
03_I2C测试I2C
04_CAN测试CAN
05_RS485测试RS485
06_LCD测试显示屏
07_SD测试Micro SD
08_TOUCH测试触摸屏
09_DISPLAY_BMP将SD卡中的bmp图片显示到屏幕上
11_WIFI_STA连接AP,并显示IP
12_WIFI_AP启动AP,显示连接设备的MAC地址
13_LVGL_TRANSPLANTLVGL移植
14_LVGL_BTN画一个按钮,控制GPIO工作
15_LVGL_SLIDER画一个滑动条,控制背光跟GPIO输出,并同时显示电池电压
16_LVGL_UI综合示例
  • 例程08、09、13、14、15、16只能适用于自带触摸屏的板子。

01_GPIO

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • app_main() :
    • 首先是初始化GPIO 6,设置成输出模式。
    • 最后循环部分,其核心功能是来回拉高或拉低GPIO引脚,控制LED亮灭。

【运行效果】


  • 烧录成功后,屏幕无显示,连接的LED灯会以1Hz的频率亮灭

02_UART

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • app_main() :
    • 首先主要用于初始化串口通信,并分配一个临时缓冲区用于接收数据
    • 最后循环实现简单的 UART 通信数据回传

通过检查串口是否有数据可用,若有数据则读取并立即发送回去,实现将接收到的 UART 数据原封不动地回传的功能。

【运行效果】


  • 烧录成功后,打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息,该设备会将收到的消息返回给串口调试助手


03_I2C

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • app_main() :
    • 首先是初始化I2C跟IO 扩展。
  • DEV_I2C_Init() :

DEV_I2C_Init()函数是初始化I2C设备

  • IO_EXTENSION_Init() :

IO_EXTENSION_Init()函数是初始化 IO 扩展。

    • 最后循环控制IO 扩展芯片来回拉高或拉低DISP引脚,控制屏幕背光亮灭。
  • IO_EXTENSION_Output(uint8_t pin, uint8_t value) :

IO_EXTENSION_Output(uint8_t pin, uint8_t value)函数是控制 IO 扩展芯片输出指定电平。

【运行效果】


  • 烧录成功后,屏幕背光会以1Hz的频率亮灭

04_CAN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 开发板连接USB-CAN-A,如图


【代码分析】


  • app_main() :
    • 首先初始化I2C、IO 扩展跟CAN接口,在初始化CAN接口前,需要控制IO_EXTENSION_IO_5为高电平,,否则CAN接口将无法工作。
  • can_init(twai_timing_config_t t_config, twai_filter_config_t f_config, twai_general_config_t g_config) :
  • can_init函数主要主要负责处理 TWAI(类似于 CAN 总线的接口)的初始化
    • 最后循环检查是否有警报发生。通过调用 can_read_alerts 读取触发的警报,并获取 TWAI 的状态信息到 alerts_triggered 中。然后根据触发的不同警报进行相应的处理,例如如果触发了错误被动警报、总线错误警报、传输失败警报或传输成功警报,分别打印相应的消息并输出一些状态信息,如总线错误计数、待发送消息数量、传输错误计数器和传输失败计数等。
    • 如果是读取到了正确数据,它会读取信息,随后原封不动的将数据发送回去。

【运行效果】


  • 烧录成功后,屏幕不会显示
  • 配置USB-CAN-A_TOOL后启动,给ESP32-S3-Touch-LCD-7B发送的CAN消息,可以看到ESP32-S3-Touch-LCD-7B返回一样的信息。


05_RS485

【硬件连接】



【代码分析】


  • app_main() :
    • 首先初始化串口通信

使用 DEV_UART_Init 函数初始化串口,设置波特率,接收和发送引脚,并分配一个临时缓冲区用于接收数据。

    • 最后循环实现简单的 RS485 通信数据回传

通过检查串口是否有数据可用,若有数据则读取并立即发送回去,实现将接收到的 RS485 数据原封不动地回传的功能。

【运行效果】


  • 烧录成功后,打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息,该设备会将收到的消息返回给串口调试助手


06_LCD

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行一系列的初始化操作和对 显示屏 的测试
    • 首先,它初始化I2C、IO 扩展和 RGB LCD,再打开背光。然后创建一个缓存区来存放图像,初始化 GUI 图像数据,设置好当前图像格式跟旋转角度,最后开始控制屏幕显示响应的界面。
    • 测试时,可以自行设置旋转角度(在第18行),实现不同角度的显示。
  • waveshare_esp32_s3_rgb_lcd_init() :
  • waveshare_esp32_s3_rgb_lcd_init函数主要RGB LCD进行初始化。
  • wavesahre_rgb_lcd_bl_on() :
  • wavesahre_rgb_lcd_bl_on函数主要打开LCD背光。
    • 更多函数介绍,示例中也有一一说明,可以直接在示例中查看。

【运行效果】


  • 烧录成功后,ESP32-S3-Touch-LCD-7B会先显示RGB565的颜色框,然后显示图案跟文本,最后显示图片。


07_SD

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将Micro SD卡接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和对 SD 卡的测试,并在屏幕上显示相关信息。
  • sd_mmc_init() :

sd_mmc_init 函数主要对 SD 卡进行初始化并挂载。

  • read_sd_capacity(uint64_t *total_capacity, uint64_t *available_capacity) :

read_sd_capacity 函数主要读取 SD 卡的内存信息。

【运行效果】


  • 烧录成功后,ESP32-S3-Touch-LCD-7B会显示 SD 卡信息,如果没有则显示"SD Card Fail!"


08_TOUCH

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和对 触摸屏 的测试,并在屏幕上显示。
  • touch_gt911_init() :

touch_gt911_init函数主要对 触摸屏 进行初始化。

  • touch_gt911_read_point(uint8_t max_touch_cnt) :

touch_gt911_read_point函数主要读取当前坐标点,最大识别到5点触摸。

【运行效果】


  • 烧录成功后,触屏屏幕时会在屏幕上显示点,同时触摸五个,将显示五个不同颜色的点。


09_DISPLAY_BMP

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将目录下的图片保存到Micro SD卡中,再接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和对 图像文件 的读取,并通过点击屏幕上的箭头进行切换显示。
  • list_files(const char *base_path) :

list_files函数主要进行 BMP 图像文件名称的读取,并将名称保存到BmpPath中。

  • GUI_ReadBmp(UWORD Xstart, UWORD Ystart, const char *path) :

GUI_ReadBmp 函数主要读取SD卡中 BMP 图像数据,并将数据写入到缓冲区中,位置由Xstart跟Ystart决定。

【运行效果】


  • 烧录成功后,如果挂载成功会,会显示箭头,点击箭头,就会显示图片了,再次点击会进行左右切换。


10_WIFI_SCAN

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和扫描附近 WIFI ,并通过屏幕显示扫描到的wifi名(目前还不能显示中文,因为字库没有那么全面)。


  • wifi_scan() :

wifi_scan 函数主要扫描附近的wifi,并将数据写入缓存区。

【运行效果】


  • 烧录成功后,开始扫描,扫描结束后会显示当前wifi名


11_WIFI_STA

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和连接指定的 WIFI (2.4GHz),并通过屏幕显示 WIFI 的IP地址。

【运行效果】


  • 烧录成功后,连接设置好的WIFI,连接成功后,在屏幕上打印IP地址


12_WIFI_AP

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和创建一个名为 ESP32-S3-Touch-LCD-7B 的热点,并通过屏幕显示 当前连接设备的MAC地址。

【运行效果】


  • 烧录成功后,启动热点,并显示连接设备的MAC地址


13_LVGL_TRANSPLANT

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作和运行LVGL Demo。

【运行效果】


  • 烧录成功后,会运行lv_demo_widgets,可以进行交互操作。

【其他说明】


  • 在使用时出现屏幕漂移,请参考ESP官方FAQ
  • 在使用自己的ui程序时,出现内存不足,可以点击Tools选择更大的分区表

  • lvgl使用的版本是8.4,可以通过以下文档进行对LVGL的API查询跟使用
折叠

14_LVGL_BTN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作并创建一个按钮,点击按钮可以控制LED亮灭。

【运行效果】


  • 烧录成功后,显示一个按钮,点击按钮可以改变GPIO的状态,从而控制LED亮灭

折叠

15_LVGL_SLIDER

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作并创建一个滑动条跟文本(显示电池电压)。

【运行效果】


  • 烧录成功后,显示一个滑动条跟当前电池电压,控制滑动条,可以同时调整 LED 跟 屏幕 的亮度。


16_LVGL_UI

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • app_main() :
    • 主要进行了一系列的初始化操作并创建一个自定义GUI界面,GUI由SquareLine Studio设计,由于只是用来绘制图形,故不提供SquareLine Studio工程。

【运行效果】


  • 烧录成功后,可以按照如下步骤进行操作:
    • 第一次运行需要创建登录名跟密码
    • 创建完成后点击按钮返回到登录界面,输入用户名跟密码进行登录
    • 登录后可以看到四个框,对应不同功能
    • WIFI:可以测试Scan、STA和AP,并且可以显示相关WIFI信息
    • RS485:可以测试RS485功能,可以设置波特率,进行发送跟接收数据
    • CAN:可以测试CAN功能,可以设置速率,进行发送跟接收数据
    • PWM:可以测试背光,电池电压读取跟SD卡

PlatformIO开发

本章介绍 platformio 环境搭建,包括程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。

环境搭建

下载和安装 Visual Studio

  • 打开VScode官网的下载页面,选择对应系统和系统位数进行下载

  • 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项

    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode

安装PlatformIO IDE插件

  • 打开VSCode,点击左侧的扩展,在扩展搜索并安装PlatformIO IDE。


运行第一个 PlatformIO 程序


如果你刚入门学习ESP32和PlatformIO,还不知道如何创建、编译、烧录和运行PlatformIO ESP32程序,那么请展开看看,希望可以帮助到你!

新建工程

  • 打开VS Code,如果已经安装好 PlatformIO IDE插件,请点击PlatformIO图标,选择 Create New Project -> New Projject -> 设置好工程名跟开发板型号,如 Hello_World


  • 第一次运行需要等待PlatformIO下载相关工具包,时间会比较长,请耐心等待

  • 输入代码:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello, World!");
  delay(2000);
}
  • 保存代码文件,连接开发板到电脑上,选择 端口 -> 编译与烧录;在显示第五项的时候,表示烧录成功,再点击第6项,则可以观察程序的运行情况

编译和烧录程序

  • 按照下面步骤进行编译跟烧录:

①. 点击打开main.cpp文件;
②. 输入上面给出的代码,并保存;
③. 选择COM口
④. 编译与烧录程序
⑤. 出现SUCCESS则表示烧录成功。
⑥. 点击串口助手,周期性输出Hello, World!,则成功。



示例程序

  • ESP32-S3-Touch-LCD-7B 示例程序
示例程序基础例程说明依赖库
01_GPIO测试GPIO-
02_UART测试UART-
03_I2C测试I2C-
04_CAN测试CAN-
05_RS485测试RS485-
06_LCD测试显示屏-
07_SD测试Micro SD-
08_TOUCH测试触摸屏-
09_DISPLAY_BMP将SD卡中的bmp图片显示到屏幕上-
11_WIFI_STA连接AP,并显示IP-
12_WIFI_AP启动AP,显示连接设备的MAC地址-
13_LVGL_TRANSPLANTLVGL移植LVGL
14_LVGL_BTN画一个按钮,控制GPIO工作LVGL
15_LVGL_SLIDER画一个滑动条,控制背光跟GPIO输出,并同时显示电池电压LVGL
  • 例程08、09、13、14、15只能适用于自带触摸屏的板子。

01_GPIO

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup()函数是初始化GPIO 6,设置成输出模式。

  • loop() :

loop()函数是程序的主要循环部分,其核心功能是来回拉高或拉低GPIO引脚,控制LED亮灭。

【运行效果】


  • 烧录成功后,屏幕无显示,连接的LED灯会以1Hz的频率亮灭

02_UART

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • setup() :

setup 函数主要用于初始化串口通信
使用 UART.begin 函数初始化串口 Serial ,设置波特率、数据格式以及指定接收和发送引脚,然后通过循环检查确保串口初始化成功。

  • loop()

loop 函数是程序主循环部分,主要功能是实现简单的 UART 通信数据回传
通过检查串口是否有数据可用,若有数据则读取一个字节并立即发送回去,实现将接收到的 UART 数据原封不动地回传的功能。

【运行效果】


  • 烧录成功后,打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息,该设备会将收到的消息返回给串口调试助手



03_I2C

【硬件连接】


  • 使用USB线连接板子的UART口,接入电脑

【代码分析】


  • setup() :

setup()函数是初始化I2C跟IO 扩展。

  • DEV_I2C_Init() :

DEV_I2C_Init()函数是初始化I2C设备

  • IO_EXTENSION_Init() :

IO_EXTENSION_Init()函数是初始化 IO 扩展。

  • loop() :

loop()函数是程序的主要循环部分,其核心功能是控制IO 扩展芯片来回拉高或拉低DISP引脚,控制屏幕背光亮灭。

  • IO_EXTENSION_Output(uint8_t pin, uint8_t value) :

IO_EXTENSION_Output(uint8_t pin, uint8_t value)函数是控制 IO 扩展芯片输出指定电平。

【运行效果】


  • 烧录成功后,屏幕背光会以1Hz的频率亮灭

04_CAN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 开发板连接USB-CAN-A,如图


【代码分析】


  • setup() :

setup()函数是初始化I2C、IO 扩展跟CAN接口,在初始化CAN接口前,需要控制IO_EXTENSION_IO_5为高电平,,否则CAN接口将无法工作。

  • can_init(twai_timing_config_t t_config, twai_filter_config_t f_config, twai_general_config_t g_config) :
  • can_init函数主要主要负责处理 TWAI(类似于 CAN 总线的接口)的初始化
  • loop() :

loop()函数是检查是否有警报发生。通过调用 can_read_alerts 读取触发的警报,并获取 TWAI 的状态信息到 alerts_triggered 中。然后根据触发的不同警报进行相应的处理,例如如果触发了错误被动警报、总线错误警报、传输失败警报或传输成功警报,分别打印相应的消息并输出一些状态信息,如总线错误计数、待发送消息数量、传输错误计数器和传输失败计数等。

    • 如果是读取到了正确数据,它会读取信息,随后原封不动的将数据发送回去。

【运行效果】


  • 烧录成功后,屏幕不会显示
  • 配置USB-CAN-A_TOOL后启动,给ESP32-S3-Touch-LCD-7B发送的CAN消息,可以看到ESP32-S3-Touch-LCD-7B返回一样的信息。

 

折叠

05_RS485

【硬件连接】



【代码分析】


  • setup() :

setup 函数主要用于初始化串口通信
使用 RS485.begin 函数初始化串口 Serial1 ,设置波特率、数据格式以及指定接收和发送引脚,然后通过循环检查确保串口初始化成功。

  • loop()

loop 函数是程序主循环部分,主要功能是实现简单的 485 通信数据回传
通过检查串口是否有数据可用,若有数据则读取一个字节并立即发送回去,实现将接收到的 485 数据原封不动地回传的功能。

【运行效果】


  • 烧录成功后,打开串口调试助手向 ESP32-S3-Touch-LCD-7B 发送消息(必须要带有换行,否则将不会返回数据),该设备会将收到的消息返回给串口调试助手



06_LCD

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :
  • setup 函数主要进行了一系列的初始化操作和对 显示屏 的测试
    • 首先,它初始化I2C、IO 扩展和 RGB LCD,再打开背光。然后创建一个缓存区来存放图像,初始化 GUI 图像数据,设置好当前图像格式跟旋转角度,最后开始控制屏幕显示响应的界面。
    • 测试时,可以自行设置旋转角度(在第13行),实现不同角度的显示。
  • waveshare_esp32_s3_rgb_lcd_init() :
  • waveshare_esp32_s3_rgb_lcd_init函数主要RGB LCD进行初始化。
  • wavesahre_rgb_lcd_bl_on() :
  • wavesahre_rgb_lcd_bl_on函数主要打开LCD背光。
    • 更多函数介绍,示例中也有一一说明,可以直接在示例中查看。

【运行效果】


  • 烧录成功后,ESP32-S3-Touch-LCD-7B会先显示RGB565的颜色框,然后显示图案跟文本,最后显示图片。


07_SD

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将Micro SD卡接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 SD 卡的测试,并在屏幕上显示相关信息。

  • sd_mmc_init() :

sd_mmc_init 函数主要对 SD 卡进行初始化并挂载。

  • read_sd_capacity(uint64_t *total_capacity, uint64_t *available_capacity) :

read_sd_capacity 函数主要读取 SD 卡的内存信息。

【运行效果】


  • 烧录成功后,运行效果:ESP32-S3-Touch-LCD-7B会显示 SD 卡信息,如果没有则显示"SD Card Fail!"


08_TOUCH

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 触摸屏 的测试,并在屏幕上显示。

  • touch_gt911_init() :

touch_gt911_init函数主要对 触摸屏 进行初始化。

  • touch_gt911_read_point(uint8_t max_touch_cnt) :

touch_gt911_read_point函数主要读取当前坐标点,最大识别到5点触摸。

【运行效果】


  • 烧录成功后,触屏屏幕时会在屏幕上显示点,同时触摸五个,将显示五个不同颜色的点。


09_DISPLAY_BMP

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将目录下的图片保存到Micro SD卡中,再接入ESP32-S3-Touch-LCD-7B中

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和对 图像文件 的读取,并通过点击屏幕上的箭头进行切换显示。

  • list_files(const char *base_path) :

list_files函数主要进行 BMP 图像文件名称的读取,并将名称保存到BmpPath中。

  • GUI_ReadBmp(UWORD Xstart, UWORD Ystart, const char *path) :

GUI_ReadBmp 函数主要读取SD卡中 BMP 图像数据,并将数据写入到缓冲区中,位置由Xstart跟Ystart决定。

【运行效果】


  • 烧录成功后,如果挂载成功会,会显示箭头,点击箭头,就会显示图片了,再次点击会进行左右切换。


10_WIFI_SCAN

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和扫描附近 WIFI ,并通过屏幕显示扫描到的wifi名(目前还不能显示中文,因为字库没有那么全面)。


  • wifi_scan() :

wifi_scan 函数主要扫描附近的wifi,并将数据写入缓存区。

【运行效果】


  • 烧录成功后,开始扫描,扫描结束后会显示当前wifi名


11_WIFI_STA

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和连接指定的 WIFI (2.4GHz),并通过屏幕显示 WIFI 的IP地址。

【运行效果】


  • 烧录成功后,连接设置好的WIFI,连接成功后,在屏幕上打印IP地址


12_WIFI_AP

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和创建一个名为ESP32-S3-Touch-LCD-7B的热点,并通过屏幕显示 当前连接设备的MAC地址。

【运行效果】


  • 烧录成功后,启动热点,并显示连接设备的MAC地址


13_LVGL_TRANSPLANT

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作和运行LVGL Demo。

【运行效果】


  • 烧录成功后,会运行lv_demo_widgets,可以进行交互操作。

【其他说明】


  • 在使用时出现屏幕漂移,请参考ESP官方FAQ
  • 在使用自己的ui程序时,出现内存不足,可以点击Tools选择更大的分区表

  • lvgl使用的版本是8.4,可以通过以下文档进行对LVGL的API查询跟使用

14_LVGL_BTN

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作并创建一个按钮,点击按钮可以控制LED亮灭。

【运行效果】


  • 烧录成功后,显示一个按钮,点击按钮可以改变GPIO的状态,从而控制LED亮灭


15_LVGL_SLIDER

【硬件连接】


  • 使用USB线把板子接入电脑
  • 连接LED模块到GPIO上


【代码分析】


  • setup() :

setup 函数主要进行了一系列的初始化操作并创建一个滑动条跟文本(显示电池电压)。

【运行效果】


  • 烧录成功后,显示一个滑动条跟当前电池电压,控制滑动条,可以同时调整 LED 跟 屏幕 的亮度。

资料

原理图

示例程序

数据手册

ESP32-S3

其他器件

软件工具

Arduino

VScode

调试工具

其他资料链接

FAQ

问题:ESP32-S3-Touch-LCD-7B 烧录RGB屏幕显示的Arduino程序后无反应?

若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(16MB) 和使能 PSRAM(8MB OPI))


问题:为什么库都是安装好的,烧录lvgl程序报错缺少lv_cong.h?

安装库的路径出现中文导致检索不到库文件


问题:为什么用Arduino IDE进行编译示例时,出现fatal error:esp_ memory_ utils.h:No such file or directory

请安装我们提供的Arduino esp32,可以解决此问题


问题:CAN通信可以使用调试工具发送连续帧吗?

可以的,还可以自定义连续帧的频率,当过高的频率使得电脑卡顿时,可能会导致总线错误


问题:ESP-IDF烧录失败怎么办?

  1. 可将开发板设置为下载模式解决。先完全断电,长按 Boot 按键并重新上电后松开,进入下载模式,重新烧录程序,复位后运行。
  2. 请尝试按下状态栏内fullclean 清理按钮并重新编译烧录,此功能为当工程编译报错或其他操作污染编译内容时,通过点击清理全部编译内容


问题:找不到AppData文件夹怎么处理?

部分AppData文件夹是默认隐藏的,可以设置为显示

  • 英文系统:资源管理器->View->勾选“Hidden items”
  • 中文系统:文件资源管理器->查看->显示->勾选“隐藏的项目”


问题:怎么查看com口?

按下Windows + R键打开“运行”对话框,输入devmgmt.msc并按回车键打开设备管理器 展开“Ports(COM&LPT)”部分,这里会列出所有的COM端口及其当前状态。


问题:程序首次编译超级慢怎么办?

首次编译很慢属于正常情况,耐心等待即可


问题:程序烧录成功但是LCD无现象怎么解决?

若开发板有复位键则按下复位键;若没有复位键,请重新上电


问题:在使用 MAC 设备时,程序烧录失败?

安装MAC 驱动程序后重新烧录。


问题:如何使用SquareLine Studio设计界面


问题:我该怎么移植提供的lib库?或者怎么自己开发LCD屏幕?如何驱动?

本产品所使用的LCD屏幕显示芯片为ST7262,触摸芯片为GT911,我们建议直接参阅Arduino 或 ESP-IDF的示例例程


问题:重连WIFI出现漂移?

点此查看解决办法:LCD FAQ


问题:不带触摸的板子,如何使用LVGL?

在主函数中,注释掉下面红框所示即可。 


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841


[教程导航]