跳到主要内容

ESP-IDF 开发

本章节包含以下内容,请按需阅读:

ESP-IDF 入门教程

初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置开发环境

版本兼容性说明

ESP32-S3-Touch-AMOLED-1.64 分为 V1 和 V2,两个版本的示例程序不通用。请先确认开发板 PCB 版本,再使用对应的示例程序,并按照示例工程说明选择 ESP-IDF 版本。

备注

以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明

版本选择

此部分图示以安装 ESP-IDF V5.5.2 为例示范,安装时请选用与您开发板示例匹配的 ESP-IDF 版本。

安装 ESP-IDF 开发环境

  1. 前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。

    在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你需要的 ESP-IDF 版本(图示仅为参考,请以实际为准)。

    下载 EIM 和整合包

    确认选择无误后,点击下载按钮。浏览器将自动同时下载两个文件:一个是 ESP-IDF 离线整合包(.zst),另一个是 ESP-IDF 安装器(.exe)

    下载 EIM 和整合包2

    请耐心等待两个文件下载完成。

  2. 下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)

    启动后,可在右上角将界面语言切换为中文。

    切换 EIM 语言

    安装工具会自动检测同一目录下是否存在离线整合包。点击 从存档安装

    自动检测整合包

    接下来,选择安装路径。建议使用默认路径;若需自定义,请确保路径中不包含中文或空格。确认无误后,点击 开始安装

    选择安装路径
  3. 当看到如下界面时,表示 ESP-IDF 已安装成功。

    安装成功
  4. 建议同时安装驱动程序。点击 完成安装,然后点击 安装驱动程序

    用 ESP-IDF 安装管理器安装驱动

安装 Visual Studio Code 与 ESP-IDF 扩展

  1. 下载并安装 Visual Studio Code

  2. 安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。

  3. 在 VS Code 中,点击侧边活动栏中的 扩展图标 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。

  4. 在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。

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

  5. ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。

示例程序

ESP-IDF 示例程序位于对应资料包的 ESP-IDF 目录中:

Demo-flow-01

示例程序基础例程说明依赖库
01_ADC_Test读取系统当前的电压值-
02_I2C_QMI8658打印 IMU 发出的原始数据-
03_SD_Card加载并显示 SD 卡信息-
04_WIFI_AP设置为 AP 模式,可获取接入设备的 MAC 地址-
05_WIFI_STA设置为 STA 模式,可接入 Wi-Fi 并获取 IP 地址-
06_LVGL_TestLVGL 示例LVGL
07_FactoryProgram综合性工程LVGL

01_ADC_Test

【程序说明】

  • 通过GPIO连接的模拟量电压经过ADC转换成数字量,然后通过计算得到实际的系统电压,打印到终端。

【硬件连接】


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

ESP32-S3-Touch-AMOLED-1

【代码分析】


  • adc_bsp_init(void) :初始化 ADC1,包括创建 ADC 单次触发单元并配置 ADC1 的通道 3。
  • **adc_get_value(float value,int data) :读取 ADC1 通道 3 的值,并根据参考电压和分辨率计算出对应的电压值存储在传入的指针指向的位置,如果读取失败则存储 0。
  • adc_example(void parameter)* :初始化 ADC1 后,创建一个ADC任务,该任务每隔 1 秒读取一次ADC的值,通过读取的ADC原始值计算出系统的电压。

【运行效果】


  • 程序烧录完成后,打开监控设备可以看到,输出ADC的值和电压,如下图所示:

ESP32-S3-Touch-AMOLED-1

  • ADC采样值是1960左右,系统电压是4.92V左右,若想具体分析,可以查看原理图

02_I2C_QMI8658

【程序说明】

  • 通过I2C协议,对QMI8658芯片进行初始化设置,然后每隔1秒读取对应的姿态信息打印到终端。

【硬件连接】


  • 使用USB线把板子接入电脑(参考示例01)

【代码分析】


  • qmi8658c_example(void parameter)* :该函数初始化 QMI8658 设备,在无限循环中读取并打印加速度计、陀螺仪数据和温度数据,每 1 秒执行一次,旋转板子的过程中陀螺仪数据随着旋转越快而越大,加速度计会根据当前的位置计算出对应的加速度。

【运行效果】


程序烧录完成后,设备的运行效果如下:

  • 点击串口监控设备,可以看到IMU发出来的原始数据(欧拉角需要自己转换),如下图所示:

