ESP32-S3-Touch-LCD-7V2

来自Waveshare Wiki
跳转至: 导航搜索
ESP32-S3-Touch-LCD-7
{{{name2}}}
{{{name3}}}
功能简介
特性 无特性,不解释
主控 ESP32-S3
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 Type C USB

产品介绍

产品简介

ESP32-S3-Touch-LCD-7 是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载 7 英寸电容触摸LCD屏,可流畅运行 LVGL 等 GUI 界面程序;结合多种外设接口(如:CAN、I2C、RS485和Sensor等接口),快速开发 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,叠封 8MB Flash 和 8MB PSRAM
  • 板载 7 英寸电容触摸屏,800 × 480 分辨率,65K 彩色
  • 支持 I2C 接口控制电容触摸,5 点触控,支持中断
  • 板载 CAN、RS485、I2C 接口和 Micro SD 卡座等,集成全速 USB 串口
  • 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式

资源简介

ESP32-S3-Touch-LCD-7-introduction-01.png

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

2、7 英寸屏幕接线端子

3、屏幕触摸接线端子

4、Micro SD 卡座

5、USB Type-C 接口

6、USB TO UART Type-C 接口

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

8、传感器接线端子

9、CAN 接线端子

10、I2C 接线端子

11、RS485 接线端子

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

13、CAN 终端电阻选择接口

14、RS485 终端电阻选择接口

15、UART 选择开关
   UART1 或者 UART2

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

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

18、I2C 电平选择
   3.3V或者5V

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

20、CHG
   锂电池充电指示灯

21、PWR
   电源指示灯

接口说明

ESP32-S3-Touch-LCD-7-details-5.jpg

  • LCD 接口:连接液晶排线的接口
ESP32-S3 LCD
GPIO0 G3
GPIO1 R3
GPIO2 R4
GPIO3 VSYNC
GPIO4 TP_IRQ
GPIO5 DE
GPIO7 PCLK
GPIO8 TP_SDA
GPIO9 TP_SCL
GPIO10 B7
GPIO14 B3
GPIO17 B6
GPIO18 B5
GPIO21 G7
GPIO38 B4
GPIO39 G2
GPIO40 R7
GPIO41 R6
GPIO42 R5
GPIO45 G4
GPIO46 HSYNC
GPIO47 G6
GPIO48 G5
CH422G LCD
EXIO1 TP_RST
EXIO2 DISP
EXIO3 LCD_RST


  • USB 接口:GPIO19(DP) GPIO20(DN) 默认作为 ESP32-S3 的 USB 引脚 ,接口可以使用 UVC 等
                      协议摄像头,UVC驱动请查阅USB 主机 UVC 驱动程序
ESP32-S3 USB
GPIO19 USB_DN
GPIO20 USB_DP
CH422G USB
EXIO5 USB_SEL(LOW)


  • SD卡接口:用于连接SD卡的接口
ESP32-S3 SD
GPIO11 MOSI
GPIO12 SCK
GPIO13 MISO
CH422G TF
EXIO4 SD_CS


  • UART 接口:使用 CH343P 芯片用于 USB 转 UART 连接 ESP32-S3 的 UART_TXD(GPIO43),
                        UART_RXD(GPIO44) ,用于固件烧录和日志打印
ESP32-S3 UART
GPIO43 UART_TXD
GPIO44 UART_RXD


  • RS485 接口:开发板板载 RS485 接口电路,可直接接入 RS485 设备进行通信,
                        RS485电路收发模式自动切换
ESP32-S3 RS485
GPIO15 RS485_RXD
GPIO16 RS485_TXD


  • CAN 接口:CAN 接口引脚和 USB 接口引脚复用,使用 FSUSB42UMX 芯片切换,
                       默认使用 USB 接口(FSUSB42UMX的USB_SEL引脚为LOW时)
ESP32-S3 CAN
GPIO19 CANRX
GPIO20 CANTX


  • Sensor 接口:此接口连接 GPIO6 作 ADC 使用,可以接入 Sensor套件等器件
