ESP32-S3-Touch-AMOLED-1.43

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

说明

产品简介

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-S3-Touch-LCD-4.3B-details-size.jpg

环境设置

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

  • 乐鑫官方的 C/C++ 库方便快速安装,中国大陆用户遇到下载问题请查看FAQ解决
    • ESP32系列 的 Arduino 开发手册
    • ESP32系列 的 ESP-IDF 开发手册
  • 环境设置是在 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

Img 1.png

2.下载下来之后,直接双击打开,全部点击下一步,需要注意的是,安装路径不能有中文

Img 2.png

Img 3.png

选择自定义安装把所有的都勾选上

Img 4.png

等待安装完成,如果显示以下信息表示安装完成

Img 5.png

安装完成之后打开系统变量编辑,看是否有相关变量加入系统,如图:

Img 111.png

3.接着直接百度搜索VSCode,进入官网下载WINDOWS版本(最好下载次最新版本),安装路径同样不能有中文,安装完成之后打开系统环境变量编辑,查看有没有把VSCode包含进去(如果没有VSCode变量,必须手动加进去),点击用户变量->path->编辑如下图:

Img 6.png

4.打开VSCode,点击左侧的扩展,在扩展搜索并安装C/C++,ESP-IDF。最后简体中文根据个人喜好安装,想安装可以直接扩展搜Chines (Simplified)(简体中文)。

5.安装完成上面的必须扩展之后重新打开VSCode,点击左侧ESP-IDF的标志进行配置,如图:

Img 7.png

6.点进去之后,根据图片进行安装如图:

Img 112.png

Img 113.png

首先检查一下系统环境变量里面有没有ESP-TOOLS-PATH和ESP-PATH变量,如果没有需要手动加入,该处的ESP-TOOLS-PATH和ESP-PATH目录就是对应系统环境变量里面的目录,设置好之后,开始点击安装,如果安装过程中出现ERROR_INVALID_PIP错误,可以删除*/Espressif/tools 内的 idf-git 和 idf-python 两个文件夹,然后重新开始安装,最后跳出需要下载esp tools的时候,可以选择本地查找,然后继续

7.安装完成之后应该可以新建项目如图(项目工程不能有中文路径):

Img 10.png

Img 11.png

Img 12.png

最后会出现下图这个命令(一定要点击yes):

Img 82.png

这样工程就新建完成了,介绍一下ESP-IDF在VSCode里面一些功能如图:

Img 14.png

最左边开始算:1.表示ESP-IDF版本 2.连接板子的COM口 3.芯片的型号 4.选择当前目录 5.ESP-IDF设置(配置) 6.清除构建生成的文件 7.开始构建文件 8.选择烧录方法 9.烧录到设备 10.监控串口 11.调试 12.构建、下载、监控设备一起实现

Arduino


Img 87.png

  • 安装完成之后,打开IDE


Img 88.png

  • 进入首选项


Img 89.png

  • 添加 JSON 链接
https://espressif.github.io/arduino-esp32/package_esp32_index.json


Img 90.png

Img 91.png

  • 将项目文件夹修改为 C:\Users\Waveshare\AppData\Local\Arduino15\packages(其中 Waveshare 为计算机用户名)


Img 92.png

  • 进入开发板管理器,搜索 esp32 ,在下方的 esp32 by Espressif Systems 中选择 3.0.2 版本并点击安装(若不能正常安装可使用手机热点尝试)


Img 93.png

Img 95.png

  • 安装完成重启 Arduino IDE 即可使用


Img 96.png


安装不成功

  • 下载资源文件
  • 下载成功之后,从资源管理器按路径 “c:\Users\Waveshare\AppData\Local\Arduino15\staging\packages” 进入(其中 Waveshare 为计算机用户名,需要开启显示隐藏文件)


Img 97.png

  • 将上方下载的文件解压至 packages 文件夹下


Img 98.png

  • 重新执行安装操作


Img 99.png

  • 安装完成就可以使用了

安装库文件

  • 如果之前有相同的库,需要备份,防止冲突,需要安装的库只有一个,LVGL库版本V8.3.11
  • 打开Arduino IDE,进入首选项,查看库的目录地址如下:


Img 100.png

  • 进入到该目录(该目录中的ag是电脑用户名),该目录下有个libraries目录,进入到该目录之后,把下载的库文件解压之后提取到这里即可完成,如图:


Img 115.png

  • 上述所使用的库文件链接:Library

示例程序

