ESP32-C5-Pico 使用教程

产品特性

  • 采用 ESP32-C5-MINI-1 系列模组,搭载 RISC-V 32 位处理器,主频高达 240MHz
  • 集成 384KB SRAM、320KB ROM 和 4MB Flash
  • 集成 2.4GHz 与 5GHz 双频 Wi-Fi、Bluetooth 5 (LE) 以及 IEEE 802.15.4 (支持 Zigbee 3.0 和 Thread) 无线通信,具备出色的射频性能
  • 板载电池充电管理模块,预留 3.7V GH1.25 锂电池接口,可外接电池进行供电
  • 采用正反可插拔的 USB Type-C 接口
  • 引出丰富的外设接口,邮票孔设计,方便焊接集成到用户自主设计的底板上
  • 支持多种低功耗工作状态,可灵活调节通信距离、数据率和功耗之间的平衡,以满足各种应用场景的功耗需求

资源接口


  1. ESP32-C5-MINI-1 模组
  2. TCA9554PWR GPIO扩展芯片,扩展出E1~E7等7个引脚
  3. 3.7V锂电池接口 GH1.25 2PIN连接器,可用于接入 3.7V 锂电池,支持充放电
  4. BOOT按键 复位时按下,进入下载模式
  5. RESET 按键 复位按键
  6. 电池反接警告灯
  7. RGB 指示灯
  8. 电源指示灯
  9. 充电指示灯
  10. USB Type-C接口 用于下载程序和串口调试

产品尺寸


引脚


Arduino 开发

本章节介绍 ESP32-C5-Pico 的 Arduino 开发环境,以及 examples/Arduino/examples 中提供的示例程序。

配置开发环境

1. 安装 Arduino IDE 和 ESP32 开发板支持包

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

安装 Arduino IDE 后,在“首选项 -> 附加开发板管理器网址”中添加 Espressif Arduino-ESP32 的开发板索引,并在“开发板管理器”安装支持 ESP32-C5 的 Arduino-ESP32 版本。安装完成后,在“工具 -> 开发板”中选择 ESP32C5 Dev Module

使用 USB 连接开发板,在“工具 -> 端口”中选择对应串口。除特别说明外,本目录的示例均使用串口监视器,波特率设为 115200

ESP32-C5 的 Arduino 支持依赖开发板包版本。若 IDE 中没有 ESP32-C5 开发板选项,请先升级 Espressif 的 Arduino-ESP32 开发板包,再编译示例。

2. 打开示例

每个示例目录中均有一个与目录同名的 .ino 主文件。使用 Arduino IDE 打开该 .ino 文件后即可编译、下载。06_Pico_CAN_SoftSPI 还包含同目录的 .cpp.h 文件;这些文件必须与主 .ino 保持在同一草图目录中。

安装库

00_Board_Info01_WS2812_RGB02_TCA9554_IO_Expander03_WiFi_DualBand04_UART_Loopback06_Pico_CAN_SoftSPI 仅依赖 Arduino-ESP32 开发板包自带的组件。

05_1.83inch_Touch_LCD_LVGL_GFX 需要下列图形库。本工程已在 examples/Arduino/libraries 中提供匹配版本,建议直接使用该目录中的库,避免 API 版本不一致。

版本用途安装方式
lvgl8.4.0图形界面和触摸输入将 libraries/lvgl 安装为 Arduino 库
GFX Library for Arduino1.6.5ST7789 显示屏驱动将 libraries/GFX_Library_for_Arduino 安装为 Arduino 库

可在 Arduino IDE 中通过“项目 -> 加载库 -> 添加 .ZIP 库”安装库压缩包,或将上述两个目录复制到 Arduino Sketchbook 的 libraries 目录后重启 IDE。

版本兼容性

触摸屏示例基于 LVGL 8.4.0 的显示和输入设备 API 编写,不能直接改用 LVGL 9。请同时使用工程内的 LVGL 8.4.0 和 Arduino_GFX 1.6.5。

