ESP32-S3-Touch-AMOLED-1.75C 使用教程

ESP32-S3-Touch-AMOLED-1.75C

ESP32-S3-Touch-AMOLED-1.75C 是一款由微雪(Waveshare)设计的高性能、高集成微控制器开发板,采用电子吧唧造型的 CNC 铝合金外壳,外观小巧美观且质感出众。板载 1.75 英寸高清电容 AMOLED 屏、高度集成电源管理芯片、六轴传感器 (加速度计 + 陀螺仪)、RTC、低功耗音频编解码芯片及回声消除电路,内置扬声器并预留电池空间,为快速开发和产品原型验证提供强大支持。

产品特性

  • 搭载 ESP32-S3R8 高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
  • 支持 2.4GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线
  • 内置 512KB 的 SRAM 和 384KB ROM,叠封 8MB PSRAM 和外接 16MB Flash
  • 采用 Type-C 接口,提高了用户的使用便捷性和设备的兼容性
  • 板载 1.75 英寸电容触摸高清 AMOLED 屏,466 × 466 分辨率,16.7 M 彩色,能清晰地显示彩色图片
  • 使用 AMOLED 屏幕,具有更高的对比度、更广的视角、丰富的色彩和快速响应时间,视觉效果更优秀,同时具备纤薄设计、低功耗和灵活性等优点
  • 内置 CO5300 驱动芯片和 CST9217 电容触控芯片,分别使用 QSPI 和 I2C 接口通信,不占用过多接口引脚资源
  • 配备双麦克风阵列,可实现降噪和回声消除等音频算法,适合精准的语音识别和近场 / 远场语音唤醒应用
  • 板载 QMI8658 六轴惯性测量单元(3 轴加速度、3 轴陀螺仪),可检测运动姿态、计步等功能
  • 板载 PWR、BOOT 两个可自定义功能的侧边按钮,方便使用按钮进行自定义功能开发
  • 板载 3.7V MX1.25 锂电池充放电接口
  • 采用 AXP2101,可高效地进行电源管理,支持多电压输出,集成充电与电池管理功能,同时优化了电池寿命

板载资源

ESP32-S3-Touch-AMOLED-1.75C 板载资源

  1. ESP32-S3R8 Wi-Fi 和蓝牙 SoC,240MHz 运行频率,叠封 8MB PSRAM

  2. 32MB NOR Flash

  3. QMI8658 六轴惯性测量单元 (IMU),包含一个 3 轴陀螺仪和一个 3 轴加速度计

  4. 双麦克风设计 配合回声消除电路,能够更高质量地采集音频

  5. 板载贴片天线 支持 2.4GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE)

  6. 屏幕接口

  7. ES7210 回声消除算法芯片 回声消除算法芯片,可用于消除回声,提高音频采集准度

  8. ES8311 音频编解码芯片

  9. PWR 电源按键 可控制电源通断,支持自定义功能

  10. BOOT 按键 用于设备启动和功能调试

  11. AXP2101 高集成度的电源管理芯片

  12. Type-C 接口 ESP32-S3 USB 接口,用于烧录程序和日志打印

  13. MX1.25 锂电池接口 MX1.25 2PIN 连接器,可用于接入 3.7V 锂电池,支持充放电

  14. 板载扬声器焊盘

产品尺寸

ESP32-S3-Touch-AMOLED-1.75C 产品尺寸

开发方式