ESP32-S3 Sensor
GPIO6 AD


  • PH2.0 电池接口:开发板使用高效充放电管理芯片 CS8501 ,可将单节锂电池升压到 5V ,
    目前充电电流为 580mA,用户可更换 R45 电阻更改充电电流,详情请查阅ESP32-S3-Touch-LCD-7 原理图

硬件连接

ESP32-S3-Touch-LCD-7-details-7.jpg

产品尺寸

ESP32-S3-Touch-LCD-7-details-size.jpg


使用说明

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

开发工具介绍

Arduino-IDE-logo.jpg

Arduino IDE

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

ESP-IDF-logo.jpg

ESP-IDF

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


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

器件准备

  • ESP32-S3-Touch-LCD-7 x1
  • SD卡 x1
  • USB线 type A公口 转 Type C公口 x1
  • USB转RS485双向转换器 x1
  • USB 转 CAN 适配器分析仪 x1

ESP32-S3-Touch-LCD-7-usenotes-01.png

注意事项

  • 使用时注意 PCB 天线区域,避免其它金属,塑料件贴合 PCB 天线
  • SD 卡使用 SPI 通信,注意 SD_CS 引脚需要由 CH422G 的 EXIO4 驱动
  • CAN 和 RS485 外设默认使用跳线帽(短接帽)连接 120 欧姆电阻,可选 NC 取消终端电阻连接
  • 7inch 屏幕占用绝大多数 GPIO,开发板使用 CH422G 芯片扩展 IO,用于复位,关闭打开背光等
  • 开发板使用 PH2.0 座子引出 ADC ,CAN,I2C,RS485 外设引脚,使用 PH2.0 转 2.54mm 杜邦公头配件连接传感器件
  • 开发板板载自动下载电路,UART1 丝印处 Type C 端口用于程序下载和日志打印,下载程序后,按 RESET 按键运行程序
  • UART2是PH2.0 座子引出串口,跟UART1的串口相同,可以通过板子上的开关进行选择,如果使用UART2下载程序,需要手动下载
  • 开发板使用USB下载程序,如果出现无法识别到端口,请进入boot模式(摁住boot按键后,再连接电脑,然后松开boot按键),下载程序后,按 RESET 按键运行程序


在操作前,建议先浏览目录,快速了解文档结构。为顺利操作,请仔细阅读FAQ,提前了解可能的问题。文档中所有资料均提供超链接,方便下载。

Arduino开发

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

环境搭建

下载和安装 Arduino IDE

  • 点击访问Arduino官网,选择对应的系统和系统位数下载。Arduino IDE的版本需要≥1.8,安装的路径不能出现中文,否则编译时会出现错误。
    ESP32-S3-AMOLED-1.91-Ar-software-01.png
  • 运行安装程序,全部默认安装即可。
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问Arduino-esp32环境搭建参考

安装 Arduino-ESP32

  • ESP32相关主板在Arduino IDE使用,须先安装“esp32 by Espressif Systems”库。
  • 国内部分区域安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装”。
  • 安装 Arduino-ESP32教程,详见:Arduino 板管理教程
  • ESP32-S3-Touch-LCD-7 开发板离线包,点击此处下载:esp32_package_3.0.7_arduino离线包
  • ESP32-S3-Touch-LCD-7 开发板安装说明
板名称 板安装要求 版本号要求
ESP32-S3-Touch-LCD-7 “离线”安装/“在线”安装 3.0.0 以上

安装库

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

运行第一个 Arduino 程序

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

新建工程

  • 运行Arduino IDE,选择 File -> New Sketch
    ESP32-S3-AMOLED-1.91-Ar-study-01.png
  • 输入代码:
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,点击保存

ESP32-S3-AMOLED-1.91-Ar-study-02.png

编译和烧录程序

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

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

  • 部分开发板在指定版本号支持直接选择型号,以“waveshare esp32-s3-lcd-1.69”为例

