# ksdiy_p4c5_bsp
KSDIY **4.3 寸 MIPI 屏(ST7102 480×800)** + **ST7123 触摸** + **LVGL 9** 移植层,集成 AXP2101 上电与防撕裂显示。
## 功能
- `ksdiy_lvgl_port_init()`:DSI 屏、触摸、LVGL 适配器一键初始化
- `ksdiy_lvgl_lock()` / `ksdiy_lvgl_unlock()`:线程安全访问 LVGL
- `touch_i2c_bus_`:触摸/AXP/CSI SCCB 可复用 I2C 总线句柄
- `ksdiy_example_display_bootstrap()`:启动阶段三行状态文字(可选)
## 依赖
- ESP-IDF >= 5.0
- LVGL 8.x / 9.x
- `espressif/esp_lvgl_adapter`
- `espressif/esp_lcd_touch_st7123`
- `kevincoooool/esp_lcd_st7102`
- `kevincoooool/pmic_axp2101`
## 使用
```yaml
dependencies:
kevincoooool/ksdiy_p4c5_bsp: "^1.2.5"
```
### LCD 色深配置(RGB565 / RGB888)
在 `idf.py menuconfig` 中:
1. **Component config → KSDIY P4C5 BSP → LCD pixel format**
- `RGB565 (16-bit, recommended)` — 默认,帧缓冲占用更少
- `RGB888 (24-bit, better color)` — 色彩更好,PSRAM 占用约增加 50%
2. **Component config → LVGL configuration → Color depth** 须与上项一致:
- RGB565 → **16 bit**
- RGB888 → **24 bit**
不匹配时编译会报错,避免运行时花屏。
也可在工程 `sdkconfig.defaults` 中预设:
```ini
# RGB565(默认)
CONFIG_KSDIY_P4C5_LCD_RGB565=y
CONFIG_LV_COLOR_DEPTH_16=y
# 或 RGB888
# CONFIG_KSDIY_P4C5_LCD_RGB888=y
# CONFIG_LV_COLOR_DEPTH_24=y
```
```c
#include "ksdiy_lvgl_port.h"
nvs_flash_init();
ksdiy_lvgl_port_init();
if (ksdiy_lvgl_lock(100)) {
/* 创建 LVGL 控件 */
ksdiy_lvgl_unlock();
}
```
工程 `CMakeLists.txt` 中仍需将组件目录加入 `EXTRA_COMPONENT_DIRS`,或通过 Component Manager 拉取上述依赖。
## 本地同仓库开发
```yaml
kevincoooool/ksdiy_p4c5_bsp:
version: "^1.0.0"
override_path: "../../components/ksdiy_p4c5_bsp"
```
目录内 `ESP-IDF/` 为历史参考工程,**不会**打入注册库包(已在 `idf_component.yml` 中 exclude)。
## 上传注册库
```bash
cd components/ksdiy_p4c5_bsp
compote registry login
compote component upload --namespace kevincoooool --name ksdiy_p4c5_bsp --version 1.2.5
```
> 建议先上传 `esp_lcd_st7102`、`pmic_axp2101`,再上传本组件。
idf.py add-dependency "kevincoooool/ksdiy_p4c5_bsp^1.3.0"