跳到主要内容

ESP-IDF 开发

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

ESP-IDF 入门教程

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

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

配置开发环境

备注

以下教程基于 Windows 开发环境,使用 VSCode 进行开发。

注意

注意:ESP-IDF 从 V5.1 版本后才开始支持 ESP32-C6。安装 ESP-IDF 时需选择 V5.1 以上版本。

请参考 微雪 ESP-IDF 入门教程 - 第 1 节 搭建环境 完成 ESP-IDF 开发环境配置。

运行乐鑫官方示例程序

官方例程使用教程

创建例程( 示例 )

  • 使用快捷键 F1 ,输入

    esp-idf:show examples projects

    ESP32-C6 TO Program 1.webp

  • 选择你当前的 IDF 版本

    ESP32-C6 TO Program 2.webp

  • 以 Hello world 例程为例

    • ① 选择对应例程
    • ② 其 readme 会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
    • ③ 点击创建例程

    ESP32-C6 TO Program 3.webp
    选择放置例程的路径,要求无例程同名文件夹
    ESP32-C6 TO Program 4.webp

修改 COM 口

  • 此处显示使用对应的 COM 口,点击可以修改对应 COM 口

  • 请根据设备对应 COM 口进行选择,建议优先使用 USB 对应的 COM 口(可通过设备管理器查看)

  • 若出现下载失败的情况请点击复位按键 1 秒以上,等待 PC 端重新识别到设备后再次下载

    ESP32-C6 TO Program 5.webp

  • 选择使用的工程或者例程

    ESP32-C6 TO Program 6.webp

  • 然后我们的 COM 口就修改好了

修改驱动对象

  • 此处显示的是使用的驱动对象,点击可以修改对应驱动对象

  • 选择使用的工程或者例程

    ESP32-C6 TO Program 7.webp

  • 点击后需要稍等片刻

    ESP32-C6 TO Program 8.webp

  • 选择我们需要驱动的对象,也就是我们的主芯片为 ESP32C6

    ESP32-C6 TO Program 9.webp

  • 选择 openocd 的路径,这里对我们没有影响,所以我们随便选择一个即可

    ESP32-C6 TO Program 10.webp

其余状态栏简介

  • ①SDK 配置编辑器,ESP-IDF 很多功能与配置可以在其内修改
  • ② 全部清理,清空所有编译文件,
  • ③ 编译
  • ④ 当前下载方式,默认为 UART
  • ⑤ 烧录当前固件,请在编译后进行
  • ⑥ 打开串口监视器,用于查看串口信息
  • ⑦ 编译,烧录,打开串口监视器 一体按键(调试时最常用)

ESP32-C6 TO Program 11.webp

编译、烧录、串口监视

  • 点击我们之前介绍的 编译,烧录,打开串口监视器按键

    ESP32-C6 TO Program 12.webp

  • 编译可能需要较长时间才能完成,尤其是在第一次编译时。

    ESP32-C6 TO Program 13.webp

  • 在此过程中,ESP-IDF 可能会占用大量 CPU 资源,因此可能会导致系统卡顿。

  • 若是新工程首次烧录程序,将需要选择下载方式,选择 UART

    ESP32-C6 TO Program 14.webp

  • 后续也可在 下载方式 处进行修改(点击即可弹出选项)

    ESP32-C6 TO Program 15.webp

  • 因为板载自动下载电路,无需手动操作即可自动下载

    ESP32-C6 TO Program 16.webp

  • 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示 10S 后重启

    ESP32-C6 TO Program 17.webp

示例演示

Hello Word

官方示例路径:get-started -> hello_world

示例效果:在 TERMINAL 窗口以 10 秒间隔输出 Hello world!

软件操作
  • 根据上方教程创建官方示例 hello_world ( 创建示例 )
  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

ESP32-C6 TO Program 17.webp

RGB

官方示例路径:get-started -> blink

示例效果:板载 RGB 灯珠以 1 秒间隔进行闪烁

软件操作
  • 根据上方教程创建官方示例 blink ( 创建示例 )
  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

ESP32-C6 TO Sample 5.webp

UART

官方示例路径:peripherals -> uart-> uart_async_rxtxtasks

示例效果:短接 GPIO4 与 GPIO5 情况下进行 UART 的数据自收发

硬件连接
ESP32-C6ESP32-C6(同一块)
GPIO4GPIO5
软件操作
  • 根据上方教程创建官方示例 uart_async_rxtxtasks( 创建示例 )
  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