ESP32-S3-AMOLED-1.91-Ar-study-07.png

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

ESP32-S3-AMOLED-1.91-Ar-study-04.png

  • 编译并上传程序:

①. 编译程序;②. 编译并下载程序;③. 下载成功。
ESP32-S3-AMOLED-1.91-Ar-study-05.png

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

ESP32-S3-AMOLED-1.91-Ar-study-06.png

示例程序

  • ESP32-S3-Touch-LCD-7 示例程序
示例程序 基础例程说明 依赖库
01_I2C_Test 测试I2C座子 -
02_RS485_Test 测试RS485座子 -
03_SD_Test 测试SD卡座 -
04_Sensor_AD 测试Sensor AD 座子 -
05_UART_Test 测试UART 接口 ESP32_IO_Expander,ESP32_Display_Panel
06_TWAItransmit 测试CAN卡座 -
07_TWAIreceive 测试CAN卡座 -
08_DrawColorBar 测试RGB屏幕 ESP32_Display_Panel
09_lvgl_Porting 测试RGB触摸屏幕 LVGL,ESP32_Display_Panel
  • esp32版本号为3.0.6以上时,ESP32-S3-Touch-LCD-7 支持直接选择型号,直接选择型号后,部分参数默认不用修改
    • 以ESP32-S3-LCD-1.69为例

ESP32-S3-LCD-1.69-demo-02.png

Arduino工程参数配置

  • 需要使用屏幕的示例程序需要配置如下

①. Flash Size 设置为 8MB(64Mb)
②. PSRAM 使能,部分版本设置为 OPI PSRAM
ESP32-S3-Touch-LCD-7-demo-02.png

  • 教程使用UART1接口烧录程序,若使用USB接口烧录程序,则需另外使能USB CDC On Boot

ESP32-S3-Touch-LCD-7-demo-03.png

01_I2C_Test

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-01.png

【代码分析】


  • loop()

loop()函数是程序的主要循环部分,其核心功能是扫描 I2C 总线上的设备。
首先定义了用于存储错误代码、设备地址和记录找到设备数量的变量。
然后通过一个循环从地址 0x01 0x7f 遍历可能的 I2C 设备地址。对于每个地址,先使用 Wire.beginTransmission(address) 开始向特定地址的设备发起传输,再使用 Wire.endTransmission() 结束传输并获取错误代码。
如果错误代码为 0 ,表示在该地址上找到了一个 I2C 设备,打印设备地址并增加设备数量的计数。如果错误代码不是 2 (表示设备未响应),则打印错误代码和对应的地址。
最后,如果没有找到任何 I2C 设备,打印相应的消息,并使用 delay(5000) 使程序暂停 5 秒后再次进行扫描。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 串口监视器打印I2C总线上的设备地址

ESP32-S3-Touch-LCD-7-demo-13.png

02_RS485_Test

【硬件连接】


ESP32-S3-Touch-LCD-7-demo-05.png

【代码分析】


  • setup()

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

  • loop()

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

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


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

ESP32-S3-Touch-LCD-7-demo-04.png

03_SD_Test

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将SD卡插入板子

ESP32-S3-Touch-LCD-7-demo-08.png

【代码分析】


  • setup()
  • setup 函数主要进行了一系列的初始化操作和对 SD 卡的测试
    • 首先,它初始化串口通信,设置波特率为 115200。然后创建一个 ESP_IOExpander_CH422G 对象来管理扩展的 IO 引脚,初始化并设置多个引脚为输出模式,控制诸如触摸屏复位(TP_RST)、LCD 背光(LCD_BL)、LCD 复位(LCD_RST)、SD 卡片选(SD_CS)和 USB 选择(USB_SEL)等引脚的状态。
    • 接着,使用扩展的 GPIO 引脚来处理 SD 卡,初始化 SPI 通信并尝试挂载 SD 卡。如果挂载失败,会输出错误信息并返回;如果成功挂载,会检测 SD 卡的类型并输出,还会输出 SD 卡的大小信息。
    • 之后,进行一系列文件系统操作的测试,包括列出目录内容、创建目录、删除目录、写入文件、追加内容到文件、读取文件、删除文件、重命名文件以及测试文件输入输出等操作,并输出 SD 卡的总空间和已使用空间大小。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • ESP32-S3-Touch-LCD-7 会识别SD卡的类型和大小,再对进行文件的增删改查

