【产品简介】
[] ESP32-C6-Pico 是一款体积小巧,搭载多种数字接口的微控制器开发板。
[] 在硬件上,采用 ESP32-C6-MINI-1 模组,其搭载有 RISC-V 32 位单核处理器,支持高达 160 MHz 的时钟频率,内置 320KB ROM、512KB HP SRAM、16KB LP SRAM 和 4 MB flash;引脚接口兼容 Raspberry Pi Pico 开发板,可兼容扩展多种外围设备,使用更方便。
[]在软件上,可选择 ESP-IDF 开发环境 或 Arduino IED来进行开发,从而可以轻松快速地入门,并将其应用于产品中。
【产品特性】
[] 采用 ESP32-C6-MINI-1 模组,搭载 RISC-V 32 位单核处理器,支持高达 160 MHz 的时钟频率
[] 集成 320KB ROM、512KB HP SRAM、16KB LP SRAM 以及 4MB Flash 存储器
[] 集成 2.4GHz Wi-Fi 6 和低功耗蓝牙 (Bluetooth LE) 双模无线通信,具有优越的射频性能
[] 采用 USB Type-C 接口,无需纠结正反插
[] 引出丰富的外设接口,引脚接口兼容 Raspberry Pi Pico 开发板,兼容性和扩展性强
[] 邮票孔设计,可直接焊接集成到用户自主设计的底板上
[] 支持多种低功耗工作状态,可调节通信距离、数据率和功耗之间的平衡,满足各种应用场景的功耗需求
[] 请注意,为保证设备功能完整性,请务必调用提供的 WS_TCA9554PWR 文件将 GPIO22(SDA)和 GPIO23(SCL)设定为 I2C 功能进行GPIO扩展
[] 请注意, GPIO22(SDA)和 GPIO23(SCL)已用于 TCA9554PWR,当下仅可连接 I2C 从设备在该引脚,不允许再将这两个引脚用于其他功能
【功能框图】

【资源接口】

【引脚分布】

【产品尺寸】
【TCA9554PWR 函数说明】
[] 请注意,要使用 EXIO1 ~ EXIO7 时必须引用相应的库文件( VScode 下添加 TCA9554PWR 库 、 Arduino IDE 下添加 TCA9554PWR 库 )
| 函数功能 | 函数名称 | 函数参数 | 功能 |
| 初始化 TCA9554PWR | TCA9554PWR_Init | uint8_t PinState | 将 TCA9554PWR 所有引脚以 PinState 进行初始化模式 |
|---|---|---|---|
| 操作寄存器 | Read_REG | uint8_t REG | 读取 TCA9554PWR 的 REG 寄存器中的值 |
| Write_REG | uint8_t REG,uint8_t Data | 向 TCA9554PWR 的 REG 寄存器写入数据Data | |
| 初始化 EXIO 模式 | Mode_EXIO | uint8_t Pin,uint8_t State | 设置 TCA9554PWR 的 Pin 脚的模式 |
| Mode_EXIOS | uint8_t PinState | 设置 TCA9554PWR 所有引脚的模式 | |
| 读取 EXIO 电平状态 | Read_EXIO | uint8_t Pin | 读取 TCA9554PWR 的 Pin 脚的输入电平 |
| Read_EXIOS | void | 读取 TCA9554PWR 所有引脚的输入电平 | |
| 设置 EXIO 输出电平 | Set_EXIO | uint8_t Pin,uint8_t State | 设置 TCA9554PWR 的 Pin 脚的输出电平 |
| Set_EXIOS | int8_t PinState | 设置 TCA9554PWR 所有引脚的输出电平 | |
| 翻转 EXIO 电平状态 | Set_Toggle | uint8_t Pin | 翻转 TCA9554PWR 的 Pin 脚的输出电平 |
【ESP-IDF下使用】
以下开发系统默认为Windows,推荐使用VSCode插件进行开发
【使用VSCode插件开发】
[] 安装VSCode
[] 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载

