ESP32-C3的相关知识
ESP32-C3技术规格书
ESP32-C3技术参考手册
esp32-c3-wroom-02模组手册
ESP32-C3简介
- ESP-IoT-Solution 编程指南 介绍关于ESP32-C3的各类外设的IoT的应用案例。
- ESP-Jumpstart 用于快速构建 ESP32 产品
- ESP-IDF自定义菜单
- ESP-IDF组件使用
- 关于使用官方组件的方法
- 将公共组件转移至自己的项目中的方法。
- ESP32-C3 USB-JTAG接口的使用
- I2C通信协议
- SPI通信协议
- ADC测量
- SPI高级传输方法
- ESP-NOW 通信协议
- ESP_SOFTAP 模式
- Http服务器_Rustful
- ESP_IDF MQTT模块
- ESP-WIFI 保存配置信息
- ESP-IDF SPIFFS文件系统
- ESP-IDF JSON模块
- ESP-IDF NTP模块(sntp)
- ESP-IDF NVS 模块
- ESP-IDF 互斥锁
- ESP-IDF 低功耗模式
- ESP-IDF 监控器(调试)
ESP-IDF开发环境
ESP-IDF官方组件的使用方法
- 使用一个组件,首先要根据API文档,添加对应的
REQUIRES
或是PRIV_REQUIRES
在对应的项目的main
目录下的CMakeLists.txt
文件中添加REQUIRES。例如:cmakeidf_component_register(SRCS "main.c" INCLUDE_DIRS "." PRIV_REQUIRES esp_http_client esp_wifi)
- 在自已的项目中,添加对应的头文件(如
#include "esp_wifi.h"
),然后就可以使用了。如果上一步,没有做的话,这一步的头文件就不会被识别。 - 编译系统会把 esp_wifi 组件的公共头文件路径添加到当前组件的编译环境里。这样,在当前组件的源文件里就能直接包含 esp_wifi 组件的头文件,而无需指定完整路径。
- 编译时,会自动下载对应的组件。
说明:
- 编译系统会把 esp_wifi 组件纳入到当前组件的私有依赖列表中。这意味着在编译当前组件时,esp_wifi 组件的源文件会被编译,并且其生成的目标文件会被链接到当前组件里。
- 在 CMakeLists.txt 中使用
PRIV_REQUIRES esp_wifi
主要是为了在编译和链接阶段让当前组件能够使用 esp_wifi 组件的功能,包括访问其头文件和链接其库文件,而不是为了让 menuconfig 显示配置选项。
REQUIRES 和 PRIV_REQUIRES 的区别:
- REQUIRES:用于声明组件的公共依赖,这些依赖会被传递给依赖当前组件的其他组件。
- PRIV_REQUIRES:用于声明组件的私有依赖,这些依赖仅用于当前组件的编译和链接,不会被传递给其他组件。
通过一个具体的例子来说明 REQUIRES
和 PRIV_REQUIRES
在 ESP-IDF 中的实际应用。 示例项目结构 假设我们有一个简单的项目,包含以下组件: driver 组件:负责硬件驱动功能。 sensor 组件:负责传感器数据采集功能。 app 组件:主应用程序组件,使用了 driver 和 sensor 组件的功能。 项目结构如下:
project/
├── components/
│ ├── driver/
│ │ ├── CMakeLists.txt
│ │ ├── driver.h
│ │ └── driver.c
│ ├── sensor/
│ │ ├── CMakeLists.txt
│ │ ├── sensor.h
│ │ └── sensor.c
│ └── app/
│ ├── CMakeLists.txt
│ ├── app.h
│ └── app.c
└── CMakeLists.txt
组件功能和依赖关系
driver 组件:提供硬件驱动功能。 公共头文件 driver.h 提供了驱动的接口函数。
源文件 driver.c 实现了这些接口函数。没有依赖其他组件。
sensor 组件:负责传感器数据采集。
公共头文件 sensor.h 提供了传感器数据采集的接口函数。
源文件 sensor.c 实现了这些接口函数,并且在实现过程中调用了 driver 组件的功能。依赖于 driver 组件。
app 组件:主应用程序。
公共头文件 app.h 提供了应用程序的接口函数。 源文件 app.c 实现了这些接口函数,并且在实现过程中调用了 sensor 组件的功能。依赖于 sensor 组件。 CMakeLists.txt 文件的编写
driver/CMakeLists.txt
idf_component_register(
SRCS "driver.c"
INCLUDE_DIRS "."
)
driver 组件没有依赖其他组件,因此没有使用 REQUIRES 或 PRIV_REQUIRES。
sensor/CMakeLists.txt
idf_component_register(
SRCS "sensor.c"
INCLUDE_DIRS "."
PRIV_REQUIRES driver
)
sensor 组件在 sensor.c 中调用了 driver 组件的功能,但 sensor.h 中没有包含 driver.h。 因此,sensor 组件对 driver 的依赖是私有的,使用 PRIV_REQUIRES 声明。
app/CMakeLists.txt
idf_component_register(
SRCS "app.c"
INCLUDE_DIRS "."
REQUIRES sensor
)
app 组件在 app.c 中调用了 sensor 组件的功能,并且 app.h 中可能包含了 sensor.h。因此,app 组件对 sensor 的依赖是公共的,使用 REQUIRES 声明。
依赖关系的传递 app 组件通过 REQUIRES sensor 声明了对 sensor 组件的依赖。
sensor 组件通过 PRIV_REQUIRES driver 声明了对 driver 组件的依赖。
在编译时: app 组件的编译器会包含 sensor 组件的头文件路径。sensor 组件的编译器会包含 driver 组件的头文件路径,但 app 组件不会直接包含 driver 组件的头文件路径。
总结 REQUIRES:用于声明组件的公共依赖,这些依赖会被传递给依赖当前组件的其他组件。 PRIV_REQUIRES:用于声明组件的私有依赖,这些依赖仅用于当前组件的编译和链接,不会被传递给其他组件。 通过合理使用 REQUIRES 和 PRIV_REQUIRES,可以确保项目的依赖关系清晰,同时优化编译效率。
ESP32-C3的烧录方法
- 在开发中进行烧录,直接使用openOCD进行烧录。
- 在生产过程中进行烧录,使用JTAG接口进行烧录。(这是重点)
- 生产中烧录,一般在windows系统下,所以采用的工具也都是在windows下的。
- 使用USB转TTL工具进行烧录,如果是官方的开发板,内置了usb转ttl工具,也支持
自动烧录模式转换
,所以使用起来非常方便。 - 使用ESP32-C3芯片内置了JTAG接口,所以可以直接将
USB的四芯线(VCC,GND,D+,D-)
连接到ESP32-C3(18,19脚
)上,然后使用JTAG工具进行烧录。这种模式下不需要进入烧录模式。
ESP32-C3 USB-JTAG接口的使用
参考文档
视频教程-烧录方法
使用云烧录方案
云烧录方案 可以在没有开发环境的情况下,查看设备的运行信息。也可以用来烧录数据。非常方便。
- 先连接设备
- 再打开终端
- 就可以查看设备的运行信息。
烧录的重点
要将烧录的bin文件的烧录地址写对了。
序号 | 名称 | 地址 |
---|---|---|
1 | bootloader.bin | 0x0 |
2 | partitions.bin | 0x8000 |
3 | 开发程序.bin | 0x10000 |
以上三个,不能错误,否则烧录会报错。这三个文件,是烧录的要点,一个都不能少。文件保存于build
文件夹下。可以搜索一下开发目录下,一定可以找到。