ESP32-S3-Touch-LCD-7-demo-09.png

04_Sensor_AD

【硬件连接】


  • 使用USB线把板子接入电脑
  • 可以接入 Sensor套件等器件测试AD值,以DHT11 Sensor为例

ESP32-S3-Touch-LCD-7-demo-06.png

【代码分析】


  • setup()

setup 函数首先初始化串口通信,然后初始化 PCF85063A 实时时钟模块,设置当前时间和闹钟时间并启用闹钟,同时将闹钟中断引脚设置为上拉输入模式并附加中断处理函数。

  • loop()

loop 函数不断读取当前时间并打印,当闹钟触发时(通过中断检测),重置闹钟标志并可选择重新启用闹钟,同时打印闹钟响起的消息,最后延迟 1 秒钟以不断循环检测时间和闹钟状态。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精确型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 运行效果: 串口调试助手观察AD引脚读取的数据,ADC analog value为读取的ADC模拟值,ADC millivolts value为ADC转化的电压值

ESP32-S3-Touch-LCD-7-demo-07.png

  • 将AD引脚与GND引脚短接,读取的值为0
  • 将AD引脚与3V3引脚短接,ADC模拟值4095,ADC转化的电压值接近3.3v

05_UART_Test

【硬件连接】


  • 使用USB线把板子接入电脑
  • USB to Type C线接入UART1接口

ESP32-S3-Touch-LCD-7-demo-01.png

【代码分析】


  • waveshare_io_test()

首先,它打印出 “Initialize IO expander” 表示开始初始化 IO 扩展器。接着创建一个 ESP_IOExpander_CH422G 实例来代表 IO 扩展器,初始化并开始其操作。然后将 OC 引脚设置为推挽输出模式,将 IO0 - IO7 引脚设置为输入模式。同时设置输出引脚 DO0 和 DO1 的初始状态为高电平。
在一个无限循环中,交替设置 DO0 和 DO1 的状态。每次设置后,通过读取输入引脚 DI0 和 DI1 的状态来判断是否满足特定条件,如果满足条件(即 expander->multiDigitalRead(DI0_mask | DI1_mask) 的值与预期相符)则增加变量 num 的值。当 num 达到 2 时退出循环,否则将 num 重置为 3 并再次循环尝试。整个过程旨在测试 IO 扩展器的输入输出功能以及它们之间的交互。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


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

ESP32-S3-Touch-LCD-7-demo-04.png

06_TWAItransmit

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-10.png

【代码分析】


  • waveshare_twai_transmit()
  • waveshare_twai_transmit()函数主要主要负责处理 TWAI(类似于 CAN 总线的接口)的传输和警报处理
    • 首先,它检查是否有警报发生。通过调用 twai_read_alerts 读取触发的警报,并获取 TWAI 的状态信息到 twai_status_info_t 结构体中。然后根据触发的不同警报进行相应的处理,例如如果触发了错误被动警报、总线错误警报、传输失败警报或传输成功警报,分别打印相应的消息并输出一些状态信息,如总线错误计数、待发送消息数量、传输错误计数器和传输失败计数等。
    • 接着,它获取当前时间(以毫秒为单位),并检查是否到了发送消息的时间。如果当前时间与上一次发送消息的时间之差大于等于设定的传输时间间隔 TRANSMIT_RATE_MS ,则更新上一次发送时间为当前时间,并调用 send_message 函数发送一条消息。 send_message 函数配置并排队一个包含特定标识符、数据长度和数据内容的消息进行传输,如果排队成功则打印成功消息,否则打印失败消息,并在发送后清空消息数据数组。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 串口打印CAN消息发送成功,配置USB-CAN-A_TOOL后启动可看到 ESP32-S3-Touch-LCD-7 发送的CAN消息。