ESP32-S3-Touch-AMOLED-1

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

03_SD_Card

【程序说明】

  • 通过宏定义选择SPI或者SDMMC方式驱动SD卡,成功挂载SD卡之后把SD卡信息打印到终端。

【硬件连接】


  • 板子装上SD卡(必须先插入容量小于64G的SD卡),使用USB线把板子接入电脑(参考示例01)

【代码分析】


  • 可以根据用户选择来实现SD卡的通信协议,在**sd_card_bsp.c** 源文件下找到**SD_Read_Mode** 宏定义,取消该宏定义注释即可使用SDMMC方式驱动SD卡。

    //#define SDMMC_U

【运行效果】


  • 点击串口监控设备,可以看到输出的SD卡的信息,practical_size是SD卡的实际容量,如下图所示:

ESP32-S3-Touch-AMOLED-1

想了解更多关于Arduino ESP32库关于SD卡相关的使用?可访问:Arduino ESP32 库 SD 使用

04_WIFI_AP

【程序说明】

  • 该示例可将开发板设置为热点,允许手机或其他处于 STA 模式的设备连接到开发板。

【硬件连接】


  • 使用USB线把板子接入电脑(参考示例01)

【代码分析】


  • 在**softap_example_main.c** 文件找到**SSID** 和**PASSWORD** ,然后手机或其他处于 STA 模式的设备即可使用该 SSID 和 PASSWORD 连接到开发板。

    #define EXAMPLE_ESP_WIFI_SSID "waveshare_esp32"
    #define EXAMPLE_ESP_WIFI_PASSWORD "wav123456"

【运行效果】


烧录完程序,打开串口终端,如果设备连接成功热点之后,会输出该设备的MAC地址和IP地址,如图: ESP32-S3-LCD-1

05_WIFI_STA

【程序说明】

  • 该示例可将开发板配置为 STA 设备,以连接路由器,从而接入系统网络。

【硬件连接】


  • 使用USB线把板子接入电脑(参考示例01)

【代码分析】


  • 在**esp_wifi_bsp.c** 文件找到**ssid** 和**password** ,然后将其修改为当前环境中可用路由器的SSID 和 Password。

    wifi_config_t wifi_config = {
    .sta = {
    .ssid = "PDCN",
    .password = "1234567890",
    },
    };

【运行效果】


烧录完程序,打开串口终端,如果设备连接成功热点之后,会输出所获取的IP地址,如图: ESP32-S3-LCD-1

06_LVGL_Test

【程序说明】

  • 通过移植LVGL,在屏幕上实现一些多功能的GUI界面。

【硬件连接】


  • 使用USB线把板子接入电脑(参考示例01)

【代码分析】

  • 显示芯片本身不支持硬件旋转,如果需要旋转显示可以通过软件实现,可以在 main.c 文件中找到**#define EXAMPLE_Rotate_90** 宏定义然后取消注释该宏定义即可,软件旋转显示性能是不如硬件旋转的。

    //#define EXAMPLE_Rotate_90

【运行效果】


  • 程序烧录完成后,设备的运行效果如下:

ESP32-S3-Touch-AMOLED-1

LVGL更多学习及使用可参考LVGL官方文档

07_FactoryProgram

【程序说明】


  • 综合性工程,测试板载功能,这个例程需要注意下IDF的版本,V5.2.0以上可能扫描不到周围wifi,如果需要测试,可以使用版本较低的编译或者使用我们提供的BIN固件。

【硬件连接】


  • 使用USB线把板子接入电脑(参考示例01)

【运行效果】


  • 通过左右滑动进行切换页面,首先每隔1.5秒显示RGB颜色,可以通过这个观察屏幕有没有问题

ESP32-S3-Touch-AMOLED-1

  • 显示完RGB之后,将会自动跳转到时钟界面

ESP32-S3-Touch-AMOLED-1

  • 通过左滑动界面,可以看到该页面是一些板载硬件信息

ESP32-S3-Touch-AMOLED-1

  • 再次左滑界面,可以看到该界面是功能界面

ESP32-S3-Touch-AMOLED-1

  • 可以点击WIFI标志,进入到WIFI测试界面,然后点击Scan按钮进行扫描周围WIFI

ESP32-S3-Touch-AMOLED-1

  • 点击exit返回上一界面然后点击BLE标志,进入到BLE测试界面,再点击Scan按钮进行扫描周围BLE

ESP32-S3-Touch-AMOLED-1