[] 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
[] 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
[] 第三项开启后,选择打开方式时,可以直接选择VSCode

【安装Espressif IDF插件】
[] 注:当前插件最新版本为V1.6.4,为体验一致,用户可以选择与我们一样的版本
[] 打开VSCode,使用快捷键 Shift+Ctrl+X ,进入插件管理器

在搜索栏中,输入 Espressif IDF ,选择对应的插件点击 install即可


使用快捷键 F1 ,输入
esp-idf: configure esp-idf extension

选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)

选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器

选择想要现在的ESP-IDF版本,我们选择最新的V5.1.1(注意ESP-IDF从V5.1版本后才开始支持ESP32-C6)
下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,

[] 注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
[] 配置完成后,点击 install 进行下载

进入下载页面,其会自动安装对应工具与环境,稍等片刻即可

安装完成后,会进入以下界面,说明安装完成

【官方例程使用教程】
【创建例程】
使用快捷键 F1 ,输入
esp-idf:show examples projects

选择你当前的IDF版本

【以Hello world例程为例】
[] 选择对应例程
[] 其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
[] 点击创建例程

选择放置例程的路径,要求无例程同名文件夹

【修改COM口】
[] 此处显示使用对应的COM口,点击可以修改对应COM口
[] 请根据设备对应COM口进行选择
[] 若出现下载失败的情况请点击复位按键1秒以上,等待 PC 端重新识别到设备后再次下载

选择使用的工程或者例程

[] 然后我们的COM口就修改好了
修改驱动对象
[] 此处显示的是使用的驱动对象,点击可以修改对应驱动对象
[] 选择使用的工程或者例程

点击后需要稍等片刻

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

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

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

编译可能需要较长时间才能完成,尤其是在第一次编译时。
在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
若是新工程首次烧录程序,将需要选择下载方式,选择 UART

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

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

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

VScode 下添加 EXIO 控制程序
[] 使用官方示例 blink 进行修改步骤演示
[] 官方示例路径:get-started -> blink
[] 根据上方教程创建官方示例 blink
[] 进入项目 main 文件夹目录


下载 EXIO控制程序

将 EXIO 控制程序 拷贝至 main 文件夹下

引用 TCA9554PWR 文件
#include "TCA9554PWR.h"

当前即初始化TCA9554PWR后控制程序
如下,添加以下程序实现 EXIO1~EXIO7 依次输出高电平
uint8_t count = 0; TCA9554PWR_Init(0x00);
Set_EXIOS(0x01<<count); // Set 7 EXIO loops to output high levels
count++;
if(count == 7)
count = 0;
uint8_t State = Read_EXIO(TCA9554_EXIO3); // Read EXIO3's input level
printf("EXIO3: %d\r\n",State); 
选择好 COM 口及驱动对象即可烧录程序
效果如下

【示例演示】
Hello Word
[] 官方示例路径:get-started -> hello_world
[] 示例效果:在 TERMINAL 窗口以10秒间隔输出 Hello world!
软件操作
[] 根据上方教程创建官方示例 hello_world
[] 程序兼容ESP32-C6,无需修改程序内容即可使用
[] 修改好COM口及驱动对象,点击编译并烧录即可运行程序

GPIO
[] 官方示例路径:peripherals -> gpio -> generic_gpio
[] 示例效果:LED以1秒间隔进行闪烁
硬件连接
| ESP32-C6 | LED |
| GPIO18(或GPIO19) | LED+ |
| GND | LED- |
软件操作
[] 根据上方教程创建官方示例 generic_gpio ( 创建示例 )
[] 程序兼容ESP32-C6,无需修改程序内容即可使用
[] 修改好COM口及驱动对象,点击编译并烧录即可运行程序

进入程序宏定义位置,查看实际处理的GPIO

右键,进入GPIO定义位置

实际处理的GPIO为GPIO18、GPIO19