ESP32-S3-Touch-LCD-7-demo-14.png

  • 再观察USB-CAN-A_TOOL,即可看到ESP32-S3-Touch-LCD-7发送的CAN消息

ESP32-S3-Touch-LCD-7-demo-16.png

07_TWAIreceive

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-10.png

【代码分析】


  • waveshare_twai_receive()
    • 首先读取触发的警报并获取状态信息,根据不同警报情况进行相应处理,如打印错误被动、总线错误、接收队列已满等警报信息及相关计数。
    • 当接收数据警报触发时,循环接收消息并调用handle_rx_message函数处理,该函数判断消息格式并打印消息标识符和数据内容(非远程传输请求时),实现了对 TWAI 总线上接收消息的有效处理和警报响应。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • ESP32-S3-Touch-LCD-7 等待USB-CAN-A_TOOL发送消息,如果接收成功,会将其打印到串口上。
  • Automatically Send为自动发送,可自行尝试设置发送

ESP32-Arduino-CN-2.png ESP32-Arduino-23.png ESP32-S3-Touch-LCD-7-demo-15.png

08_DrawColorBar

【硬件连接】


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

【代码分析】


  • waveshare_lcd_init()
    • 首先,打印 “Initialize IO expander” 表示开始初始化 IO 扩展器。创建一个 ESP_IOExpander_CH422G 实例,初始化并开始其操作。将 IO0 - IO7 引脚设置为输出模式,并将触摸屏复位引脚(TP_RST)和 LCD 复位引脚(LCD_RST)设置为高电平,同时关闭 LCD 背光(LCD_BL),等待 100 毫秒。
    • 接着,打印 “Create RGB LCD bus”,创建一个 RGB 面板总线对象 ESP_PanelBus_RGB ,配置其引脚、宽度、高度、RGB 时序频率和时序参数等,设置反弹缓冲区大小和显示活动低电平标志,然后开始面板总线操作。
    • 然后,打印 “Create LCD device”,创建一个 LCD 对象 ESP_PanelLcd ,传入面板总线对象、颜色位数和复位引脚等参数,进行初始化、复位和开始操作。如果定义了 EXAMPLE_ENABLE_PRINT_LCD_FPS ,则将 VSync 结束的回调函数附加到 LCD 对象上。
    • 最后,打印 “Draw color bar from top left to bottom right, the order is B - G - R”,调用 colorBarTest 函数在 LCD 上绘制颜色条,并打开 LCD 背光。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 串口打印log,屏幕亮起

ESP32-S3-Touch-LCD-7-demo-11.png ESP32-Arduino-25.png


09_lvgl_Porting

【硬件连接】


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

【代码分析】


  • setup()

以 115200 的波特率初始化串口通信。接着创建并初始化 IO 扩展器,设置引脚模式和状态,进行 GT911 触摸屏初始化。然后创建并初始化面板设备,根据需要对 RGB 总线进行配置。之后初始化 LVGL,创建一个简单标签或可选择调用 LVGL 的示例或演示函数,并在最后释放互斥锁

  • loop()

仅打印 “IDLE loop” 并等待 1 秒钟,没有其他实质性操作。总体目的是搭建一个基于 LVGL 的用户界面环境。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 串口打印屏幕刷新率,屏幕亮起

ESP32-S3-Touch-LCD-7-demo-12.png

【其他说明】


ESP-IDF开发

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

环境搭建

下载和安装 Visual Studio

  • 打开VScode官网的下载页面,选择对应系统和系统位数进行下载
    ESP32-S3-AMOLED-1.91-VScode-01.png
  • 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
    ESP32-S3-AMOLED-1.91-VScode-02.png
    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问ESP-IDF环境搭建参考

