说明
产品简介
ESP32-S3-Touch-LCD-4 是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载 4 英寸电容触摸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
- 板载 4 英寸电容触摸屏,480 × 480 分辨率,65K 彩色
- 支持 I2C 接口控制电容触摸,5 点触控,支持中断
- 板载 CAN、RS485、I2C 接口和 Micro SD 卡座等,集成全速 USB
- 板载 RTC、锂电池充放电IC,适用于移动场景
- 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式
硬件说明
接口说明
- CAN 接口:实现 CAN 总线网络的收发控制、数据分析、采集和监控。
- I2C 接口:ESP32-S3 提供多路硬件 I2C ,目前使用 GPIO8(SDA1),GPIO9(SCL1) 引脚做 I2C 总线挂载 IO 扩展芯片;使用GPIO7(SCL0),GPIO15(SDA0)引脚作为触摸接口,I2C接口
- RS485 接口:开发板板载 RS485 接口电路,可直接接入 RS485 设备进行通信,RS485电路收发模式自动切换
- PH2.0 电池接口:开发板使用高效充放电管理芯片 SW6106 ,支持I2C读取电池电量
引脚连接ESP32-S3-WROOM-x | LCD | USB | SD | UART | CAN | RTC | OTS |
GPIO0 | | | | | CANRX | | |
GPIO1 | LCD_SDA | | MOSI | | | | |
GPIO2 | LCD_SCL | | SCK | | | | |
GPIO3 | R2 | | | | | | |
GPIO4 | | | MISO | | | | |
GPIO5 | B1 | | | | | | |
GPIO6 | | | | | CANTX | | |
GPIO7 | TP_SCL | | | | | RTC_SCL | SCL |
GPIO8 | R3 | | | | | | Expander_SDA |
GPIO9 | G5 | | | | | | Expander_SCL |
GPIO10 | G4 | | | | | | |
GPIO11 | G3 | | | | | | |
GPIO12 | G2 | | | | | | |
GPIO13 | G1 | | | | | | |
GPIO14 | G0 | | | | | | |
GPIO15 | TP_SDA | | | | | RTC_SDA | SDA |
GPIO16 | TP_INT | | | | | | |
GPIO17 | R5 | | | | | | |
GPIO18 | R4 | | | | | | |
GPIO19 | | USB_DN | | | | | |
GPIO20 | | USB_DP | | | | | |
GPIO21 | B5 | | | | | | |
GPIO38 | HSYNC | | | | | | |
GPIO39 | VSYNC | | | | | | |
GPIO40 | DE | | | | | | |
GPIO41 | LCD_PCLK | | | | | | |
GPIO42 | LCD_CS | | | | | | |
GPIO43 | | | | RS485_RX | | | |
GPIO44 | | | | RS485_TX | | | |
GPIO45 | B2 | | | | | | |
GPIO46 | R1 | | | | | | |
GPIO47 | B4 | | | | | | |
GPIO48 | B3 | | | | | | |
TCA9554PWR | - | - | - | - | - | - | - |
EXIO0 | TP_RST | | | | | | |
EXIO1 | BL_EN | | | | | | |
EXIO2 | LCD_RST | | | | | | |
EXIO3 | | | SD_CS | | | | |
EXIO4 | | | | | | | BLC |
EXIO5 | | | | | | | BEE_EN |
EXIO6 | | | | | | RTC_INT | |
EXIO7 | | | | | | | DO1 |
硬件连接
- 开发板使用USB下载程序,如果出现无法识别到端口,请进入boot模式(摁住boot按键后,再连接电脑,然后松开boot按键),下载程序后,按 RESET 按键运行程序
- 使用时注意 PCB 天线区域,避免其它金属,塑料件贴合 PCB 天线
- 开发板使用 3.5mm的接线端子引出 CAN,I2C,RS485和隔离IO等外设引脚
- CAN 和 RS485 外设默认不使用开关连接 120 欧姆电阻,可选 ON 打开终端电阻连接
- TF 卡使用 SPI 通信,注意 SD_CS 引脚需要由 TCA9554PWR 的 EXIO3 驱动
其它说明
- 目前在 ESP-IDF v5.3 下使用单核跑 LVGL benchamark 示例的平均帧率上限为 26, 对应接口帧率为 41 (PCLK 21 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
产品尺寸
环境设置
ESP32 系列开发板的软件框架成熟,可使用 C/C++(Arduino,ESP-IDF),MicroPython 等进行快速开发产品原型,以下简要介绍:
- 乐鑫官方的 C/C++ 库方便快速安装,中国大陆用户遇到下载问题请查看FAQ解决
- 环境设置是在 Windows 10 系统下进行,用户可以选择使用 Arduino 或 Visual Studio Code(ESP-IDF) 作为 IDE 进行开发,Mac/Linux 操作系统用户请参考官方说明
ESP-IDF
使用VSCode插件开发
安装VSCode
- 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
- 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
- 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
- 第三项开启后,选择打开方式时,可以直接选择VSCode
安装Espressif IDF插件
- 注:当前插件最新版本为V1.7.1,为体验一致,用户可以选择与我们一样的版本
- 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
- 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
- 使用快捷键F1,输入
esp-idf: configure esp-idf extension
- 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)
- 打开后显示该界面
- 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
- 选择想要现在的ESP-IDF版本,我们选择最新的V5.3(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
- 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,
- 注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
- 配置完成后,点击 install 进行下载
- 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可,安装完成后,会进入以下界面,说明安装完成
离线包
- 如果出现无法下载esp-idf,可以尝试离线包(提取码:1w3r),工具包还是需要在线下载
- 下载后双击运行,填入你指定的位置,按照如下操作:
- 比如我安装在F盘的esp文件夹中,设置好路径后,点击Extract,开始解压:
- 解压完成后,创建一个存放编译工具的文件夹在解压后的文件夹中,名为Espressif
- 然后进入到安装Espressif IDF插件的第7点,我们按照下图进行设置,随后点击安装:
- 等待出现下图显示,即按照成功:
使用官方例程
创建例程
- 使用快捷键F1,输入
esp-idf:show examples projects
- 选择你当前的IDF版本
- 以Hello world例程为例
- ①选择对应例程
- ②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
- ③点击创建例程
- 选择放置例程的路径,要求无例程同名文件夹
修改COM口
- 左下角第一项显示使用对应的COM口,点击可以修改对应COM口
- 我们的CH343的COM为COM5,所以我们选择COM5,请根据自己CH343对应COM口进行选择
- 选择使用的工程或者例程
- 然后我们的COM口就修改好了
修改驱动对象
- 左下角第二项显示的是使用的驱动对象,点击可以修改对应驱动对象
- 选择使用的工程或者例程
- 点击后需要稍等片刻
- 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3
- 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
其余状态栏简介
- ①SDK 配置编辑器,ESP-IDF很多功能与配置可以在其内修改
- ②全部清理,清空所有编译文件,
- ③编译
- ④当前下载方式,默认为UART
- ⑤烧录当前固件,请在编译后进行
- ⑥打开串口监视器,用于查看串口信息
- ⑦编译,烧录,打开串口监视器 一体按键(调试时最常用)
编译、烧录、串口监视
- 点击我们之前介绍的 编译,烧录,打开串口监视器按键
- 编译可能需要较长时间才能完成,尤其是在第一次编译时。
- 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
- 因为我们使用的是CH343为USB转串口芯片,并且板载自动下载电路,无需手动操作即可自动下载
- 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启
Arduino
- 如果没用使用过arduino-esp32的基础建议仔细阅读官方文档,点击此处查看
安装Arduino IDE
- 打开官网软件下载页面,选择对应的系统和系统位数下载
- 可以选择直接下载,也可以选择捐赠并下载
- 运行安装程序,全部默认安装即可
在线安装arduino-esp32
- 打开首选项在 File->Preferences 下 Settings 界面的 Additional boards manager URLs 处填写下面链接后保存
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- 打开板管理器并搜索输入ESP32,选择版本3.0.2
- 等待下载
- arduino-esp32下载完成
I2C
Two way I2C
ESP32-S3支持两路I2C同时工作,此开发板使用两路I2C驱动,SDA0(IO8)、SCL0(IO9) I2C 0驱动拓展芯片TCA9554PWR。
SDA1(IO15)、SCL1(IO7) I2C 1驱动其他I2C从设备
示例程序
Arduino
注意:在使用Arduino例程前,请先检查Arduino IDE环境与下载设置是否正确配置,具体操作可查看Arduino环境配置 必须要配置如下,否则USB口将不会输出信息:
USB CDC On Boot 设置成 Enabled
Flash Size 设置成 16MB(128Mb)
使用屏幕要配置如下:
USB CDC On Boot 设置成 Enabled
Flash Size 设置成 16MB(128Mb)
PSRAM 设置成 OPI PSRAM
- 使用Arduino示例需要确保软件库满足以下条件:
- 使用我们提供的库文件
- 安装Arduino esp32
- Arduino IDE的用户名必须是英文,出现中文会导致无法找到对应文件
如果安装的Arduino esp32的版本不同,可能会出现报错
RS485_Test
RS485_Test 示例,用于测试RS-485 座子的使用,此接口连接GPIO44(TXD)、GPIO43(RXD) 作 RS485通讯 使用
- 烧录代码后,该例程需要使用到USB转RS485转换器,RS-485 座子连接“HY2.0 2P 转杜邦公头 2P 10cm”,再连接USB转RS485转换器,USB转RS485转换器连接电脑
- 打开串口调试助手,发送RS485消息给ESP32-S3-Touch-LCD-7,ESP32-S3-Touch-LCD-7会把收到的消息返回给串口调试助手,注意需要选择正确的COM口和波特率,发送消息前勾选“加回车换行/AddCrLf”
SD_Test
SD_Test 示例,用于测试SD卡座的使用,需先插入SD卡,烧录代码后对SD卡进行读写操作
- 烧录代码后,ESP32-S3-Touch-LCD-4.3b会识别SD卡的类型和大小,再对进行文件的增删改查
RTC_Test
RTC_Test 示例,用于RTC时钟跟RTC中断的使用,
- 烧录代码后会设置时间,启动闹钟,然后读取当前时间,等待进入闹钟
- 箭头是触发闹钟,红框是读取时间
TWAItransmit
TWAItransmit 示例,用于测试CAN卡座的使用,此接口连接GPIO15(TXD)、GPIO16(RXD) 作 CAN通讯 使用
- 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-7 和 USB-CAN-A 的 CAN H 和 CAN L引脚
- 打开串口调试助手,可以看到Esp32-s3-touch-lcd-7已经开始发送CAN消息
- USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 50.000Kbps,即可看到Esp32-s3-touch-lcd-4.3B发送的CAN消息
TWAIreceive
TWAIreceive 示例,用于测试CAN卡座的使用,此接口连接GPIO15(TXD)、GPIO16(RXD) 作 CAN通讯 使用
- 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-7 和 USB-CAN-A 的 CAN H 和 CAN L引脚
- USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 500.000Kbps,即可发送CAN消息至Esp32-s3-touch-lcd-7
- 打开串口调试助手,在USB-CAN-A_TOOL_2.0中发送数据,可以看到Esp32-s3-touch-lcd-4.3B已经开始接收CAN消息(若接收报错,可多进行几次复位与软件重新开启设备,耐心等待)
lvgl_Porting
lvgl_Porting 示例,用于测试RGB触摸屏幕的使用
- 烧录代码后,可进行一系列触屏操作,是可供用户LVGL移植的例程(若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(16MB) 和使能 PSRAM(8MB OPI))
- 此处运行的是LVGL的demo,底层使用的是ESP Display Panel,常见问题可以点击此处查看:英文链接 中文链接
DrawColorBar
DrawColorBar 示例,用于测试RGB屏幕的使用
- 烧录代码后,可观察屏幕显示蓝色、绿色、红色的色带(若烧录代码后,屏幕无反应,可查看是否有在Arduino IDE -> Tools正确配置:选择对应 Flash(16MB) 和使能 PSRAM(8MB OPI))
ESP-IDF
注意:在使用ESP-IDF例程前,请先检查ESP-IDF环境与下载设置是否正确配置,具体操作可查看
ESP-IDF环境配置 RS485_Test
RS485_Test 示例,用于测试RS 485座子的使用
- 烧录代码后,对应连接 USB TO RS485 和 ESP32-S3-Touch-LCD-4 的 A 和 B 引脚,USB TO RS485 连接电脑后打开 串口调试助手 选择对应 COM 口通信
- 按如下图所示选择 115200 波特率,发送任意字符则会回环显示,RS485座子测试通过
SD_Test
SD_Test 示例,用于测试SD卡座的使用,需先插入SD卡,烧录代码后对SD卡进行读写操作
- 烧录代码后,ESP32-S3-Touch-LCD-4会打印有关存储卡的信息,例如名称、类型、容量和支持的最大频率,再创建文件,写入文件,重命名文件,读取重命名文件
RTC_Test
RTC_Test 示例,用于RTC时钟跟RTC中断的使用,
- 烧录代码后会设置时间,启动闹钟,然后读取当前时间,等待进入闹钟
- 箭头是触发闹钟,红框是读取时间
TWAItransmit
TWAItransmit 示例,用于测试CAN卡座的使用,此接口连接GPIO15(TXD)、GPIO16(RXD) 作 CAN通讯 使用
- 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-4 和 USB-CAN-A 的 CAN H 和 CAN L引脚
- 打开串口调试助手,可以看到Esp32-s3-touch-lcd-4已经开始发送CAN消息
- USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 50.000Kbps,即可看到Esp32-s3-touch-lcd-4发送的CAN消息
TWAIreceive
TWAIreceive 示例,用于测试CAN卡座的使用,此接口连接GPIO15(TXD)、GPIO16(RXD) 作 CAN通讯 使用
- 烧录代码后,使用 “HY2.0 2P 转杜邦公头 2P 红黑 10cm” 线缆对应连接 ESP32-S3-Touch-LCD-4 和 USB-CAN-A 的 CAN H 和 CAN L引脚
- USB-CAN-A 连接电脑,打开USB-CAN-A_TOOL_2.0 上位机,选择对应COM口, 按下图所示 2000000 端口波特率,CAN波特率 500.000Kbps,即可发送CAN消息至Esp32-s3-touch-lcd-4
- 打开串口调试助手,在USB-CAN-A_TOOL_2.0中发送数据,可以看到Esp32-s3-touch-lcd-4已经开始接收CAN消息(若接收报错,可多进行几次复位与软件重新开启设备,耐心等待)
lvgl_Porting
lvgl_Porting 示例,用于测试RGB触摸屏幕的使用
- 烧录代码后,可进行一系列触屏操作,是可供用户LVGL移植的例程
- RGB LCD驱动可以参考此链接
- GT911驱动可以参考此链接