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_Info、01_WS2812_RGB、02_TCA9554_IO_Expander、03_WiFi_DualBand、04_UART_Loopback、06_Pico_CAN_SoftSPI 仅依赖 Arduino-ESP32 开发板包自带的组件。
05_1.83inch_Touch_LCD_LVGL_GFX 需要下列图形库。本工程已在 examples/Arduino/libraries 中提供匹配版本,建议直接使用该目录中的库,避免 API 版本不一致。
| 库 | 版本 | 用途 | 安装方式 |
|---|---|---|---|
lvgl | 8.4.0 | 图形界面和触摸输入 | 将 libraries/lvgl 安装为 Arduino 库 |
GFX Library for Arduino | 1.6.5 | ST7789 显示屏驱动 | 将 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 引脚 |
|---|---|
| SDA | GPIO23 |
| SCL | GPIO24 |
| 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 = "MySID";
static const char *WIFI_PASSWORD = "MyPassWord";
上传后,程序最多等待 20 秒连接指定 Wi-Fi,并打印 IP 地址、RSSI、信道和频段;连接断开时会重新扫描网络。

04_UART_Loopback
此示例使用 UART1 进行自回环测试,实际初始化配置如下:
| 信号 | GPIO | 参数 |
|---|---|---|
| UART1 TX | GPIO0 | 115200、8N1 |
| UART1 RX | GPIO1 | 115200、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 软件 SPI | SCLK / MOSI / CS / DC / RST / BL | 7 / 8 / 9 / 10 / 15 / 25 |
| 触摸 I2C | SDA / SCL | GPIO23 / GPIO24 |
| 触摸控制 | RST / INT | GPIO26 / GPIO5 |
| CST816 地址 | I2C | 0x15 |
| TCA9554 地址 | I2C | 0x20 |
启动时程序会闪烁背光、扫描 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 |
|---|---|
| SCK | GPIO6 |
| MISO | GPIO4 |
| MOSI | GPIO7 |
| CS | GPIO5 |
程序将 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。