安装Espressif IDF插件

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

运行第一个 ESP-IDF 程序

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

新建项目

ESP32-S3-AMOLED-1.91-study-01.png

ESP32-S3-AMOLED-1.91-study-02.png

创建例程

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

ESP32-S3-AMOLED-1.91-study-03.png

  • 选择你当前的IDF版本

ESP32-S3-AMOLED-1.91-study-04.png

  • 以Hello world例程为例

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

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

ESP32-S3-AMOLED-1.91-study-06.png

修改COM口

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

ESP32-S3-AMOLED-1.91-study-07.png

修改驱动对象

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

ESP32-S3-AMOLED-1.91-study-08.png

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

ESP32-S3-AMOLED-1.91-study-09.png


其余状态栏简介

①.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,常被称作小火苗

ESP32-S3-AMOLED-1.91-study-10.png

编译、烧录、串口监视

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

ESP32-S3-AMOLED-1.91-study-11.png

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

ESP32-S3-AMOLED-1.91-study-12.png

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

ESP32-S3-AMOLED-1.91-study-13.png

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

ESP32-S3-AMOLED-1.91-study-14.png

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

ESP32-S3-AMOLED-1.91-study-15.png


使用IDF 示例程序

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

软件内部打开

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

ESP32-S3-AMOLED-1.91-study-16.png

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

ESP32-S3-AMOLED-1.91-study-17.png


软件外部打开

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

ESP32-S3-AMOLED-1.91-study-18.png

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

ESP32-S3-AMOLED-1.91-study-19.png

ESP-IDF工程项目详解

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

ESP32-P4 VSCode ESP-IDF GettingStart 240906 02.png

示例程序

  • ESP32-S3-Touch-LCD-7 示例程序
示例程序 基础例程说明
01_I2C_Test 测试I2C座子
02_RS485_Test 测试RS485座子
03_SD_Test 测试SD卡座
04_Sensor_AD 测试Sensor AD 座子
05_UART_Test 测试UART 接口
06_TWAItransmit 测试CAN卡座
07_TWAIreceive 测试CAN卡座
08_lvgl_Porting 测试RGB触摸屏幕
  • 依赖库通过 idf component.yml 在编译时自动下载

01_I2C_Test

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-01.png

【代码分析】


  • app_main()
    • 首先定义了与 I2C 相关的常量和变量,如日志标签、I2C 的 SDA 和 SCL 引脚以及端口号。
    • 接着,根据不同配置选项安装控制台 REPL 环境,用于用户交互。随后配置 I2C 总线,包括时钟源、端口、引脚和启用内部上拉电阻等,并初始化 I2C 主总线。
    • 之后注册一系列 I2C 工具命令,如设备检测、寄存器读写等操作的命令。还打印了使用说明,指导用户如何使用这些命令。
    • 最后启动控制台 REPL,允许用户通过命令行与应用程序交互,执行各种 I2C 操作,为用户提供了一种方便的方式通过命令行操作 I2C 总线。

【运行效果】


  • 串口调试助手进行通信(可先将ESP-IDF的COM口关闭,否则会占用COM口导致无法打开串口)

ESP32-S3-Touch-LCD-7-demo-17.png

  • 使用` i2cdetect `来扫描总线上的设备

ESP32-S3-Touch-LCD-7-demo-18.png

  • 也可直接使用ESP-IDF的串口监视器
  • 命令列表含义如下:
  1. 使用` help `,检查所有支持的命令
  2. 使用` i2cconfig `配置你的I2C总线
  3. 使用` i2cdetect `来扫描总线上的设备
  4. 使用` i2cget `获取特定寄存器的内容
  5. 使用` i2cset `设置特定寄存器的值
  6. 使用` i2cdump `转储所有寄存器(实验)

02_RS485_Test

【硬件连接】


ESP32-S3-Touch-LCD-7-demo-05.png