RGB
[] 官方示例路径:get-started -> blink
[] 示例效果:板载RGB灯珠以1秒间隔进行闪烁
软件操作
[] 根据上方教程创建官方示例 blink
[] 程序兼容ESP32-C6,无需修改程序内容即可使用
[] 修改好COM口及驱动对象,点击编译并烧录即可运行程序
UART
[] 官方示例路径:peripherals -> uart-> uart_async_rxtxtasks
[] 示例效果:短接GPIO4与GPIO5情况下进行 UART 的数据自收发
硬件连接
| ESP32-C6 | ESP32-C6(同一块) |
| GPIO4 | GPIO5 |
软件操作
[] 根据上方教程创建官方示例 uart_async_rxtxtasks
[] 程序兼容ESP32-C6,无需修改程序内容即可使用
[] 修改好COM口及驱动对象,点击编译并烧录即可运行程序

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

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

I2C
[] 官方示例路径:peripherals -> lcd-> i2c_oled
[] 示例效果:点亮0.96inch OLED (A),显示一段字符
硬件连接
| 0.96inch OLED (A) | ESP32-C6 |
| VCC | 3V3 |
| GND | GND |
| DIN | GPIO3 |
| CLK | GPIO4 |
| CS | GND |
| D/C | GND |
| RES | GPIO9 |
软件操作
[] 根据上方教程创建官方示例 i2c_oled
[] 修改程序使之兼容0.96inch OLED (A)

适配0.96inch OLED (A),定义 RES 引脚为 GPIO9

修改好COM口及驱动对象,点击编译并烧录即可运行程序

效果如下

可查看实际使用的GPIO

SPI
官方示例路径:peripherals -> spi_master-> lcd
示例效果:在2.4inch LCD Module上动态显示图片
硬件连接
| 2.4inch LCD Module | ESP32-C6 |
| VCC | 3V3 |
| GND | GND |
| DIN | GPIO7 |
| CLK | GPIO6 |
| CS | GPIO0 |
| D/C | GPIO1 |
| RES | GPIO4 |
| BL | GPIO5 |
软件操作
右键VScode图标,以管理员身份运行VScode

根据上方教程创建官方示例 lcd
修改程序使之兼容2.4inch LCD Module

跳转到定义位置

当前使用的为ESP32-C6,屏蔽其他芯片定义

并宏定义 ESP32-C6 , CONFIG_IDF_TARGET_ESP32C6
//#define CONFIG_IDF_TARGET_ESP32 1 #define CONFIG_IDF_TARGET_ESP32C6 1

修改 D/C 使用IO

修改 D/C 使用IO,选择现有IO(原使用 GPIO10 与 GPIO9 改为 GPIO0 与 GPIO1)

修改背光

改为 gpio_set_level(PIN_NUM_BCKL, 1);

修改好COM口及驱动对象,点击编译并烧录即可运行程序

效果如下

Bluetooth
[] 官方示例路径:bluetooth -> bluedroid -> ble -> gatt_server
[] 示例效果:ESP32-C6与手机端蓝牙调试助手进行数据传输
软件操作
在手机端安装蓝牙调试助手
根据上方教程创建官方示例 gatt_server
程序兼容ESP32-C6,无需修改程序内容即可使用
蓝牙名称以及UUID,蓝牙名称为 ESP_GATTS_DEMO

修改好COM口及驱动对象,点击编译并烧录即可运行程序

在手机端连接 ESP_GATTS_DEMO蓝牙设备

连接成功效果如下

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

ESP32-C6接收到数据

WIFI
[] 官方示例路径:wifi-> getting_started-> station
[] 示例效果:ESP32-C6连接WIFI
软件操作
根据上方教程创建官方示例 station
修改程序内容,使其连接上所需WiFi
进入 Kconfig.projbuild 文件

将原本的 WiFi SSID 与 WiFi Password 修改为要连接的WiFi信息

修改好COM口及驱动对象,点击编译并烧录即可运行程序

可查看 CONFIG_ESP_WIFI_SSID的值
进入 station_ example_ main.c文件

右键转到定义

可看到为此前设置的值

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口及驱动对象,点击编译并烧录即可运行程序