ESP-IDF

  • 在进行下面的例程时必须要配置的一些信息:
    • 下面例程都是基于库文件ESP-IDF-V5.1.4 代码编辑器VSCode
    • 通过上面的环境搭建,而且新建任何一个工程都可以成功编译下载固件到开发板
    • 使用VSCode打开下面工程文件之后,需要配置一些宏定义,如下:


Img 16.png

  • 先点击齿轮,进入可视化配置,当然也可以通过终端命令行的方式进入,首先搜索Flash,然后在Flash界面选择Flash SPI的方式,有很多种,一般不同的Flash大小对应不同的方式,可以在官网查看对应的手册,我们是16M,选择DIO,Flash读写速度选择80MHZ,Flash 大小选择16M,最后点击保存。


Img 17.png

  • Flash配置完成之后,在配置PSRAM,外部RAM,同样,搜索PSRAM,然后打开外部RAM(默认是不打开的),查找方式选择自动,速度选择80MHZ(默认40MHZ),配置完成之后,再搜索system,把系统频率改到最大240MHZ(默认是160MHZ)


Img 18.png

  • 最后我们修改一下FreeRTOS的滴答频率,同样搜索FreeRTOS,选择configTICK_RATE_HZ那选框里面把100修改成1000(必须要修改为1000)点击保存
  • 每打开一个新的例程都需要注意上面的有没有配置好,因为这样配置只是针对该例程,而不是所有ESP-IDF工程

FactoryProgram

  • 这是一个综合性工程,打开工程,先清除构建文件,再构建->下载;固件成功下载到开发板之后,可以在屏幕上看到


Img 120.jpg

  • 第一界面是一个模拟时钟界面;然后往左边划动,可以看到


Img 204.jpg

  • 第二界面是板载硬件信息,里面可以明显看到各种外设的一个状态如SD卡,RTC,IMU等,再滑动


Img 123.jpg

  • 第三界面是WIFI搜索界面,点击refresh按钮可以刷新周围的wifi信号,再滑动或者直接点击最上面的imgs,可以读取SD的图片信息,左边有6个图片可读,点击之后,可以在右边查看预览图,然后点击预览图,会进入全屏显示图片,再次点击可以回到预留图


Img 202.jpg Img 200.jpg Img 201.jpg

  • 可以通过左侧的列表选择图片,所有的图片都是保存在SD卡里面,可以根据显示部分的代码进行自定义修改。
  • GPIO部分,可以通过万用表直接测量,GPIO7为输出高电平,GPIO8为输出低电平,读取GPIO18的电平输出到串口,主要涉及的代码如下:


Img 130.png

  • 通过EXIO_TCA_Init函数和BAT_GPIO_Init函数可以实现对扩展IO控制以及锂电池供电管理;接入锂电池实现的效果是一样的。

ADC_Test

  • 用于读取系统当前的一个电压值,也可以认为是经过电池芯片转换之后的一个电压值;打开工程,清除构建文件,再次构建->下载固件。
  • 通过打开监控可以看到,输出ADC的值和电压,如图:


Img 40.png

Img 41.png

  • 可以看到ADC采样值是1687左右,实际电压是大于3.3V,因为这是经过电池芯片升压之后的电压,想具体分析,可以点击查看原理图

SD_Test

  • 首先清除构建文件,然后构建->下载固件,下载成功之后,点击监控设备,可以看到(注意:必须先插入容量小于32G的SD卡)


Img 40.png

Img 42.png

  • 可以看到输出一些SD卡的信息sios是SD卡的实际容量

RTC_Test

  • 打开工程文件,先清除构建文件,然后开始构建->下载固件;点击监控设备,可以看到:


Img 44.png

  • 可以看到每隔10秒输出一次时间信息,然后重点讲一下文件目录结构和主要函数


Img 43.png

  • bsp文件是自定义的一个上层接口文件,PCF85063就是RTC芯片,在PCF85063源文件里面有个任务入口函数,如图:


Img 45.png

  • 该函数是RTC任务的入口函数,想要修改时间,可以直接修改这个函数

GPIO_Test

  • 分为两个,一个是板子外扩芯片的EXIO,一个是控制器外设GPIO,这个例程主要分析,结果可以通过万用表进行侧量


Img 47.png

  • 1.对GPIO进行输出配置,把IO1,IO4设置成输出
  • 2.对GPIO进行输入配置,把IO2,IO5设置成输入
  • 3.把GPIO1置1,GPIO4置0
  • 4.控制EXIO和电池电源的初始化


Img 48.png

  • 1.对电池控制初始化
  • 2.使能电池供电
  • 3.失能电池供电


Img 49.png

  • 1.对扩展IO芯片初始化,必须要初始化,才能使用下面的函数
  • 2.读取对应的EXIO引脚的电平
  • 3.设置对应的EXIO引脚的电平

