ESP-IDF 开发
本章节包含以下两部分,请按需阅读:
配置开发环境
以下环境设置适用于 Windows 10/11 系统,Mac/Linux 用户请参考 官方说明
-
下载并安装 Visual Studio Code。
-
在 VSCode 中,通过点击 VSCode 侧边活动栏中的
或使用快捷键(Ctrl+Shift+X)来打开 扩展 视图。然后,搜索 ESP-IDF 扩展并安装。
-
安装扩展后,VS Code 左侧活动栏中会出现
图标,点击该图标可查看 ESP-IDF 扩展的基本命令列表,在 Advanced 中选择 配置 ESP-IDF 扩展。
-
选择 Express 进入快速配置模式:
-
根据需要修改以下选项。
- 选择下载服务器:
- Espressif:使用乐鑫中国服务器,下载速度更快。
- Github:使用 GitHub 官方发布链接。
- ESP-IDF 版本:通常根据开发板要求选择对应版本,如无特殊要求建议使用最新的正式版本。对于 ESP32-S3-Touch-LCD-1.69 ,建议 Espressif IDF 版本 ≥ v5.3.1。
- ESP-IDF 容器安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。
- ESP-IDF 所需的工具安装地址:建议使用默认地址,或使用纯英文路径且路径中不包含空格。
- 选择下载服务器:
-
点击 Install 开始安装。你将看到一个显示安装进度的页面,包括 ESP-IDF 下载、ESP-IDF 工具下载安装以及 Python 虚拟环境创建的进度状态。
-
如果安装正确,你会看到所有设置已配置完成的提示,即可开始使用该扩展程序。
注意:如果 ESP-IDF 安装失败或需要重新安装,可以尝试删除 C:\Users\%Username%\esp
和 C:\Users\%Username%\.espressif
文件夹后重试。
示例程序
ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF
目录中。
01_ESP_IDF_ST7789
本示例在 ESP32-S3-Touch-LCD-1.69 开发板上演示了如何使用 ST7789 显示驱动实现多种图形和图像测试。程序通过 SPIFFS 文件系统加载字体和图像,并进行屏幕填充、彩色条纹、形状绘制以及 BMP、JPEG、PNG 图像展示。
![]() | ![]() | ![]() | ![]() | ![]() |
---|
02_ESP_IDF_ST7789_LVGL
本示例演示了 LVGL Widgets 示例。
![]() | ![]() |
---|
代码解释
app_lcd_init()
:
配置和初始化 LCD 的背光引脚;
初始化 SPI 总线,用于与 LCD 进行通信;
创建 LCD 的面板输入输出(Panel IO)对象,配置 SPI 相关的参数;
安装 LCD 驱动,创建 LCD 面板对象,并进行一些初始化操作,如复位、开启显示、设置镜像等;
打开 LCD 背光。
app_lcd_init()
:
初始化 LVGL,设置任务优先级、栈大小、定时器周期等参数;
配置 LCD 显示屏的参数,并将其添加到 LVGL 中作为一个显示设备。这样,LVGL 就可以在这个显示屏上绘制图形界面。
03_PCF85063
本示例展示如何在 ESP32-S3-Touch-LCD-1.69 开发板上使用板载 PCF85063 实时时钟 (RTC)。代码利用 I2C 协议初始化与 RTC 的通信,设定 SCL 和 SDA 引脚,并定义 I2C 通信频率及超时时间。通过实现的读写寄存器功能,可获取及设置时间信息,辅以 BCD 格式的数据转换功能。应用程序启动后将 RTC 设置为预定时间,然后在 FreeRTOS 任务循环中每秒读取并输出当前时间,确保不断更新和显示时间信息。
代码解释
rtc_get_time()
:
这个函数用于从 RTC(实时时钟芯片,这里假设是 PCF85063)读取当前时间。它通过调用 rtc_read_reg
函数从特定的寄存器地址开始读取 7 个字节的数据,分别代表秒、分钟、小时、日、星期几、月和年。
将读取到的 BCD 格式数据转换为十进制格式,并打印出当前时间。如果读取失败,打印错误信息并返回错误码。
rtc_set_time()
:
这个函数用于设置 RTC 的时间。它接受小时、分钟、秒、日、月和年作为参数,将这些十进制数据转换为 BCD 格式,并组成一个数组。
通过调用 rtc_write_reg
函数将这个数组写入到 RTC 的特定寄存器地址开始的位置,从而设置 RTC 的时间。如果写入成功,返回 ESP_OK;否则,返回相应的错误码。
04_QMI8658
本示例展示如何在 ESP32-S3-Touch-LCD-1.69 开发板上使用板载 QMI8658 传感器。代码通过 I2C 初始化传感器,并配置加速度计和陀螺仪参数。接着,使用 FreeRTOS 任务持续读取传感器数据,输出加速度、角速度、时间戳及温度信息。
代码解释
read_sensor_data()
:- 使用
qmi.getAccelerometer
函数读取加速度计数据,如果读取成功,打印加速度计的三个轴的数据。如果读取失败,打印错误信息; - 使用
qmi.getGyroscope
函数读取陀螺仪数据,如果读取成功,打印陀螺仪的三个轴的数据。如果读取失败,打印错误信息; - 使用
qmi.getTimestamp
和qmi.getTemperature_C
函数分别获取传感器的时间戳和温度,并打印出来; - 如果没有数据准备好,打印一个警告信息。然后等待一段时间后再次循环检查数据是否准备好。
- 使用