示例程序

示例程序位于本目录。带有外部接口的示例需要连接相应设备或总线后再运行。

示例程序说明
00_Board_Info通过串口输出 ESP32-C5 芯片、Flash、程序和内存信息。
01_WS2812_RGB控制板载 WS2812 RGB LED 依次显示红、绿、蓝、白和熄灭。
02_TCA9554_IO_Expander检测板载 TCA9554,并依次驱动可访问的 6 路扩展 IO。
03_WiFi_DualBand扫描 Wi-Fi 网络,显示信道和频段,并可连接指定网络。
04_UART_Loopback使用 UART1 发送和接收数据,验证串口回环。
05_1.83inch_Touch_LCD_LVGL_GFX驱动板载 1.83 英寸触摸屏,完成颜色自检和触摸绘制。
06_Pico_CAN_SoftSPI通过软件 SPI 驱动 MCP2515,演示 125 kbit/s CAN 收发。

00_Board_Info

程序在启动后打印芯片型号、芯片修订版本、CPU 频率、Flash 容量、已编译程序大小、剩余堆内存和基础 MAC 地址,随后保持运行。该示例无需额外硬件,是验证开发板连接、下载和串口配置的首选示例。


01_WS2812_RGB

板载 WS2812 RGB LED 的数据引脚为 GPIO27。程序通过 Arduino-ESP32 的 rgbLedWriteOrdered() 接口,将亮度设为 32,并每秒切换一次红、绿、蓝、白和熄灭状态;串口同步输出当前 RGB 值。

此示例不依赖第三方库。若 LED 颜色与预期不一致,可检查 COLOR_ORDER 是否需要与实际 LED 的颜色顺序匹配。


02_TCA9554_IO_Expander

板载 TCA9554 IO 扩展器使用 I2C,配置如下:

信号ESP32-C5-Pico 引脚
SDAGPIO23
SCLGPIO24
I2C 地址0x20
总线频率100 kHz

程序首先检测 0x20 地址的器件,再将扩展器配置为输出,并依次把 EXT_IO1 到 EXT_IO6 置高,每路保持 1 秒。可使用万用表或逻辑分析仪观察扩展 IO 排针。若检测失败,请检查板载器件及 I2C 引脚连接状态。


03_WiFi_DualBand

该示例将芯片设置为 STA 模式,扫描可用网络,并在串口中列出 RSSI、信道、安全状态和频段:信道 1 至 14 标记为 2.4 GHz,其他信道标记为 5 GHz。

如需测试联网,请先修改源码顶部的配置:

static const char *WIFI_SSID = "MySSID";
static const char *WIFI_PASSWORD = "MyPassWord";

上传后,程序最多等待 20 秒连接指定 Wi-Fi,并打印 IP 地址、RSSI、信道和频段;连接断开时会重新扫描网络。


04_UART_Loopback

此示例使用 UART1 进行自回环测试,实际初始化配置如下:

信号GPIO参数
UART1 TXGPIO0115200、8N1
UART1 RXGPIO1115200、8N1

用导线将 GPIO0 与 GPIO1 相连后上传程序。程序每两秒通过 TX 发送一条递增计数消息,并在 RX 收到同一消息时打印 [RX Receive]


05_1.83inch_Touch_LCD_LVGL_GFX

该示例使用 Arduino_GFX 驱动 240 x 284 的 1.83 英寸触摸 LCD,使用 LVGL 8.4.0 建立显示和触摸输入设备。触摸控制器为 CST816,显示控制器为ST7789。

功能信号GPIO / 地址
LCD 软件 SPISCLK / MOSI / CS / DC / RST / BL7 / 8 / 9 / 10 / 15 / 25
触摸 I2CSDA / SCLGPIO23 / GPIO24
触摸控制RST / INTGPIO26 / GPIO5
CST816 地址I2C0x15
TCA9554 地址I2C0x20