【代码分析】


  • echo_task()
    • 首先配置了 UART 参数,包括波特率、数据位、奇偶校验位、停止位和硬件流控制等。
    • 然后安装 UART 驱动,设置 UART 引脚,并分配一个临时缓冲区用于接收数据。
    • 在一个无限循环中,从 UART 读取数据,将读取到的数据回写到 UART,并在有数据接收时记录日志信息。

【运行效果】


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

ESP32-S3-Touch-LCD-7-demo-04.png

03_SD_Test

【硬件连接】


  • 使用USB线把板子接入电脑
  • 将SD卡插入板子

ESP32-S3-Touch-LCD-7-demo-08.png

【代码分析】


  • waveshare_sd_card_init()

这个函数主要用于初始化 SD 卡。首先初始化 I2C,然后通过 I2C 控制芯片拉低 SD 卡的 CS 引脚。接着配置 SD 卡的挂载选项,包括是否在挂载失败时格式化、最大文件数和分配单元大小等。之后初始化 SPI 总线,并使用配置好的 SPI 总线和挂载选项来挂载 SD 卡文件系统。如果挂载成功则返回ESP_OK,表示 SD 卡初始化完成。

  • waveshare_sd_card_test()

这个函数用于测试 SD 卡的功能。首先打印已初始化的 SD 卡的信息。然后创建一个文件并写入数据,重命名该文件并读取重命名后的文件内容。接着格式化文件系统,检查文件在格式化后是否被删除。最后创建一个新文件并读取其内容,完成测试后卸载 SD 卡并释放 SPI 总线资源。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • UART下载
  • 烧录代码

【运行效果】


  • 烧录成功后,串口会打印有关存储卡的信息,例如名称、类型、容量和支持的最大频率,再创建文件,写入文件,重命名文件,读取重命名文件:

ESP32-S3-Touch-LCD-7-demo-20.png

  • 也可直接使用ESP-IDF的串口监视器

04_Sensor_AD

【硬件连接】


  • 使用USB线把板子接入电脑
  • 可以接入 Sensor套件等器件测试AD值,以DHT11 Sensor为例

ESP32-S3-Touch-LCD-7-demo-06.png

【代码分析】


  • setup()

setup 函数首先初始化串口通信,然后初始化 PCF85063A 实时时钟模块,设置当前时间和闹钟时间并启用闹钟,同时将闹钟中断引脚设置为上拉输入模式并附加中断处理函数。

  • loop()

loop 函数不断读取当前时间并打印,当闹钟触发时(通过中断检测),重置闹钟标志并可选择重新启用闹钟,同时打印闹钟响起的消息,最后延迟 1 秒钟以不断循环检测时间和闹钟状态。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精确型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 运行效果: 串口调试助手观察AD引脚读取的数据,Raw Data为读取的ADC模拟值,Cali Voltage为ADC转化的毫伏值

ESP32-S3-Touch-LCD-7-demo-21.png

  • 将AD引脚与GND引脚短接,读取的值为0
  • 将AD引脚与3V3引脚短接,ADC模拟值4095,ADC转化的电压值接近3.3v

05_UART_Test

【硬件连接】


  • 使用USB线把板子接入电脑
  • USB to Type C线接入UART1接口

ESP32-S3-Touch-LCD-7-demo-01.png

【代码分析】


  • waveshare_io_test()

首先,它打印出 “Initialize IO expander” 表示开始初始化 IO 扩展器。接着创建一个 ESP_IOExpander_CH422G 实例来代表 IO 扩展器,初始化并开始其操作。然后将 OC 引脚设置为推挽输出模式,将 IO0 - IO7 引脚设置为输入模式。同时设置输出引脚 DO0 和 DO1 的初始状态为高电平。
在一个无限循环中,交替设置 DO0 和 DO1 的状态。每次设置后,通过读取输入引脚 DI0 和 DI1 的状态来判断是否满足特定条件,如果满足条件(即 expander->multiDigitalRead(DI0_mask | DI1_mask) 的值与预期相符)则增加变量 num 的值。当 num 达到 2 时退出循环,否则将 num 重置为 3 并再次循环尝试。整个过程旨在测试 IO 扩展器的输入输出功能以及它们之间的交互。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


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