ESP32-S3-Touch-AMOLED-1.75C 支持 Arduino IDE 和 ESP-IDF 两种开发框架,为开发者提供灵活的选择,您可以根据项目需求和个人偏好选择合适的开发工具。

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

  • Arduino IDE 是一款便捷灵活、易于上手的开源电子原型平台。无需太多基础知识,简单学习后即可快速开发。Arduino 拥有庞大的全球用户社区,提供海量开源代码、项目示例和教程,以及丰富的库资源,封装了复杂功能,让开发者能够快速实现各种功能。您可以参考 Arduino IDE 开发环境搭建教程 完成初始设置,教程中同时提供了相关示例程序供参考。

  • ESP-IDF 全称 Espressif IoT Development Framework,是乐鑫科技为 ESP 系列芯片推出的专业开发框架。它基于 C 语言开发,包含编译器、调试器、烧录工具等,支持命令行或集成开发环境(如 Visual Studio Code 配合 Espressif IDF 插件)开发,插件提供代码导航、项目管理、调试等功能。我们推荐使用 VS Code 进行开发,具体配置过程可参考 ESP-IDF (VS Code) 开发环境搭建教程,教程中同时提供了相关示例程序供参考。

    Arduino 开发

    配置开发环境

    1. 安装和配置 Arduino IDE

    请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

    2. 安装库

    • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件。
    • 对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
    • 可从 此链接 的 Arduino 目录中,下载 ESP32-S3-Touch-AMOLED-1.75C 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。
    库或文件名称说明版本安装方式
    GFX Library for ArduinoST7789 显示驱动图形库v1.6.4通过库管理器或手动安装
    SensorLibPCF85063、QMI8658 传感器驱动库v0.3.3通过库管理器或手动安装
    XPowersLibAXP2101 驱动库v0.2.6通过库管理器或手动安装
    lvgllvgl 显示显示框架v8.4.0通过库管理器或手动安装
    Mylibrary开发板引脚宏定义——手动安装
    lv_conf.hLVGL 配置文件——手动安装
    版本兼容性说明

    LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

    安装步骤:

    1. 下载 示例程序包

    2. 将其 Arduino\libraries 目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。

      信息

      Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

      也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

    3. 其他安装方式请参考:Arduino 库管理教程

    示例程序

    Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。

    示例程序基础例程说明依赖库
    01_HelloWorld展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果GFX_Library_for_Arduino
    02_GFX_AsciiTable根据屏幕尺寸,在显示屏上按行列打印 ASCII 字符GFX_Library_for_Arduino
    03_LVGL_AXP2101_ADC_Data通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据GFX_Library_for_Arduino
    04_LVGL_QMI8658_uiLVGL 绘制加速度折线图LVGL,SensorLib
    05_LVGL_WidgetsLVGL 演示LVGL,Arduino_DriveBus ,Adafruit_XCA9554
    06_ES7210ES7210 驱动示例,拾取人声检测——
    07_ES8311ES8311 驱动示例,播放简单的音频——

    01_HelloWorld

    程序说明

    • 本示例演示了如何使用 Arduino GFX 库控制 SH8601 显示屏,通过动态变化的文本展示了基本的图形库功能。该代码也可以用于测试显示屏的基础性能以及随机文本显示效果

    硬件连接

    • 将开发板接入电脑

    代码分析

    • 显示初始化:

      if (!gfx->begin()) {
      USBSerial.println("gfx->begin() failed!");
      }
    • 清屏并显示文本:

       gfx->fillScreen(BLACK);
      gfx->setCursor(10, 10);
      gfx->setTextColor(RED);
      gfx->println("Hello World!");
    • 动图显示:

       gfx->setCursor(random(gfx->width()), random(gfx->height()));
      gfx->setTextColor(random(0xffff), random(0xffff));
      gfx->setTextSize(random(6), random(6), random(2));
      gfx->println("Hello World!");

    运行效果

    02_GFX_AsciiTable

    程序说明

    • 本示例通过使用 Arduino GFX 库在 ESP32 上展示了如何在 SH8601 显示屏上显示一个基本的 ASCII 字符表格。代码的核心功能是初始化显示屏,并根据屏幕尺寸,在显示屏上按行列打印 ASCII 字符

    硬件连接

    • 将开发板接入电脑

    代码分析

    • 数据总线和图形显示对象的创建

      • 这里创建了一个用于与显示屏通信的数据总线对象 bus,使用特定的引脚配置进行初始化。然后创建了一个图形显示对象 gfx,传入数据总线、复位引脚、旋转角度、是否为 IPS 屏以及显示屏的宽度和高度等参数
       Arduino_DataBus *bus = new Arduino_ESP32QSPI(
      LCD_CS /* CS */, LCD_SCLK /* SCK */, LCD_SDIO0 /* SDIO0 */, LCD_SDIO1 /* SDIO1 */,
      LCD_SDIO2 /* SDIO2 */, LCD_SDIO3 /* SDIO3 */);

      Arduino_GFX *gfx = new Arduino_SH8601(bus, -1 /* RST */,
      0 /* rotation */, false /* IPS */, LCD_WIDTH, LCD_HEIGHT);
    • 绘制行列编号和字符表

      • 首先设置文本颜色为绿色,在显示屏上逐个打印行号。然后设置文本颜色为蓝色,打印列号。接着使用循环逐个绘制字符,组成字符表,每个字符使用白色前景和黑色背景
       gfx->setTextColor(GREEN);
      for (int x = 0; x < numRows; x++) {
      gfx->setCursor(10 + x * 8, 2);
      gfx->print(x, 16);
      }
      gfx->setTextColor(BLUE);
      for (int y = 0; y < numCols; y++) {
      gfx->setCursor(2, 12 + y * 10);
      gfx->print(y, 16);
      }

      char c = 0;
      for (int y = 0; y < numRows; y++) {
      for (int x = 0; x < numCols; x++) {
      gfx->drawChar(10 + x * 8, 12 + y * 10, c++, WHITE, BLACK);
      }
      }

    运行效果

    03_LVGL_AXP2101_ADC_Data

    程序说明

    • 本示例演示了 LVGL 下使用 XPowers 库进行电源管理,并且提供 PWR 自定义按钮控制亮屏、熄屏动作

    硬件连接

    • 将开发板接入电脑

    代码分析

    • 亮屏熄屏实现函数

        void toggleBacklight() {
      USBSerial.println(backlight_on);
      if (backlight_on) {
      for (int i = 255; i >= 0; i--) {
      gfx->Display_Brightness(i);
      delay(3);
      }
      } else {
      for (int i = 0; i <= 255; i++) {
      gfx->Display_Brightness(i);
      delay(3);
      }
      }
      backlight_on = !backlight_on;
      }

    运行效果

    04_LVGL_QMI8658_ui

    程序说明

    • 本示例演示了使用 LVGL 进行图形显示,与 QMI8658 IMU 通信以获取加速度计和陀螺仪数据

    硬件连接

    • 将开发板接入电脑

    代码分析

    • setup:负责初始化各种硬件设备和 LVGL 图形库环境

      • 串口初始化:USBSerial.begin(115200) 为串口调试做准备
      • 触摸控制器初始化:不断尝试初始化触摸控制器 FT3168,如果初始化失败则打印错误信息并延迟等待,成功后打印成功信息
      • 图形显示初始化:初始化图形显示设备 gfx,设置亮度,并打印 LVGL 和 Arduino 的版本信息。接着初始化 LVGL,包括注册打印回调函数用于调试,初始化显示驱动和输入设备驱动。创建并启动 LVGL 的定时器,最后创建一个标签并设置初始文本为 “Initializing...”
      • 创建图表:创建一个图表对象 chart,设置图表的类型、范围、数据点数量等属性,并为加速度的三个轴添加数据系列
      • 加速度传感器初始化:初始化加速度传感器 qmi,配置加速度计和陀螺仪的参数,启用它们,并打印芯片 ID 和控制寄存器信息
    • loop

      • lv_timer_handler():这是 LVGL 图形库中的一个重要函数,用于处理图形界面的各种定时器事件、动画更新、输入处理等任务。在每个循环中调用这个函数可以确保图形界面的流畅运行和及时响应交互操作
      • 读取加速度传感器数据:如果加速度传感器数据准备好,读取加速度数据并通过串口打印出来,同时更新图表显示加速度数据。如果陀螺仪数据准备好,读取陀螺仪数据并通过串口打印出来。最后添加一个小的延迟,增加数据 polling 的频率

    运行效果

    05_LVGL_Widgets

    程序说明

    • 本示例演示了 LVGL Widgets 示例,动态状态下帧率可达 50~60 帧,通过优化 SH8601 显示库可实现更佳流畅的帧率,实际可对比 ESP-IDF 环境下启用双缓存、双加速的场景

    硬件连接

    • 将开发板接入电脑

    代码分析

    • setup:负责初始化各种硬件设备和 LVGL 图形库环境
      • 串口初始化:USBSerial.begin(115200) 为串口调试做准备
      • I²C 总线初始化:Wire.begin(IIC_SDA, IIC_SCL); 初始化 I²C 总线,用于与其他 I²C 设备通信
      • 扩展芯片初始化:创建并初始化扩展芯片 expander,设置引脚模式为输出,并进行一些初始的引脚状态设置
      • 触摸控制器初始化:不断尝试初始化触摸控制器 FT3168,如果初始化失败则打印错误信息并延迟等待,成功后打印成功信息
      • 图形显示初始化:初始化图形显示设备 gfx,设置亮度,并获取屏幕的宽度和高度。然后初始化 LVGL,包括注册打印回调函数用于调试,设置触摸控制器的电源模式为监控模式,初始化显示驱动和输入设备驱动。创建并启动 LVGL 的定时器,创建一个标签并设置文本,最后调用 lv_demo_widgets() 展示 LVGL 的示例小部件
    • loop
      • lv_timer_handler():这是 LVGL 图形库中的一个重要函数,用于处理图形界面的各种定时器事件、动画更新、输入处理等任务。在每个循环中调用这个函数可以确保图形界面的流畅运行和及时响应交互操作
      • delay(5):添加一个小的延迟,避免过度占用 CPU 资源

    运行效果

    06_ES7210

    程序说明

    • 本示例演示了使用 I2S 驱动 ES7210 芯片,拾音并过滤人声

    硬件连接

    • 将开发板接入电脑

    运行效果

    • 拾音,屏幕无现象

    07_ES8311

    程序说明

    • 本示例演示了使用 I2S 驱动 ES8311 芯片,将转换的二进制音频文件进行播放

    硬件连接

    • 将开发板接入电脑

    代码分析

    • es8311_codec_init:初始化 ES8311 音频编解码器
      • 创建一个 ES8311 编解码器的句柄 es_handle
      • 配置 ES8311 的时钟参数,包括主时钟和采样时钟的频率、时钟极性等
      • 初始化编解码器,设置音频分辨率为 16 位
      • 配置采样频率
      • 配置麦克风相关参数,如关闭麦克风、设置音量和麦克风增益
    • setup:进行整体的初始化设置,包括串口、引脚、I2S 和 ES8311 编解码器
      • 初始化串口用于调试输出
      • 设置特定引脚为输出并置高
      • 配置 I2S 总线,设置引脚、工作模式、采样率、数据位宽、声道模式等
      • 初始化 I²C 总线
      • 调用 es8311_codec_init 函数初始化 ES8311 编解码器
      • 通过 I2S 总线播放一段预先定义的音频数据(canon_pcm)

    运行效果

    • 播放音频文件,屏幕无现象
    • ESP-IDF 开发

      配置开发环境

      备注

      以下环境设置适用于 Windows 10/11 系统,Mac/Linux 用户请参考 官方说明

      1. 下载并安装 Visual Studio Code

      2. 在 VS Code 中,通过点击 VS Code 侧边活动栏中的 扩展图标 或使用快捷键(Ctrl+Shift+X)来打开 扩展 视图。然后,搜索 ESP-IDF 扩展并安装。

        在 VS Code 中搜索并安装 ESP-IDF 扩展

      3. 安装扩展后,VS Code 左侧活动栏中会出现 Espressif 图标 图标,点击该图标可查看 ESP-IDF 扩展的基本命令列表,在 Advanced 中选择 配置 ESP-IDF 扩展

        选择“配置 ESP-IDF 拓展”

      4. 选择 Express 进入快速配置模式:

        选择快速配置模式

      5. 根据需要修改以下选项。

        • 选择下载服务器
          • Espressif:使用乐鑫中国服务器,下载速度更快。
          • Github:使用 GitHub 官方发布链接。
        • ESP-IDF 版本:通常根据开发板要求选择对应版本,如无特殊要求建议使用最新的正式版本。对于 ESP32-S3-Touch-AMOLED-1.75C ,建议 Espressif IDF 版本 ≥ v5.5.0。
        • ESP-IDF 容器安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。
        • ESP-IDF 所需的工具安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。

        ESP-IDF 拓展快速配置模式选项

      6. 点击 Install 开始安装。你将看到一个显示安装进度的页面,包括 ESP-IDF 下载、ESP-IDF 工具下载安装以及 Python 虚拟环境创建的进度状态。

        安装进度

      7. 如果安装正确,你会看到所有设置已配置完成的提示,即可开始使用该扩展程序。

        安装成功

      注意

      注意:如果 ESP-IDF 安装失败或需要重新安装,可以尝试删除 C:\Users\%Username%\esp 和 C:\Users\%Username%\.espressif 文件夹后重试。

      示例程序

      ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。

      示例程序基础例程说明
      01_AXP2101通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据
      02_lvgl_demo_v9LVGL 演示
      03_esp-brookesia展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件
      04_Immersive_block通过 QMI8658 六轴传感器采集加速度数据,驱动 LVGL 图形库渲染的随机几何图形跟随设备倾斜方向移动
      05_Spec_Analyzer展示实时音频频谱可视化分析仪,以 64 条彩色对称频谱条 + 峰值跟踪的形式,直观呈现音频的频率分布

      01_AXP2101

      程序说明

      • 本示例演示了在使用 ESP-IDF 移植 XPowersLib,通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据

      硬件连接

      • 将开发板接入电脑

      代码分析

      • i2c_init:初始化 I2C 主设备,为与其他设备(如 PMU)进行通信做准备
        • 配置 I2C 参数,包括设置主设备模式、指定 SDA 和 SCL 引脚、启用上拉电阻以及确定时钟频率
        • 安装 I2C 驱动,将配置应用到实际的硬件上
      • pmu_register_read:从 PMU 的特定寄存器读取一系列字节数据
        • 进行参数检查,确保传入的参数有效,避免无效的读取操作
        • 分两步进行 I2C 操作,先发送要读取的寄存器地址,然后读取数据。在读取过程中,根据要读取的字节长度进行不同的处理,确保数据的准确读取。同时,处理 I2C 通信过程中的错误情况,返回相应的状态码以便上层代码判断读取是否成功

      运行效果

      • 此示例不会点亮屏幕
      • 串口监视器显示参数:芯片温度,是否正在充电,是否放电,是否待机状态,Vbus 是否连接,Vbus 是否良好,充电器状态,电池电压,Vbus 电压,系统电压,电池百分比

      02_lvgl_demo_v9

      程序说明

      • 本示例运行 LVGL V9 的示例程序

      硬件连接

      • 将开发板接入电脑

      运行效果

      03_esp-brookesia

      程序说明

      • 本示例展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件

      硬件连接

      • 将开发板接入电脑

      运行效果

      04_Immersive_block

      程序说明

      • 本示例通过 QMI8658 六轴传感器采集加速度数据,驱动 LVGL 图形库渲染的随机几何图形跟随设备倾斜方向移动

      硬件连接

      • 将开发板接入电脑

      代码分析

      • generate_random_shapes():随机图形生成
        • 初始化随机数种子(基于系统时间),重置图形计数
        • 循环尝试生成图形,最多尝试 100 次获取有效位置(不与已生成图形重叠)
        • 有效位置判定:图形中心在屏幕内,且与所有已生成图形无重叠
        • 有效位置:更新 LVGL 对象位置(lv_obj_set_pos),存入图形数组
        • 无效位置:删除该 LVGL 图形对象,避免内存泄漏
      • perform_level_calibration():水平校准核心函数
        • 采集 200 个加速度样本,计算 X/Y 轴平均值作为偏差值(accel_bias_x/y
        • 检测样本波动范围(X/Y 轴范围大于 0.1 则判定校准不稳定,自动重试)
        • 校准完成后设置 calibration_done 标志,打印偏差信息

      运行效果

      05_Spec_Analyzer

      程序说明

      • 本示例展示实时音频频谱可视化分析仪,以 64 条彩色对称频谱条 + 峰值跟踪的形式,直观呈现音频的频率分布

      硬件连接

      • 将开发板接入电脑

      代码分析

      • timer_cb:LVGL 定时器回调函数,负责频谱可视化渲染
        • 画布与图层初始化:获取画布对象,初始化 LVGL 图层(图层渲染可提高刷新效率,避免闪屏),清屏(黑色背景)
        • 基础参数计算:计算频谱条宽度(画布宽度 / 64)、画布中心 Y 坐标(用于对称绘制)、频谱条间隙
        • 遍历渲染 64 条频谱条
        • 图层渲染完成:调用 lv_canvas_finish_layer 提交图层渲染,更新画布显示
      • lv_example_canvas_10:画布初始化
        • 静态绘制缓冲区定义:使用 LV_DRAW_BUF_DEFINE_STATIC 定义 300×150 像素的 RGB565 格式绘制缓冲区
        • 画布创建:创建 LVGL 画布对象,设置尺寸并居中显示,绑定静态绘制缓冲区
        • 定时器创建:创建 33ms 定时器,绑定 timer_cb 回调函数,并将画布对象作为用户数据传入,实现定时渲染

      运行效果

      相关资料

      1. 硬件资料

      开发板设计文件

      2. 技术手册

      3. 示例程序

      • Github 示例程序仓库ESP32-S3-Touch-AMOLED-1.75C
      • 技术支持

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

        手机:13434470212

        邮箱:services04@spotpear.cn

        QQ:202004841