ESP32-S3-Touch-AMOLED-1.43
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品简介
ESP32-S3-Touch-AMOLED-1.43 是一款由微雪 (Waveshare) 设计的低成本、高性能、扩展性强的ESP32_S3_Touch_AMOLED系列开发板之一。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载RTC、IMU、 1.43 英寸AMOLED圆屏,外露UART、GPIO、I2C、USB总线接口,同时我们还提供大量例程和技术支持,可供你快速开发自动化、物联网产品。
产品特性
- 搭载高性能 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
- 板载 1.64 英寸宽电容触摸屏,466 × 466 分辨率,65K 彩色
- AMOLED屏显示使用 QSPI接口、触摸使用 I2C接口,支持 5 点触控、中断输出
- 板载 RTC、IMU、SD卡座;引出I2C、UART总线,同时外露USB_N、USB_P;使之满足各种场合
硬件说明
接口说明
- GPIO接口:可以复用实现ADC、SPI、CAN、ETH等各种接口。
- I2C 接口:目前I2C用于和板载硬件之间的通信,GPIO47(SDA)、GPIO48(SCL)不可用于其他功能。
- UART 接口:可以转接RS485、RS232等总线,从而实现工业自动化控制。
- MX1.25 电池接口:开发板使用高效智能充放电芯片,自动进行充放电,使电池管理更加高效。
详情请查阅原理图
ESP32-Touch-AMOLED-2.41 | LCD | SD_Card | IMU | RTC | UART | I2C | KEY_IO | GPIO |
GPIO0 | BOOT0 | |||||||
GPIO1 | GPIO1 | |||||||
GPIO2 | SD_CS | GPIO2 | ||||||
GPIO3 | TP_RESET | GPIO3 | ||||||
GPIO4 | SD_SCLK | GPIO4 | ||||||
GPIO5 | SD_MOSI | GPIO5 | ||||||
GPIO6 | SD_MISO | GPIO6 | ||||||
GPIO7 | GPIO7 | |||||||
GPIO8 | GPIO8 | |||||||
GPIO9 | OLED_CS | |||||||
GPIO10 | OLED_CLK | |||||||
GPIO11 | OLED_SIO0 | |||||||
GPIO12 | OLED_SI1 | |||||||
GPIO13 | OLED_SI2 | |||||||
GPIO14 | OLED_SI3 | |||||||
GPIO15 | Key_BAT | |||||||
GPIO16 | BAT_Control | |||||||
GPIO17 | BAT_ADC | |||||||
GPIO18 | GPIO18 | |||||||
GPIO19 | USB_N | |||||||
GPIO20 | USB_P | |||||||
GPIO21 | OLED_RESET | |||||||
GPIO38 | GPIO38 | |||||||
GPIO39 | GPIO39 | |||||||
GPIO40 | GPIO40 | |||||||
GPIO41 | GPIO41 | |||||||
GPIO42 | GPIO42 | |||||||
GPIO43 | UART_TXD | TXD | ||||||
GPIO44 | UART_RXD | RXD | ||||||
GPIO45 | GPIO45 | |||||||
GPIO46 | GPIO46 | |||||||
GPIO47 | TP_SDA | IMU_SDA | RTC_SDA | SDA | SDA | |||
GPIO48 | TP_SCL | IMU_SCL | RTC_SCL | SCL | SCL | |||
EN | RESET | |||||||
EXIO0 | OLED_TE | |||||||
EXIO1 | PWR_EN | |||||||
EXIO2 | TP_INT | |||||||
EXIO3 | IMU_INT2 | |||||||
EXIO4 | IMU_INT1 | RTC_INT | ||||||
EXIO5 | EXIO5 | |||||||
EXIO6 | EXIO6 | |||||||
EXIO7 | EXIO7 |
其它说明
- 如果用户需要使用I2C总线,需要注意,板载I2C从机已占用以下地址(7位地址):
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: - - - - 04 - - - - - - - - - - - 10: - - - - - - - - - - - - - - - - 20: 20 - - - - - - - - - - - - - - - 30: - - - - - - - - 38 - - - - - - - 40: - - - - - - - - - - - - - - - - 50: - - - - - - - - - - - - - - - - 60: - - - - - - - - - - - 6b - - - - 70: - - - - - - - - - - - - - - - -
产品尺寸
环境设置
ESP32 系列开发板的软件框架成熟,可使用 C/C++(Arduino,ESP-IDF),MicroPython 等进行快速开发产品原型,以下简要介绍:
- 环境设置是在 Windows 10 系统下进行,用户可以选择使用 Arduino 或 Visual Studio Code(ESP-IDF) 作为 IDE 进行开发,Linux和Mac用户可访问下面链接参考
ESP-IDF(VScode环境下)
1.先搭建本地的ESP-IDF环境,通过链接 https://dl.espressif.cn/dl/esp-idf/?idf=4.4 打开往下拉,选中espidf-v5.1.4如图,假如上面没有显示,就点击下面的Download
2.下载下来之后,直接双击打开,全部点击下一步,需要注意的是,安装路径不能有中文
选择自定义安装把所有的都勾选上
等待安装完成,如果显示以下信息表示安装完成
安装完成之后打开系统变量编辑,看是否有相关变量加入系统,如图:
3.接着直接百度搜索VSCode,进入官网下载WINDOWS版本(最好下载次最新版本),安装路径同样不能有中文,安装完成之后打开系统环境变量编辑,查看有没有把VSCode包含进去(如果没有VSCode变量,必须手动加进去),点击用户变量->path->编辑如下图:
4.打开VSCode,点击左侧的扩展,在扩展搜索并安装C/C++,ESP-IDF。最后简体中文根据个人喜好安装,想安装可以直接扩展搜Chines (Simplified)(简体中文)。
5.安装完成上面的必须扩展之后重新打开VSCode,点击左侧ESP-IDF的标志进行配置,如图:
6.点进去之后,根据图片进行安装如图:
首先检查一下系统环境变量里面有没有ESP-TOOLS-PATH和ESP-PATH变量,如果没有需要手动加入,该处的ESP-TOOLS-PATH和ESP-PATH目录就是对应系统环境变量里面的目录,设置好之后,开始点击安装,如果安装过程中出现ERROR_INVALID_PIP错误,可以删除*/Espressif/tools 内的 idf-git 和 idf-python 两个文件夹,然后重新开始安装,最后跳出需要下载esp tools的时候,可以选择本地查找,然后继续
7.安装完成之后应该可以新建项目如图(项目工程不能有中文路径):
最后会出现下图这个命令(一定要点击yes):
这样工程就新建完成了,介绍一下ESP-IDF在VSCode里面一些功能如图:
最左边开始算:1.表示ESP-IDF版本 2.连接板子的COM口 3.芯片的型号 4.选择当前目录 5.ESP-IDF设置(配置) 6.清除构建生成的文件 7.开始构建文件 8.选择烧录方法 9.烧录到设备 10.监控串口 11.调试 12.构建、下载、监控设备一起实现
Arduino
- 先在官网安装Arduino IDE
- 安装完成之后,打开IDE
- 进入首选项
- 添加 JSON 链接
https://espressif.github.io/arduino-esp32/package_esp32_index.json
- 将项目文件夹修改为 C:\Users\Waveshare\AppData\Local\Arduino15\packages(其中 Waveshare 为计算机用户名)
- 进入开发板管理器,搜索 esp32 ,在下方的 esp32 by Espressif Systems 中选择 3.0.2 版本并点击安装(若不能正常安装可使用手机热点尝试)
- 安装完成重启 Arduino IDE 即可使用
安装不成功
- 下载资源文件
- 链接: https://pan.baidu.com/s/1ppl7ZU2NSTY_TfFzs1pDWA
- 提取码: 0755
- 下载成功之后,从资源管理器按路径 “c:\Users\Waveshare\AppData\Local\Arduino15\staging\packages” 进入(其中 Waveshare 为计算机用户名,需要开启显示隐藏文件)
- 将上方下载的文件解压至 packages 文件夹下
- 重新执行安装操作
- 安装完成就可以使用了
安装库文件
- 如果之前有相同的库,需要备份,防止冲突,需要安装的库只有一个,LVGL库版本V8.3.11
- 打开Arduino IDE,进入首选项,查看库的目录地址如下:
- 进入到该目录(该目录中的ag是电脑用户名),该目录下有个libraries目录,进入到该目录之后,把下载的库文件解压之后提取到这里即可完成,如图:
- 上述所使用的库文件链接:Library
示例程序
ESP-IDF
- 在进行下面的例程时必须要配置的一些信息:
- 下面例程都是基于库文件ESP-IDF-V5.1.4 代码编辑器VSCode
- 通过上面的环境搭建,而且新建任何一个工程都可以成功编译下载固件到开发板
- 使用VSCode打开下面工程文件之后,需要配置一些宏定义,如下:
- 先点击齿轮,进入可视化配置,当然也可以通过终端命令行的方式进入,首先搜索Flash,然后在Flash界面选择Flash SPI的方式,有很多种,一般不同的Flash大小对应不同的方式,可以在官网查看对应的手册,我们是16M,选择DIO,Flash读写速度选择80MHZ,Flash 大小选择16M,最后点击保存。
- Flash配置完成之后,在配置PSRAM,外部RAM,同样,搜索PSRAM,然后打开外部RAM(默认是不打开的),查找方式选择自动,速度选择80MHZ(默认40MHZ),配置完成之后,再搜索system,把系统频率改到最大240MHZ(默认是160MHZ)
- 最后我们修改一下FreeRTOS的滴答频率,同样搜索FreeRTOS,选择configTICK_RATE_HZ那选框里面把100修改成1000(必须要修改为1000)点击保存
- 每打开一个新的例程都需要注意上面的有没有配置好,因为这样配置只是针对该例程,而不是所有ESP-IDF工程
FactoryProgram
- 这是一个综合性工程,打开工程,先清除构建文件,再构建->下载;固件成功下载到开发板之后,可以在屏幕上看到
- 第一界面是一个模拟时钟界面;然后往左边划动,可以看到
- 第二界面是板载硬件信息,里面可以明显看到各种外设的一个状态如SD卡,RTC,IMU等,再滑动
- 第三界面是WIFI搜索界面,点击refresh按钮可以刷新周围的wifi信号,再滑动或者直接点击最上面的imgs,可以读取SD的图片信息,左边有6个图片可读,点击之后,可以在右边查看预览图,然后点击预览图,会进入全屏显示图片,再次点击可以回到预留图
- 可以通过左侧的列表选择图片,所有的图片都是保存在SD卡里面,可以根据显示部分的代码进行自定义修改。
- GPIO部分,可以通过万用表直接测量,GPIO7为输出高电平,GPIO8为输出低电平,读取GPIO18的电平输出到串口,主要涉及的代码如下:
- 通过EXIO_TCA_Init函数和BAT_GPIO_Init函数可以实现对扩展IO控制以及锂电池供电管理;接入锂电池实现的效果是一样的。
ADC_Test
- 用于读取系统当前的一个电压值,也可以认为是经过电池芯片转换之后的一个电压值;打开工程,清除构建文件,再次构建->下载固件。
- 通过打开监控可以看到,输出ADC的值和电压,如图:
- 可以看到ADC采样值是1687左右,实际电压是大于3.3V,因为这是经过电池芯片升压之后的电压,想具体分析,可以点击查看原理图
SD_Test
- 首先清除构建文件,然后构建->下载固件,下载成功之后,点击监控设备,可以看到(注意:必须先插入容量小于32G的SD卡)
- 可以看到输出一些SD卡的信息sios是SD卡的实际容量
RTC_Test
- 打开工程文件,先清除构建文件,然后开始构建->下载固件;点击监控设备,可以看到:
- 可以看到每隔10秒输出一次时间信息,然后重点讲一下文件目录结构和主要函数
- bsp文件是自定义的一个上层接口文件,PCF85063就是RTC芯片,在PCF85063源文件里面有个任务入口函数,如图:
- 该函数是RTC任务的入口函数,想要修改时间,可以直接修改这个函数
GPIO_Test
- 分为两个,一个是板子外扩芯片的EXIO,一个是控制器外设GPIO,这个例程主要分析,结果可以通过万用表进行侧量
- 1.对GPIO进行输出配置,把IO1,IO4设置成输出
- 2.对GPIO进行输入配置,把IO2,IO5设置成输入
- 3.把GPIO1置1,GPIO4置0
- 4.控制EXIO和电池电源的初始化
- 1.对电池控制初始化
- 2.使能电池供电
- 3.失能电池供电
- 1.对扩展IO芯片初始化,必须要初始化,才能使用下面的函数
- 2.读取对应的EXIO引脚的电平
- 3.设置对应的EXIO引脚的电平
IMU_Test
- 打开工程文档,首先清除构建文件,然后构建->下载固件,点击监控设备,可以看到IMU发出来的原始数据(欧拉角需要自己转换)
- 可以看到,每隔1秒输出一次,如果需要修改或者参考,可以直接进去qmi源文件修改
LVGL_Test
- LVGL目录有两个工程,一个是原始显示,一个是旋转90度显示,可以根据需求来进行选择;步骤还是先打开工程,清除构建文件,然后开始构建->下载固件;
- 本次主要分析工程代码,效果可以直接下载观看,原始显示和旋转90度显示主要差异为两点:
- 在该lcd_init_cmds数组下的0x36地址,该寄存器是负责旋转的寄存器,通过修改这个寄存器的值就可以达到旋转效果,寄存器值0x30是旋转90度的值,如果不需要旋转,可以直接把整个{0x36,(uint8_t []){0x30,1,0}},删除。
- 旋转之后x,y已经发生变化,旋转90度的是y1+16,y2+16;不旋转是x1+16,x2+16;同时触摸部分也需要改变,通过镜像可以实现如swap_xy=1,mirror_x=0,mirror_y=1可以实现旋转90的触摸。
WIFI_Test
- 该工程实现芯片处于STA模式下连接WIFI而且获取到IP地址,首先清除构建文件,开始构建->下载固件,然后监控界面,在监控界面之前,需要修改一些代码,如:
- 修改成所处环境可用的WIFI路由器名字和密码,然后下载固件到开发板,点开监控,可以看到成功连接WIFI而且输出IP地址。
Li-ION_Test
- 该工程是通过锂电池来供电,本次例程没有结果图,只有分析,打开工程,打开gpio_bsp.c文件,如图:
- Init函数是负责控制锂电池供电的GPIO初始化函数,而BAT_ON函数是打开锂电池供电,BAT_OFF函数是关闭锂电池供电,通过这两个函数就可以实现锂电池的供电。前提是:在程序里面开启锂电池供电,锂电池接入系统,按住PWR按钮一段时间,然后放开按钮就可以使系统进入锂电池供电。
Arduino
- 在跑例程之前,主要有两点需要注意
- Arduino例程用了很多ESP-IDF的库而且是基于V5.1.4版本的,所以本地必须先部署有ESP-IDF-V5.1.4的环境,可参考前面环境搭建ESP-IDF部分的1步骤和2步骤
- Arduino的工具(tools)配置必须如下:
ADC_Test
- 用于读取系统当前的一个电压值,也可以认为是经过电池芯片转换之后的一个电压值;打开工程,编译->下载。
- 通过打开串口监控可以看到,输出ADC的值和电压,如图:
- 可以看到ADC采样值是1687左右,实际电压大于3.3V,是因为经过电池芯片的升压,想具体分析,可以点击查看原理图
RTC_Test
- 打开工程文件,先清除构建文件,然后开始构建->下载固件;点击监控设备,可以看到:
- 可以看到每隔10秒输出一次时间信息,然后重点讲一下文件目录结构和主要函数
- bsp文件是自定义的一个上层接口文件,PCF85063就是RTC芯片,在PCF85063源文件里面有个任务入口函数,如图:
- 该函数是RTC任务的入口函数,想要修改时间,可以直接修改这个函数
SD_Test
- 首先打开工程,然后编译->下载固件,下载成功之后,点击串口监控设备,可以看到(注意:必须先插入容量小于32G的SD卡)
- 可以看到输出一些SD卡的信息practical_size是SD卡的实际容量
GPIO_Test
- 分为两个,一个是板子外扩芯片的EXIO,一个是控制器外设GPIO,这个例程主要分析,结果可以通过万用表进行侧量
- 分析:
- 1.对GPIO进行输出配置,把IO1,IO4设置成输出
- 2.对GPIO进行输入配置,把IO2,IO5设置成输入
- 3.把EXIO5置1,读取EXIO6的电平输出到串口
- 对于ESP32-S3内部引脚GPIO可以使用gpio_set_level函数进行设置电平,gpio_get_level函数进行读取电平;EXIO可以通过I2C进行操作,如图上面那些函数。
IMU_Test
- 打开工程文档,编译->下载固件,点击串口监控设备,可以看到IMU发出来的原始数据(欧拉角需要自己转换)
- 可以看到,每隔1秒输出一次,如果需要修改或者参考,可以直接进去qmi源文件修改
WIFI_Test
- 该工程实现芯片处于STA模式下连接WIFI而且获取到IP地址,在编译、下载固件之前,需要修改一些代码,如:
- 修改成所处环境可用的WIFI路由器名字和密码,然后下载固件到开发板,点开串口监控,可以看到成功连接WIFI而且输出IP地址。
Li-ION_Test
- 该工程是通过锂电池来供电,本次例程没有结果图,只有分析,打开工程,打开gpio_bsp.c文件,如图:
- Init函数是负责控制锂电池供电的GPIO初始化函数,而BAT_ON函数是打开锂电池供电,BAT_OFF函数是关闭锂电池供电,通过这两个函数就可以实现锂电池的供电。前提是:程序里面打开锂电池供电,把锂电池接入系统,然后按住PWR按钮一段时间再放开按钮,系统就进入锂电池供电了。
LVGL_Test
- 先打开工程,LVGL例程对RAM和ROM要求比较高,所以必须要按照环境搭建的要求来配置,配置好之后编译->下载固件,开发板上如图所示:
- 针对LVGL,lvgl_conf.h是LVGL的配置文件,下面主要针对一些常用的来进行说明,如下图:
- 还有一些LVGL的demo、文件系统都可以在conf配置文件里面设置。
资料
文档
程序
软件
数据手册
FAQ
- 检查系统环境变量用户变量PATA里面有没有把VSCode引进去
- 检查系统环境变量用户变量有没有把ESPIDF的路径加载进去
- 没有反应先检查Arduino IDE -> Tools有没有正确配置
- 本地是否已经搭建好了ESP-IDF,版本是否对应(Arduino例程用到很多IDF库)
- 修改LVGL显示缓存为整个屏幕大小,而不是整个屏幕的10/1
- 在配置选项里面修改LV_IMG_CACHE_DEF_SIZE改到1000可以得到一定优化
- 基本的中文可以显示,如果是生僻字显示不了
- 可以把需要的生僻字通过转码软件转码,然后加入到工程字库里面
技术支持
- 联系人:吴工
- 邮箱:2880803592@qq.com
- 微信: