跳到主要内容

ESP-IDF 开发

本章节包含以下两部分,请按需阅读:

ESP-IDF 入门教程

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

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

配置开发环境

备注

以下环境设置适用于 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-C6-Touch-LCD-1.83 ,建议 Espressif IDF 版本 ≥ v5.5.0。
    • ESP-IDF 容器安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。
    • ESP-IDF 所需的工具安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。

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

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

    安装进度

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

    安装成功

注意

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

示例程序

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

lvgl_brookesia_01

本示例在使用lvgl 以及 brookesia组件构建APP风格的界面,可独立开发和安装各种应用程序。

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图1
ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图2
ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图3
ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图4
ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图5
ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例1 图6

i2s_es7210_rec_02

本示例使用ES7210编码芯片进行录音测试,音频文件保存在TF卡根目录下

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例2 图1

代码解释

  • 初始化TF卡以及初始化ES7210芯片 :

      /* Init I2C bus to configure ES7210 and I2S bus to receive audio data from ES7210 */
    i2s_chan_handle_t i2s_rx_chan = es7210_i2s_init();
    /* Create ES7210 device handle and configure codec parameters */
    es7210_codec_init();
    /* Mount SD card, the recorded audio file will be saved into it */
    sdmmc_card_t *sdmmc_card = mount_sdcard();
  • 开始录音 :

     esp_err_t err = record_wav(i2s_rx_chan);

mp3_play_03

本示例使用ES8311播放TF中的MP3音频,音频名称需设置为1.MP3

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例3 图1

代码解释

  • 初始化TF卡以及初始化8311芯片,并初始化MP3播放库 :

      sd_card_init();
    ESP_ERROR_CHECK(esp_board_init(16000, 1, 16));
    //esp_sdcard_init("/sdcard", 10);
    Audio_Play_Init();
  • 播放MP3 :

      Audio_Play_Music("file://sdcard/1.mp3");

lvgl_example_04

本示例移植LVGL,并播放LVGL demo

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例4 图1

代码解释

  • 初始化I2C,lcd,触摸IC以及lvgl :

      i2c_master_init();

    lcd_driver_init();
    touch_driver_init();
    lvgl_driver_init();
  • 使用lvgl互斥锁加载lvgl 官方demo

      lvgl_port_lock(0);
    lv_demo_stress();
    lvgl_port_unlock();

AXP2101_05

本示例驱动AXP2101,并打印电池相关信息

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例5 图1

代码解释

  • 初始化I2C以及AXP2101 :

      ESP_ERROR_CHECK(i2c_init());
    ESP_LOGI(TAG, "I2C initialized successfully");

    ESP_ERROR_CHECK(pmu_init());
  • 创建打印任务

     xTaskCreate(pmu_hander_task, "App/pwr", 4 * 1024, NULL, 10, NULL);

lvgl_image_06

本示例使用lvgl显示图片,可以左右滑动手势切换图片

ESP32-C6-Touch-LCD-1.83 ESP-IDF 示例6 图1

代码解释

  • 使用lvgl互斥锁初始化显示图片

     lvgl_port_lock(0);
    image_slider_init();
    lvgl_port_unlock();