From 8c0ba1e990ab6deebff5560f633063901db79c50 Mon Sep 17 00:00:00 2001 From: Quency-D Date: Thu, 23 Jul 2026 11:40:51 +0800 Subject: [PATCH] Change the screen display from pointer to reference --- src/helpers/ui/NV3001BDisplay.cpp | 27 +++++++++++++-------------- src/helpers/ui/NV3001BDisplay.h | 8 ++++---- variants/heltec_rc52/variant.h | 4 ++-- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/helpers/ui/NV3001BDisplay.cpp b/src/helpers/ui/NV3001BDisplay.cpp index 5440904ff..05dc968de 100644 --- a/src/helpers/ui/NV3001BDisplay.cpp +++ b/src/helpers/ui/NV3001BDisplay.cpp @@ -203,25 +203,25 @@ static void writeOptionalPin(int pin, int level) { } void NV3001BDisplay::writeCommand(uint8_t cmd) { - spi->beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); digitalWrite(PIN_TFT_DC, LOW); digitalWrite(PIN_TFT_CS, LOW); - spi->transfer(cmd); + spi.transfer(cmd); digitalWrite(PIN_TFT_CS, HIGH); - spi->endTransaction(); + spi.endTransaction(); } void NV3001BDisplay::writeBytes(const uint8_t* data, size_t len) { if (!data || len == 0) return; - spi->beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); digitalWrite(PIN_TFT_DC, HIGH); digitalWrite(PIN_TFT_CS, LOW); for (size_t i = 0; i < len; i++) { - spi->transfer(data[i]); + spi.transfer(data[i]); } digitalWrite(PIN_TFT_CS, HIGH); - spi->endTransaction(); + spi.endTransaction(); } void NV3001BDisplay::writeCommandData(uint8_t cmd, const uint8_t* data, size_t len) { @@ -253,15 +253,15 @@ void NV3001BDisplay::writeColor(uint16_t rgb, uint32_t count) { uint8_t hi = rgb >> 8; uint8_t lo = rgb & 0xff; - spi->beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); + spi.beginTransaction(SPISettings(SPI_FREQUENCY, MSBFIRST, SPI_MODE0)); digitalWrite(PIN_TFT_DC, HIGH); digitalWrite(PIN_TFT_CS, LOW); while (count--) { - spi->transfer(hi); - spi->transfer(lo); + spi.transfer(hi); + spi.transfer(lo); } digitalWrite(PIN_TFT_CS, HIGH); - spi->endTransaction(); + spi.endTransaction(); } void NV3001BDisplay::initPanel() { @@ -416,7 +416,6 @@ void NV3001BDisplay::drawChar(int x, int y, char ch) { bool NV3001BDisplay::begin() { if (is_on) return true; - if (!spi) return false; if (periph_power) periph_power->claim(); @@ -429,11 +428,11 @@ bool NV3001BDisplay::begin() { delay(20); #if defined(NRF52_PLATFORM) - spi->begin(); + spi.begin(); #elif defined(ESP_PLATFORM) || defined(ESP32_PLATFORM) - spi->begin(PIN_TFT_SCL, PIN_TFT_MISO, PIN_TFT_SDA, PIN_TFT_CS); + spi.begin(PIN_TFT_SCL, PIN_TFT_MISO, PIN_TFT_SDA, PIN_TFT_CS); #else - spi->begin(); + spi.begin(); #endif if (PIN_TFT_RST >= 0) { pinMode(PIN_TFT_RST, OUTPUT); diff --git a/src/helpers/ui/NV3001BDisplay.h b/src/helpers/ui/NV3001BDisplay.h index de47c102c..52dd4a6ea 100644 --- a/src/helpers/ui/NV3001BDisplay.h +++ b/src/helpers/ui/NV3001BDisplay.h @@ -27,7 +27,7 @@ class NV3001BDisplay : public DisplayDriver { #endif SPIClass owned_spi; #endif - SPIClass* spi; + SPIClass& spi; RefCountedDigitalPin* periph_power; bool is_on = false; uint16_t color = 0xffff; @@ -48,14 +48,14 @@ public: #if defined(ESP_PLATFORM) || defined(ESP32_PLATFORM) NV3001BDisplay(RefCountedDigitalPin* power = nullptr) : DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), - owned_spi(NV3001B_SPI_HOST), spi(&owned_spi), periph_power(power) { } + owned_spi(NV3001B_SPI_HOST), spi(owned_spi), periph_power(power) { } NV3001BDisplay(SPIClass* displaySpi, RefCountedDigitalPin* power = nullptr) : DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), - owned_spi(NV3001B_SPI_HOST), spi(displaySpi ? displaySpi : &owned_spi), periph_power(power) { } + owned_spi(NV3001B_SPI_HOST), spi(displaySpi ? *displaySpi : owned_spi), periph_power(power) { } #else NV3001BDisplay(SPIClass* displaySpi = &SPI, RefCountedDigitalPin* power = nullptr) : - DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), spi(displaySpi), periph_power(power) { } + DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), spi(displaySpi ? *displaySpi : SPI), periph_power(power) { } #endif bool begin(); diff --git a/variants/heltec_rc52/variant.h b/variants/heltec_rc52/variant.h index a2225a2cb..58036abd6 100644 --- a/variants/heltec_rc52/variant.h +++ b/variants/heltec_rc52/variant.h @@ -53,8 +53,8 @@ extern "C" { #define SENSOR_RST_PIN (32 + 15) -#define PIN_GPS_TX (0 + 8) // GPS TX toward MCU RX -#define PIN_GPS_RX (0 + 7) // MCU TX toward GPS RX +#define PIN_GPS_TX (0 + 8) +#define PIN_GPS_RX (0 + 7) #define PIN_GPS_EN (32 + 9) #define PIN_GPS_PPS (32 + 1) #define PIN_GPS_RESET (32 + 6)