启动时程序会闪烁背光、扫描 I2C 总线、依次显示红黄蓝绿白五种纯色,再初始化 LVGL。进入主界面后,可在白色画布上触摸绘制黑点。编译前应按安装库中的版本安装 LVGL 和 Arduino_GFX。


06_Pico_CAN_SoftSPI

注意

因为 MCP2515 的 SCK 默认使用 GPIO6,但是板载 GPIO6 用于电池 ADC 检测,如果需要连接 Pico-CAN-B,需要断开 GPIO6 与 BAT_ADC 的连接

将 Pico-CAN-B 设备连接至 ESP32-C5-Pico

Pico-CAN-B 连接 USB-CAN-A 之后上电


MCP2515 信号ESP32-C5-Pico GPIO
SCKGPIO6
MISOGPIO4
MOSIGPIO7
CSGPIO5

程序将 MCP2515 配置为 125 kbit/s @ 16 MHz、正常模式和接收全部报文。每秒发送一次标准帧:CAN ID 0x123,数据为 00 11 22 33 44 55 66 77;收到报文时会在串口打印接收 ID 和数据。

MCP2515 仅为 CAN 控制器,必须配合 CAN 收发器和正确终端电阻接入 CAN 总线。示例中的速率配置只适用于 16 MHz MCP2515 模块;使用其他晶振频率时需修改寄存器参数。

  • 数据接收:使用 USB-CAN-A_TOOL 进行调试


  • 数据发送:使用串口调试助手查看打印的数据(也可使用 Arduino 串口监视器查看)



常见问题

找不到 ESP32-C5 开发板

更新 Arduino-ESP32 开发板包,确认已选择支持 ESP32-C5 的版本;旧版开发板包不会显示 ESP32-C5 选项。

触摸屏示例无法编译

确认安装的是项目内 lvgl 8.4.0 和 GFX Library for Arduino 1.6.5,且没有被 Arduino Sketchbook 中的同名其他版本覆盖。

Wi-Fi 示例无法连接

确认已将 WIFI_SSID 和 WIFI_PASSWORD 修改为实际网络凭据,并确认网络允许 ESP32-C5 使用的频段。串口中的扫描结果可用于确认目标网络是否可见。

CAN 无通信

先确认 GPIO 连线与本页表格一致,再检查外部收发器、电源、总线极性和终端配置。CAN 示例假设 MCP2515 为 16 MHz。


ESP-IDF 开发

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

ESP-IDF 入门教程

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

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

配置开发环境

备注

以下内容以 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 版本(图示仅为参考,请以实际为准)。


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


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

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

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


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


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


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


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


安装 Visual Studio Code 与 ESP-IDF 扩展

  1. 下载并安装 Visual Studio Code

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

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

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


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

ESP-IDF 示例程序

本目录包含 ESP32-C5-Pico 的 ESP-IDF 示例工程。工程当前配置的目标芯片为 esp32c5,Flash 容量为 4 MB。

使用前准备

  1. 安装并初始化支持 ESP32-C5 的 ESP-IDF。建议使用 ESP-IDF 6.0.2。
  2. 以 ESP-IDF 已初始化的终端打开任意示例目录。
  3. 将开发板通过 USB 连接电脑,确认其串口号,例如 Windows 下的 COM5

每个示例均为独立工程。进入相应目录后执行:

idf.py set-target esp32c5
idf.py build
idf.py -p COM5 flash monitor

请将 COM5 替换为实际串口号。退出串口监视器请按 Ctrl-]。首次构建时,组件管理器会自动下载工程声明的依赖,因此需要网络连接。

示例程序

01_HelloWorld

本示例在串口打印 Hello world!、芯片特性、Flash 容量和最小可用堆内存;随后每秒输出一次重启倒计时,倒计时结束后自动重启。可用于确认 ESP-IDF 环境、烧录链路和串口监视器工作正常。


