## 什么是 ESP-IDF ESP-IDF 是乐鑫官方的物联网开发框架,适用于 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC。它基于 C/C++ 语言提供了一个自给自足的 SDK,方便用户在这些平台上开发通用应用程序。ESP-IDF 目前已服务支持数以亿计的物联网设备,并已开发构建了多种物联网产品,例如照明、消费电子大小家电、支付终端、工控等各类物联网设备。 ## 特性 - **RTOS** **内核**,FreeRTOS 内核已进行优化,可支持多核,具有基于功能的堆分配器。 - **标准编程接口**,包含 POSIX 线程和其他 POSIX API、BSD 套接字、线程安全的 C/C++ 标准库,支持虚拟文件系统。 - **外设驱动程序**,包含 SPI,I(2)C,UART,GPIO,I(2)S,ADC,DAC,电容触摸板,定时器,LED 和电机 PWM,RMT,脉冲计数器,CAN/TWAI,SD/eMMC/SDIO 主机和 SDIO 从机,以太网驱动器。 - **Wi-Fi**,Wi-Fi 驱动程序已通过 Wi-Fi Alliance 认证,支持 WPA3、Wi-Fi Mesh 协议、ESP-NOW 点对点协议、ESP-LR 远程协议、嗅探模式和 SmartConfig 配置协议。 - **经典蓝牙和低功耗蓝牙**,包含蓝牙控制器和两个主机栈:Bluedroid(双模)和 NimBLE(仅低功耗蓝牙),支持符合标准的 Bluetooth LE Mesh,所有组件均通过蓝牙 SIG 认证。 - **网络协议**,用于 IPv4 和 IPv6 连接的 LwIP TCP/IP 栈,DHCP 客户端和服务器,TLS 客户端和服务器(最高 1.2 版本),HTTP 客户端和服务器,HTTP2 客户端,WebSocket 客户端,MQTT,mDNS,CoAP,ModBus,SNTP,SMTP。 - **电源管理**,适用于 MCU 低功耗模式以及 Wi-Fi、蓝牙低功耗模式的电源管理框架;动态频率调节,支持 ULP(超低功耗)协处理器。 - **存储**,具备分区管理器、容错和日志结构的键值存储 (NVS),支持加密、FAT 和 SPIFFS 文件系统。 - **安全性**,具备受硬件支持的安全性能,如 Flash 加密和安全启动,为 RSA、SHA 和 AES 提供加密加速器支持、以及 libsodium 和 micro-ecc 加密库。 - **网络配置**,使用 Bluetooth LE、Wi-Fi 和其他带外机制的设备加载统一配置框架。 - **构建系统**,基于 CMake 的构建系统,支持外部组件和外部应用项目。 - **开发工具**,包含 GCC 交叉工具链、基于 OpenOCD 的 JTAG 调试器、静态和动态足迹分析、内存泄漏检测器、核心转储崩溃分析器、兼容 Segger SystemView 工具的实时跟踪、Flash 和 eFuse 编程器、设备制造工具。 - **IDE 支持**,ESP-IDF 项目支持 Microsoft VS Code 插件和 Eclipse IDE 插件。 ## 安装(MacOS) ### 必备工具安装 ```Shell $ brew install cmake ninja dfu-util $ # 安装python3,如已经安装请忽略 $ brew install python3 ``` ```Shell $ # 如果安装时发生错误,可以尝试执行下面命令 $ # sudo xcodebuild -license $ # /usr/sbin/softwareupdate --install-rosetta --agree-to-license ``` ### ESP-IDF 安装 ```Shell $ # 下载最新仓库 $ mkdir -p ~/esp $ cd ~/esp $ git clone -b v5.1 --recursive https://github.com/espressif/esp-idf.git $ # 编译安装 $ cd ~/esp/esp-idf $ ./install.sh all $ # 设置环境变量 $ . ~/esp/esp-idf/export.sh $ # 如果安装出现证书错误,可运行您电脑 Python 文件夹中的 Install Certificates.command 安装证书 ``` ## 编辑上传并监控(官方示例) ```Shell $ cd <你的项目目录> $ cp -r $IDF_PATH/examples/get-started/hello_world . $ cd ./hello_world $ idf.py set-target esp32s3 $ idf.py menuconfig #设置开发板 $ idf.py build # 编译 $ ls /dev/cu.* #查看串口名称 $ idf.py -p <串口名称> flash monitor #烧录并监视输出 ``` ## 参考 - https://www.espressif.com/zh-hans/products/sdks/esp-idf - https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/index.html - https://github.com/espressif/esp-idf/blob/master/README_CN.md - https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/tools/idf-py.html