* feat(board): add support for CYD-2432S028R board and update XPT2046 driver
- Added CONFIG_TT_BOARD_CYD_2432S028R in Kconfig.
- Included support for CYD2432S028R in Boards.h and board.cmake.
- Updated Xpt2046Touch driver to use configuration->spiDevice instead of SPI2_HOST when creating the SPI handle.
- Note: SD card is not working on this board yet.
This commit introduces full support for the CYD-2432S028R board and improves the touchscreen driver flexibility by allowing dynamic SPI device configuration. SD card functionality still needs to be implemented.
* Added a new GitHub Actions job to build firmware for the cyd-2432s028r board
using the existing build-firmware action. This ensures continuous integration
coverage for the new board alongside other supported ESP32 variants.
* Removed unnecessary file
* Refactor CYD-2432S028R board initialization, touch, and SD drivers
- Updated board CMakeLists to use `XPT2046-Bitbang` instead of `XPT2046`.
- Added `YellowSdCard` support and initialized SD card in board configuration.
- Updated SPI pin assignments for touch and SD card to match hardware setup.
- Refactored touch driver to use bit-banged SPI with proper start/stop handling.
- Touch adaptation was based on a merge of:
- https://github.com/NellowTCS/Tactility/blob/main/Drivers/XPT2046-Bitbang/Source/XPT2046-Bitbang.cpp
- https://github.com/ddxfish/XPT2046_Bitbang_Arduino_Library/blob/main/XPT2046_Bitbang.cpp
- Calibration is currently static in code:
Calibration cal = {
.xMin = 100,
.xMax = 1900,
.yMin = 100,
.yMax = 1900
};
This removes the need for manual touchscreen calibration, but code was adjusted to support dynamic calibration in the future.
- Added comments and constants for software SPI touch pins.
- Updated `YellowDisplay` to use new touch driver configuration.
* Refactor XPT2046 touch driver: replace Bitbang with SoftSPI implementation, update CMake and README files
61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
#include "YellowDisplay.h"
|
|
#include "Xpt2046SoftSpi.h"
|
|
#include "YellowConstants.h"
|
|
#include <Ili934xDisplay.h>
|
|
#include <PwmBacklight.h>
|
|
|
|
static const char* TAG = "YellowDisplay";
|
|
|
|
// Global to hold reference (only needed if calling stop() later)
|
|
static std::unique_ptr<Xpt2046SoftSpi> touch;
|
|
|
|
static std::shared_ptr<tt::hal::touch::TouchDevice> createTouch() {
|
|
auto configuration = std::make_unique<Xpt2046SoftSpi::Configuration>(
|
|
CYD_TOUCH_MOSI_PIN,
|
|
CYD_TOUCH_MISO_PIN,
|
|
CYD_TOUCH_SCK_PIN,
|
|
CYD_TOUCH_CS_PIN,
|
|
CYD2432S028R_LCD_HORIZONTAL_RESOLUTION, // 240
|
|
CYD2432S028R_LCD_VERTICAL_RESOLUTION, // 320
|
|
false, // swapXY
|
|
true, // mirrorX
|
|
false // mirrorY
|
|
);
|
|
|
|
// Allocate the driver
|
|
touch = std::make_unique<Xpt2046SoftSpi>(std::move(configuration));
|
|
|
|
// Start the driver
|
|
if (!touch->start()) {
|
|
ESP_LOGE(TAG, "Touch driver start failed");
|
|
return nullptr;
|
|
}
|
|
|
|
return std::shared_ptr<tt::hal::touch::TouchDevice>(touch.get(), [](tt::hal::touch::TouchDevice*) {
|
|
// No delete needed; `touch` is managed above
|
|
});
|
|
}
|
|
|
|
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay() {
|
|
auto touch = createTouch();
|
|
|
|
auto configuration = std::make_unique<Ili934xDisplay::Configuration>(
|
|
CYD2432S028R_LCD_SPI_HOST,
|
|
CYD2432S028R_LCD_PIN_CS,
|
|
CYD2432S028R_LCD_PIN_DC,
|
|
CYD2432S028R_LCD_HORIZONTAL_RESOLUTION,
|
|
CYD2432S028R_LCD_VERTICAL_RESOLUTION,
|
|
touch,
|
|
false, // swapXY
|
|
true, // mirrorX
|
|
false, // mirrorY
|
|
false,
|
|
CYD2432S028R_LCD_DRAW_BUFFER_SIZE
|
|
);
|
|
|
|
configuration->backlightDutyFunction = driver::pwmbacklight::setBacklightDuty;
|
|
|
|
auto display = std::make_shared<Ili934xDisplay>(std::move(configuration));
|
|
return std::reinterpret_pointer_cast<tt::hal::display::DisplayDevice>(display);
|
|
}
|