02_RGB

本示例驱动板载可寻址 RGB 灯珠。当前 sdkconfig 选择 RMT 驱动方式,数据引脚为 GPIO27,闪烁周期为 1000 ms。灯珠点亮时的 RGB 值为 (16, 16, 16)


03_UART

本示例使用 UART1 进行异步收发。发送任务每隔 2 秒发送字符串 Hello waveshare;接收任务持续读取并把收到的数据输出到串口监视器。

硬件连接

将 GPIO4 与 GPIO5 短接,形成自发自收回环:

ESP32-C5-PicoESP32-C5-Pico(同一块开发板)
GPIO4(UART1 TX)GPIO5(UART1 RX)

当前通信参数为 115200 bps、8 数据位、无校验、1 停止位、无硬件流控。可在 main/Kconfig.projbuild 或 idf.py menuconfig 中调整波特率和任务栈大小;GPIO4、GPIO5 在源码中直接定义。


04_WIFI

本示例连接 Wi-Fi 后,通过 HTTP 请求天气 API,获取北京的实时天气数据并将服务器响应输出到串口。一次请求完成后等待 30 分钟,再发起下一次请求。

烧录前执行 idf.py menuconfig,在 Example Connection Configuration 中填写 Wi-Fi 的 SSID 和密码。开发板连接 2.4 GHz 网络时,请确认路由器已启用对应频段。

注意:示例中的天气 API 地址、位置和访问密钥在 main/main.c 中固定,且使用明文 HTTP。用于产品或公开网络前,应替换为自己的密钥,并使用 HTTPS、证书校验及安全的密钥管理方式。


05_Bluetooth

本示例启动 BLE GATT Server,广播名称为 ESP_GATTS_DEMO,等待手机或其他 BLE GATT Client 连接。服务包含两个 16 位 UUID:

服务 UUID特征 UUID功能
0x00FF0xFF01读、写、通知、指示
0x00EE0xEE01读、写、通知

使用手机 BLE 调试工具 扫描并连接 ESP_GATTS_DEMO 后,可读取或写入数据。 


06_TCA9554_IO_Expander

本示例演示通过 I2C 控制 TCA9554 八位 GPIO 扩展器,使用 espressif/esp_io_expander_tca9554 组件。I2C0 的 SDA 为 GPIO23、SCL 为 GPIO24,器件地址配置为 0x20

程序将 TCA9554 的 P0、P1 配置为输出,将 P2、P3 配置为输入;P0、P1 每 500 ms 在高低电平间切换,并输出 P2、P3 的当前状态。


07_1.83inch_Touch_LCD_LVGL

本示例驱动 1.83 英寸触摸 LCD,使用 ST7789 显示控制器和 CST816 触摸控制器,并基于 LVGL 9 显示三张图片。左右滑动屏幕可循环切换图片。

显示分辨率为 240 × 284,显示接口为 SPI2,像素时钟为 40 MHz;触摸接口为 I2C0,频率为 400 kHz。工程依赖 esp_lvgl_portesp_lcd_touch_cst816s 和 lvgl,会在首次构建时由组件管理器获取。

屏幕连接

功能ESP32-C5-Pico GPIO
LCD SCLKGPIO7
LCD MOSIGPIO8
LCD CSGPIO9
LCD DCGPIO10
LCD RSTGPIO15
LCD 背光GPIO25
触摸 I2C SCLGPIO24
触摸 I2C SDAGPIO23
触摸 INTGPIO5
触摸 RSTGPIO26

该工程的屏幕和触摸引脚在 main/lcd_driver/lcd_driver.h 与 main/touch_driver/touch_driver.h 中定义。使用不同屏幕或接线时,请先修改这些定义,再重新构建烧录。


相关资料

1. 硬件资料

开发板设计文件

2. 技术手册

3. 软件开发资源

4. 调试工具


技术支持

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

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841