1. Установка
Вариант 1 - из реестра компонентов. В папке приложения:
idf.py add-dependency "pisppus/PipCore^2.0.0"
Компонент-менеджер сам скачает ядро и его зависимости (например, joltwallet/littlefs) при первой сборке - вручную ничего ставить не нужно.
Вариант 2 - как локальный компонент. Скопируйте (или подключите сабмодулем) папку PipCore/ в проект и добавьте её в поиск компонентов в корневом CMakeLists.txt:
set(EXTRA_COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/PipCore")
Затем подключите компонент в приложении как обычно:
idf_component_register(SRCS "main.cpp" REQUIRES PipCore)
2. Конфигурация (Kconfig)
Все опции находятся в меню PipCore:
idf.py menuconfig → PipCore
По умолчанию все модули выключены: ядро собирается «headless» - только Platform (время, GPIO, память) и Log.
| Опция | Описание | По умолчанию |
|---|---|---|
PIPCORE_DISPLAY |
Драйвер панели: None / ST7789 / ST7796 / ILI9488 |
None |
PIPCORE_ENABLE_GRAPHICS |
Sprite-графика (RGB565) | on, если выбран драйвер дисплея |
PIPCORE_ENABLE_TOUCH |
Ёмкостный тач семейства FT6x36 | off |
PIPCORE_ENABLE_AUDIO |
16-голосный PAC-микшер + I²S-выход | off |
PIPCORE_AUDIO_TASK_STACK |
Стек таска микшера, байт (1024…32768) | 4096 |
PIPCORE_AUDIO_TASK_PRIO |
Приоритет таска микшера (1…25) | 5 |
PIPCORE_AUDIO_TASK_CORE |
Ядро CPU для микшера (0/1). На одноядерных чипах игнорируется | 0 |
PIPCORE_ENABLE_WIFI |
WiFi STA (событийная модель) | off |
PIPCORE_ENABLE_OTA |
OTA-сервис (манифест + Ed25519 + SHA-256). | off (требует WiFi) |
PIPCORE_OTA_PROJECT_URL |
Базовый URL сервера обновлений | "" |
PIPCORE_OTA_HTTP_TIMEOUT_MS |
Таймаут HTTP-запросов OTA (500…30000). | 2000 |
PIPCORE_ENABLE_PREFS |
Настройки в NVS | off |
PIPCORE_ENABLE_STORAGE |
Файловое хранилище LittleFS | off |
PIPCORE_STORAGE_PARTITION_LABEL |
Метка раздела LittleFS | "storage" |
PIPCORE_LOG_LEVEL |
Стартовый уровень логов (0…5, см. Log) | 2 (Info) |
PIPCORE_ENABLE_DEBUG |
Трекер аллокаций + профайлер | off |
PIPCORE_DEBUG_CONSOLE |
Отладочная консоль для PipCore Inspector. | off (требует Debug) |
PIPCORE_DEBUG_CONSOLE_ACCEPT_RISK |
Подтверждение риска неаутентифицированного доступа | off |
PIPCORE_DEBUG_CONSOLE_STACK |
Стек таска консоли, байт (1024…32768) | 4096 |
PIPCORE_DEBUG_TRANSPORT |
Транспорт консоли: USB-Serial/JTAG / UART0 |
USB-Serial/JTAG |
Kconfig не задаёт их. Они передаются в рантайме структурами DisplayConfig, TouchConfig, SoundConfig, net::WifiConfig.
USB-Serial/JTAG доступен на ESP32 S и C серий; оригинальный ESP32 и ESP32-S2 требуют UART0.
Макросы для условной компиляции
Все опции доступны в коде как макросы 0/1, поэтому их можно использовать в #if:
#if PIPCORE_ENABLE_TOUCH
// код, который нужен только со включённым тачем
#endif
| Макрос | Значение |
|---|---|
PIPCORE_VERSION |
Версия ядра ("2.0.0") |
PIPCORE_TARGET_ESP32 / PIPCORE_TARGET_DESKTOP |
Целевая платформа: прошивка или симулятор (ровно один из двух равен 1) |
PIPCORE_ENABLE_GRAPHICS, _TOUCH, _AUDIO, _WIFI, _OTA, _PREFS, _STORAGE, _DEBUG |
Включён ли соответствующий модуль |
PIPCORE_DEBUG_CONSOLE |
Включена ли отладочная консоль |
PIPCORE_OTA_PROJECT_URL |
Базовый URL OTA (строковый литерал) |
3. Быстрый старт
Минимальная программа: экран + заливка цветом. Нужен PIPCORE_DISPLAY в menuconfig.
#include <PipCore.hpp>
using namespace pipcore;
extern "C" void app_main()
{
Platform *plat = GetPlatform();
// 1. Описываем дисплей: пины, разрешение, частоту SPI.
DisplayConfig cfg = {};
cfg.mosi = 6;
cfg.sclk = 5;
cfg.cs = 7;
cfg.dc = 8;
cfg.rst = -1; // -1: пин reset не подключён
cfg.width = 320;
cfg.height = 480;
cfg.hz = 80'000'000; // 80 МГц
cfg.order = 1; // BGR-порядок каналов (типично для ST7796)
cfg.invert = true;
// 2. Конфигурируем и запускаем. Обе функции возвращают true при успехе.
if (!plat->configDisplay(cfg) || !plat->beginDisplay(0))
{
log::error("display: %s", plat->lastErrorText());
return;
}
// 3. Рисуем.
plat->display()->fillScreen565(Sprite::color565(0, 8, 16));
}