nixy4/u8g2

0.1.4

Latest
uploaded 12 hours ago
u8g2 graphics library component for ESP-IDF

readme

# u8g2 (ESP-IDF Fork)

> 本仓库基于 [olikraus/u8g2](https://github.com/olikraus/u8g2) fork,
> 针对 ESP-IDF 工程做了较大目录重组与文件删减,并增加了 ESP32 硬件端口与组件化构建能力。

## 1. 项目定位

这是一个用于 ESP-IDF 的 `u8g2` 组件版本,目标是:

- 保留 `u8g2` 核心绘图能力;
- 适配 ESP-IDF 5.x 组件构建;
- 提供可直接用于 ESP32 的 I2C/SPI 硬件后端;
- 通过 Kconfig 选择显示驱动家族,按需编译,减少体积与编译时间。

## 2. 与上游 u8g2 的主要差异

相较上游仓库,本 fork 主要做了以下改动:

1. **目录结构重组**:
	- 核心源码放在 `src/core/`
	- 显示驱动放在 `src/driver/`
	- ESP32 端口放在 `src/port/`
2. **文件删减**:删除与当前 ESP-IDF 组件形态无关内容,保留核心可用子集。
3. **新增 ESP32 硬件端口**:
	- I2C: `u8x8_byte_esp32_hw_i2c`, `u8x8_gpio_and_delay_esp32_i2c`
	- SPI: `u8x8_byte_esp32_hw_spi`, `u8x8_gpio_and_delay_esp32_spi`
4. **新增组件配置能力**:通过 Kconfig 选择显示驱动家族,并在 CMake 中只编译对应 `u8x8_d_*.c`。

## 3. 目录说明

- `include/`:对外头文件(`u8g2.h`, `u8x8.h` 以及 ESP32 端口头)
- `src/core/`:u8g2 核心逻辑
- `src/driver/`:控制器驱动实现(`u8x8_d_*.c`)
- `src/port/`:ESP-IDF 硬件适配层(I2C/SPI)
- `CMakeLists.txt`:ESP-IDF 组件构建规则
- `Kconfig.projbuild`:驱动家族选择配置
- `idf_component.yml`:组件元数据

## 4. 版本与依赖

- ESP-IDF: `>= 5.0`
- 组件元数据见 `idf_component.yml`

## 5. Kconfig 驱动选择(新增)

进入 `menuconfig`:

- `u8g2 Configuration`
- `u8g2 display driver family`

默认是 **`all drivers`**(兼容旧行为)。

当你选择某一驱动家族(如 `ssd1306`)时,仅会编译:

- 公共驱动层:`u8g2_d_*.c`
- 该家族驱动:`u8x8_d_ssd1306*.c`

## 6. ESP32 I2C 使用示例(最小流程)

1. 初始化 `u8g2_esp32_i2c_ctx_t`,填写 `i2c_port/sda/scl/addr`。
2. 调用 `u8g2_esp32_i2c_set_default_context()`。
3. 选择对应 setup(例如 `u8g2_Setup_ssd1306_i2c_128x64_noname_f`)。
4. 调用 `u8x8_SetI2CAddress()`(注意传入 8-bit 地址,即 7-bit 左移 1)。
5. `u8g2_InitDisplay()` + `u8g2_SetPowerSave(..., 0)` 后开始绘制。

可参考工程示例调用方式:
- `main/app-main.cpp`

## 7. ESP32 SPI 使用说明

SPI 流程与 I2C 类似:

1. 初始化 `u8g2_esp32_spi_ctx_t`(host/sclk/mosi/cs/dc/reset 等);
2. 调用 `u8g2_esp32_spi_set_default_context()`;
3. 在 setup 中使用 `u8x8_byte_esp32_hw_spi` 与 `u8x8_gpio_and_delay_esp32_spi`。

## 8. 迁移提示(从上游到本 fork)

- 请优先包含本组件导出的头文件;
- 若你直接依赖上游目录布局,请按本仓库 `src/core|driver|port` 重新适配路径;
- 驱动裁剪后,setup 函数需与所选驱动家族匹配,否则会链接失败。

## 9. 许可证与致谢

- 本项目继承上游 `u8g2` 的许可条款(见 `LICENSE`)。
- 感谢 `olikraus/u8g2` 社区的长期维护与贡献。

Links

Supports all targets

License: Custom

To add this component to your project, run:

idf.py add-dependency "nixy4/u8g2^0.1.4"

download archive

Stats

  • Archive size
    Archive size ~ 12.81 MB
  • Downloaded in total
    Downloaded in total 28 times
  • Downloaded this version
    This version: 0 times

Badge

nixy4/u8g2 version: 0.1.4
|