ESP32-C6 TO Sample 8.webp

  • 根据使用的 GPIO 进行硬件连接

    ESP32-C6 TO Sample 6.webp

  • 可转到定义文件中查看实际使用的 GPIO(选中 GPIO_NUM_4 -> 右键 -> Go to Definition

    ESP32-C6 TO Sample 7.webp

Bluetooth

官方示例路径:bluetooth -> bluedroid -> ble -> gatt_server

示例效果:ESP32-C6 与手机端蓝牙调试助手进行数据传输

软件操作
  • 在手机端安装 蓝牙调试助手
  • 根据上方教程创建官方示例 gatt_server( 创建示例 )
  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 蓝牙名称以及 UUID,蓝牙名称为 ESP_GATTS_DEMO

ESP32-C6 TO Sample 25.webp

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

    ESP32-C6 TO Sample 26.webp

  • 在手机端连接 ESP_GATTS_DEMO 蓝牙设备

    ESP32-C6 TO Sample 27.webp

  • 连接成功效果如下

    ESP32-C6 TO Sample 28.webp

  • 根据程序中 UUID 的值可知为下方两个服务器,选择其中一个进行上行发送

    ESP32-C6 TO Sample 29.webp

  • ESP32-C6 接收到数据

    ESP32-C6 TO Sample 30.webp

WIFI

官方示例路径:wifi-> getting_started-> station 示例效果:ESP32-C6 连接 WIFI

软件操作
  • 根据上方教程创建官方示例 station( 创建示例 )
  • 修改程序内容,使其连接上所需 WiFi
  • 进入 Kconfig.projbuild 文件

ESP32-C6 TO Sample 31.webp

  • 将原本的 WiFi SSIDWiFi Password 修改为要连接的 WiFi 信息

    ESP32-C6 TO Sample 32.webp

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

    ESP32-C6 TO Sample 33.webp

  • 可查看 CONFIG_ESP_WIFI_SSID 的值

  • 进入 station example main.c 文件

    ESP32-C6 TO Sample 34.webp

  • 右键转到定义

    ESP32-C6 TO Sample 35.webp

  • 可看到为此前设置的值

    ESP32-C6 TO Sample 36.webp

Zigbee

官方示例 1 路径:Zigbee-> light_sample-> HA_on_off_switch

官方示例 2 路径:Zigbee-> light_sample-> HA_on_off_light

示例效果:两块 ESP32-C6,使用其中一块(烧录 HA_on_off_switch 程序)的 BOOT 按键控制另一块的 RGB 灯珠的亮灭

注:请先往一块烧录 HA_on_off_switch 程序,再往另一块烧录 HA_on_off_light 程序

软件操作 1
  • 根据上方教程创建官方示例 HA_on_off_switch( 创建示例 )
  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

ESP32-C6 TO Sample 37.webp

软件操作 2
  • 根据上方教程创建官方示例 HA_on_off_light( 创建示例 )

  • 程序兼容 ESP32-C6,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象,点击编译并烧录即可运行程序 (需要等待片刻,让两块芯片建立连接)

    ESP32-C6 TO Sample 38.webp

  • 若一直处于以下未连接的情况 , 则可能是由于这个设备有残留的其他网络信息,可以擦除设备信息( 擦除教程),再重新组网。

    ESP32-C6 TO Sample 39.webp

JTAG 调试

软件操作
  • 创建需要调试的示例,本示例使用官方示例 hello_world ( 创建示例 )

  • 修改 launch.json 文件

    ESP32-C6 TO JTAG 1.webp

  • 输入以下内容

    {
    "version": "0.2.0",
    "configurations": [
    {
    "name": "GDB",
    "type": "cppdbg",
    "request": "launch",
    "MIMode": "gdb",
    "miDebuggerPath": "${command:espIdf.getXtensaGdb}",
    "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
    "windows": {
    "program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
    },
    "cwd": "${workspaceFolder}",
    "environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
    "setupCommands": [
    { "text": "target remote :3333" },
    { "text": "set remote hardware-watchpoint-limit 2"},
    { "text": "mon reset halt" },
    { "text": "thb app_main" },
    { "text": "flushregs" }
    ],
    "externalConsole": false,
    "logging": {
    "engineLogging": true
    }
    }
    ]
    }

ESP32-C6 TO JTAG 2.webp

  • 程序兼容 ESP32-C6,无需修改程序内容即可使用
  • 修改好 COM 口及驱动对象 (请使用 USB 接口,UART 接口并不支持 JTAG 调试,对应的 COM 口可通过设备管理器查看) ,点击编译并烧录即可运行程序

ESP32-C6 TO Program 17.webp

  • 点击快捷键 F1 ,输入

    ESP-IDF:Device configuration

    ESP32-C6 TO JTAG 3.webp

  • 选择 OpenOcd Config Files

    ESP32-C6 TO JTAG 4.webp

  • 输入 board/esp32c6-builtin.cfg (若默认是这个,就直接回车就可以)

    board/esp32c6-builtin.cfg

    ESP32-C6 TO JTAG 5.webp

  • 拉伸窗口宽度,直至下方显示 [OpenOCD Server]

    ESP32-C6 TO JTAG 6.webp

  • 点击 [OpenOCD Server] ,选择 Start OpenOCD

    ESP32-C6 TO JTAG 7.webp

  • 开启成功如下

    ESP32-C6 TO JTAG 8.webp

  • 进入调试功能,点击调试

    ESP32-C6 TO JTAG 9.webp

  • 成功进入调试界面

    ESP32-C6 TO JTAG 10.webp

擦除设备 Flash

  • 解压软件资源包(Flash 调试软件

  • 打开 flash_download_tool_3.9.5.exe 软件,选择 ESP32-C6 及 UART

    ESP32-C6 TO Erase Flash 0.webp

  • 选择 UART 的端口号,点击 START (不选择任何 bin 文件)

    ESP32-C6 TO Erase Flash 1.webp

  • 等待烧录完成,点击擦除

    ESP32-C6 TO Erase Flash 2.webp

  • 等待擦除完成

    ESP32-C6 TO Erase Flash 3.webp