ESP32-S3-Touch-LCD-7-demo-04.png

06_TWAItransmit

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-10.png

【代码分析】


  • waveshare_twai_transmit()
    • 若驱动未安装,等待一段时间后返回失败状态
    • 读取触发的警报并获取 TWAI 状态信息
    • 根据不同警报类型打印相应日志信息,包括错误被动警报、总线错误警报、传输失败警报和传输成功警报,并打印相关状态信息
    • 判断是否到了发送消息的时间,如果是则发送消息并更新上一次发送时间

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • 设置开发板参数
  • 烧录代码

【运行效果】


  • 串口打印CAN消息发送成功,配置USB-CAN-A_TOOL后启动可看到ESP32-S3-Touch-LCD-7发送的CAN消息。

ESP32-S3-Touch-LCD-7-demo-14.png

  • 再观察USB-CAN-A_TOOL,即可看到ESP32-S3-Touch-LCD-7发送的CAN消息

ESP32-S3-Touch-LCD-7-demo-16.png

07_TWAIreceive

【硬件连接】


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

ESP32-S3-Touch-LCD-7-demo-10.png

【代码分析】


  • waveshare_twai_receive()
    • 首先读取触发的警报并获取状态信息,根据不同警报情况进行相应处理,如打印错误被动、总线错误、接收队列已满等警报信息及相关计数。
    • 当接收数据警报触发时,循环接收消息并调用handle_rx_message函数处理,该函数判断消息格式并打印消息标识符和数据内容(非远程传输请求时),实现了对 TWAI 总线上接收消息的有效处理和警报响应。

【代码烧录】


  • 选择开发板型号ESP32S3 Dev Module(或精准型号)与端口
  • UART下载
  • 烧录代码

【运行效果】


  • ESP32-S3-Touch-LCD-7 等待USB-CAN-A_TOOL发送消息,如果接收成功,会将其打印到串口上。
  • Automatically Send为自动发送,可自行尝试设置发送

ESP32-Arduino-CN-2.png ESP32-Arduino-23.png

  • 打开串口调试助手,可以看到Esp32-s3-touch-lcd-7已经开始接收CAN消息(若接收报错,可多进行几次复位与软件重新开启设备,耐心等待)

ESP32-S3-Touch-LCD-7-demo-15.png

08_lvgl_Porting

【硬件连接】


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

【代码分析】


  • app_main()
    • 初始化 Waveshare ESP32-S3 RGB LCD,然后可以选择开启或关闭屏幕背光。
    • 接着打印一条信息表示要显示 LVGL 的演示内容,由于 LVGL 的 API 不是线程安全的,所以先锁定互斥锁。
    • 然后可以选择运行不同的 LVGL 演示程序,如 lv_demo_stress lv_demo_benchmark lv_demo_music lv_demo_widgets example_lvgl_demo_ui 等。
    • 最后释放互斥锁。

【运行效果】


  • 烧录成功后,摁下复位按键,即可运行示例

  • 如果还是进一步提升帧率,可以参考此链接进行配置
  • RGB LCD驱动可以参考此链接
  • GT911驱动可以参考此链接

资料

原理图

工程图纸

示例程序

数据手册

ESP32-S3

其他器件

软件工具

Arduino

VScode

调试工具

固件烧录工具

其他资料链接

FAQ

①重新启动UCANV2.0.exe中COM口,多按几次ESP32-S3-Touch-LCD-7 复位键
②将串口调试助手上的“DTR”、“DTR”的勾选去掉


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



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


可以参考以下步骤运行例程对比下:

  1. 运行程序前,进行库安装
  2. 安装库视频参考
  3. 运行和烧录ESP32-S3-Touch-LCD-7示例程序



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


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


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

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


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


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


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




技术支持

联系人:黄工
QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证