软件操作2
根据上方教程创建官方示例 HA_on_off_light
程序兼容ESP32-C6,无需修改程序内容即可使用
修改好COM口及驱动对象,点击编译并烧录即可运行程序(需要等待片刻,让两块芯片建立连接)

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

JTAG 调试
软件操作
[] 创建需要调试的示例,本示例使用官方示例 hello_world
[] 修改 launch.json 文件

输入以下内容
{
"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,无需修改程序内容即可使用
修改好COM口及驱动对象(请使用 USB 接口,UART 接口并不支持JTAG调试,对应的COM口可通过设备管理器查看),点击编译并烧录即可运行程序

点击快捷键 F1,输入
ESP-IDF:Device configuration

选择 OpenOcd Config Files

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

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

点击 [OpenOCD Server],选择 Start OpenOCD

开启成功如下

进入调试功能,点击调试

成功进入调试界面

擦除设备Flash
解压软件资源包(Flash 调试软件)
打开 flash_download_tool_3.9.5.exe软件,选择ESP32-C6及UART

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

等待烧录完成,点击擦除

等待擦除完成

【搭建环境】
安装 Arduino IDE

安装完成后打开 Arduino IDE

进入首选项

添加 JSON 链接
https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json


将项目文件夹修改为 C:\Users\Spotpear\AppData\Local\Arduino15\packages(其中 Spotpear 为计算机用户名)

进入开发板管理器,搜索 esp32 ,在下方的 esp32 by Espressif Systems 中选择 3.0.0-alpha3 版本并点击安装(若不能正常安装可使用手机热点尝试)


安装完成重启 Arduino IDE 即可使用

若安装失败则展开
安装 3.0.0-alpha3 版本失败

下载资源文件
链接: https://pan.baidu.com/s/1u99HFx8lAyNLZzj7ja13lA 提取码: 0755

从资源管理器按路径 “c:\Users\Spotpear\AppData\Local\Arduino15\packages” 进入(其中 Spotpear 为计算机用户名,需要开启显示隐藏文件)

将上方下载的文件解压至 packages 文件夹下

重新执行安装操作

安装完成重启 Arduino IDE 即可使用

创建示例
[] 上方将项目文件夹更改为 c:\Users\Spotpear\AppData\Local\Arduino15\packages(其中Spotpear为计算机用户名) 后
[] 可通过文件下的项目文件夹中的示例进行例程创建

以下演示创建 RGB 闪烁的示例(处于File -> Sketchbook -> esp32 -> hardware -> esp32 -> 3.0.0-alpha3 -> libraries -> ESP32 -> examples -> GPIO 下的 BlinkRGB )

选择开发板和端口

搜索 esp32c6 ,选择 ESP32C6 Dev Module 和 下载端口

选择完成,点击上传,Arduino IDE 将编译并烧录该程序

上传完成,即可在开发板上看到现象

Arduino IDE 下添加 EXIO 控制程序
[] 使用官方示例 BlinkRGB 进行修改步骤演示
[] 根据上方教程创建官方示例 BlinkRGB
[] 为操作方便,将其另存到其他路径


下载 EXIO控制程序

进入刚另存的目录,将 EXIO控制程序 拷贝至 BlinkRGB 的项目文件夹下


在 BlinkRGB.ino 中引用 TCA9554PWR 文件

当前即可通过 EXIO 控制函数操作 EXIO1 ~ EXIO7
如下,在 setup() 与 loop() 中添加以下代码即可实现 EXIO1 到 EXIO7 依次输出高电平,并实时打印 EXIO3 的电平状态
TCA9554PWR_Init(0x00);
uint8_t count = 0;
while(1)
{
Set_EXIOS(0x01<<count); // Set 7 EXIO loops to output high levels
count++;
if(count == 7)
count = 0;
delay(1000);
uint8_t State = Read_EXIO(TCA9554_EXIO3); // Read EXIO3's input level
printf("EXIO3: %d\r\n",State);
} 
运行效果如下