IMU_Test

  • 打开工程文档,首先清除构建文件,然后构建->下载固件,点击监控设备,可以看到IMU发出来的原始数据(欧拉角需要自己转换)


Img 50.png

  • 可以看到,每隔1秒输出一次,如果需要修改或者参考,可以直接进去qmi源文件修改

LVGL_Test

  • LVGL目录有两个工程,一个是原始显示,一个是旋转90度显示,可以根据需求来进行选择;步骤还是先打开工程,清除构建文件,然后开始构建->下载固件;
  • 本次主要分析工程代码,效果可以直接下载观看,原始显示和旋转90度显示主要差异为两点:


Img 52.png

  • 在该lcd_init_cmds数组下的0x36地址,该寄存器是负责旋转的寄存器,通过修改这个寄存器的值就可以达到旋转效果,寄存器值0x30是旋转90度的值,如果不需要旋转,可以直接把整个{0x36,(uint8_t []){0x30,1,0}},删除。


Img 53.png Img 54.png

  • 旋转之后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地址,首先清除构建文件,开始构建->下载固件,然后监控界面,在监控界面之前,需要修改一些代码,如:


Img 56.png Img 57.png

  • 修改成所处环境可用的WIFI路由器名字和密码,然后下载固件到开发板,点开监控,可以看到成功连接WIFI而且输出IP地址。

Li-ION_Test

  • 该工程是通过锂电池来供电,本次例程没有结果图,只有分析,打开工程,打开gpio_bsp.c文件,如图:


Img 58.png

  • 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)配置必须如下:

Img 101.png

ADC_Test

  • 用于读取系统当前的一个电压值,也可以认为是经过电池芯片转换之后的一个电压值;打开工程,编译->下载。
  • 通过打开串口监控可以看到,输出ADC的值和电压,如图:


Img 59.png

  • 可以看到ADC采样值是1687左右,实际电压大于3.3V,是因为经过电池芯片的升压,想具体分析,可以点击查看原理图

RTC_Test

  • 打开工程文件,先清除构建文件,然后开始构建->下载固件;点击监控设备,可以看到:


Img 60.png

  • 可以看到每隔10秒输出一次时间信息,然后重点讲一下文件目录结构和主要函数


Img 61.png

  • bsp文件是自定义的一个上层接口文件,PCF85063就是RTC芯片,在PCF85063源文件里面有个任务入口函数,如图:


Img 62.png

  • 该函数是RTC任务的入口函数,想要修改时间,可以直接修改这个函数

SD_Test

  • 首先打开工程,然后编译->下载固件,下载成功之后,点击串口监控设备,可以看到(注意:必须先插入容量小于32G的SD卡)


Img 63.png

  • 可以看到输出一些SD卡的信息practical_size是SD卡的实际容量

GPIO_Test

  • 分为两个,一个是板子外扩芯片的EXIO,一个是控制器外设GPIO,这个例程主要分析,结果可以通过万用表进行侧量


Img 64.png

  • 分析:
    • 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发出来的原始数据(欧拉角需要自己转换)


Img 65.png

  • 可以看到,每隔1秒输出一次,如果需要修改或者参考,可以直接进去qmi源文件修改

WIFI_Test

  • 该工程实现芯片处于STA模式下连接WIFI而且获取到IP地址,在编译、下载固件之前,需要修改一些代码,如:


Img 67.png Img 68.png

  • 修改成所处环境可用的WIFI路由器名字和密码,然后下载固件到开发板,点开串口监控,可以看到成功连接WIFI而且输出IP地址。

Li-ION_Test

  • 该工程是通过锂电池来供电,本次例程没有结果图,只有分析,打开工程,打开gpio_bsp.c文件,如图:


Img 69.png

  • Init函数是负责控制锂电池供电的GPIO初始化函数,而BAT_ON函数是打开锂电池供电,BAT_OFF函数是关闭锂电池供电,通过这两个函数就可以实现锂电池的供电。前提是:程序里面打开锂电池供电,把锂电池接入系统,然后按住PWR按钮一段时间再放开按钮,系统就进入锂电池供电了。

LVGL_Test

  • 先打开工程,LVGL例程对RAM和ROM要求比较高,所以必须要按照环境搭建的要求来配置,配置好之后编译->下载固件,开发板上如图所示:


Img 80.jpg

  • 针对LVGL,lvgl_conf.h是LVGL的配置文件,下面主要针对一些常用的来进行说明,如下图:


Img 81.png

  • 还有一些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
  • 微信:

Img 301.png