Browse Source

Change the screen display from pointer to reference

pull/3032/head
Quency-D 1 week ago
parent
commit
8c0ba1e990
  1. 27
      src/helpers/ui/NV3001BDisplay.cpp
  2. 8
      src/helpers/ui/NV3001BDisplay.h
  3. 4
      variants/heltec_rc52/variant.h

27
src/helpers/ui/NV3001BDisplay.cpp

@ -203,25 +203,25 @@ static void writeOptionalPin(int pin, int level) {
} }
void NV3001BDisplay::writeCommand(uint8_t cmd) { 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_DC, LOW);
digitalWrite(PIN_TFT_CS, LOW); digitalWrite(PIN_TFT_CS, LOW);
spi->transfer(cmd); spi.transfer(cmd);
digitalWrite(PIN_TFT_CS, HIGH); digitalWrite(PIN_TFT_CS, HIGH);
spi->endTransaction(); spi.endTransaction();
} }
void NV3001BDisplay::writeBytes(const uint8_t* data, size_t len) { void NV3001BDisplay::writeBytes(const uint8_t* data, size_t len) {
if (!data || len == 0) return; 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_DC, HIGH);
digitalWrite(PIN_TFT_CS, LOW); digitalWrite(PIN_TFT_CS, LOW);
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
spi->transfer(data[i]); spi.transfer(data[i]);
} }
digitalWrite(PIN_TFT_CS, HIGH); digitalWrite(PIN_TFT_CS, HIGH);
spi->endTransaction(); spi.endTransaction();
} }
void NV3001BDisplay::writeCommandData(uint8_t cmd, const uint8_t* data, size_t len) { 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 hi = rgb >> 8;
uint8_t lo = rgb & 0xff; 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_DC, HIGH);
digitalWrite(PIN_TFT_CS, LOW); digitalWrite(PIN_TFT_CS, LOW);
while (count--) { while (count--) {
spi->transfer(hi); spi.transfer(hi);
spi->transfer(lo); spi.transfer(lo);
} }
digitalWrite(PIN_TFT_CS, HIGH); digitalWrite(PIN_TFT_CS, HIGH);
spi->endTransaction(); spi.endTransaction();
} }
void NV3001BDisplay::initPanel() { void NV3001BDisplay::initPanel() {
@ -416,7 +416,6 @@ void NV3001BDisplay::drawChar(int x, int y, char ch) {
bool NV3001BDisplay::begin() { bool NV3001BDisplay::begin() {
if (is_on) return true; if (is_on) return true;
if (!spi) return false;
if (periph_power) periph_power->claim(); if (periph_power) periph_power->claim();
@ -429,11 +428,11 @@ bool NV3001BDisplay::begin() {
delay(20); delay(20);
#if defined(NRF52_PLATFORM) #if defined(NRF52_PLATFORM)
spi->begin(); spi.begin();
#elif defined(ESP_PLATFORM) || defined(ESP32_PLATFORM) #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 #else
spi->begin(); spi.begin();
#endif #endif
if (PIN_TFT_RST >= 0) { if (PIN_TFT_RST >= 0) {
pinMode(PIN_TFT_RST, OUTPUT); pinMode(PIN_TFT_RST, OUTPUT);

8
src/helpers/ui/NV3001BDisplay.h

@ -27,7 +27,7 @@ class NV3001BDisplay : public DisplayDriver {
#endif #endif
SPIClass owned_spi; SPIClass owned_spi;
#endif #endif
SPIClass* spi; SPIClass& spi;
RefCountedDigitalPin* periph_power; RefCountedDigitalPin* periph_power;
bool is_on = false; bool is_on = false;
uint16_t color = 0xffff; uint16_t color = 0xffff;
@ -48,14 +48,14 @@ public:
#if defined(ESP_PLATFORM) || defined(ESP32_PLATFORM) #if defined(ESP_PLATFORM) || defined(ESP32_PLATFORM)
NV3001BDisplay(RefCountedDigitalPin* power = nullptr) : NV3001BDisplay(RefCountedDigitalPin* power = nullptr) :
DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), 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) : NV3001BDisplay(SPIClass* displaySpi, RefCountedDigitalPin* power = nullptr) :
DisplayDriver(NV3001B_LOGICAL_WIDTH, NV3001B_LOGICAL_HEIGHT), 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 #else
NV3001BDisplay(SPIClass* displaySpi = &SPI, RefCountedDigitalPin* power = nullptr) : 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 #endif
bool begin(); bool begin();

4
variants/heltec_rc52/variant.h

@ -53,8 +53,8 @@ extern "C" {
#define SENSOR_RST_PIN (32 + 15) #define SENSOR_RST_PIN (32 + 15)
#define PIN_GPS_TX (0 + 8) // GPS TX toward MCU RX #define PIN_GPS_TX (0 + 8)
#define PIN_GPS_RX (0 + 7) // MCU TX toward GPS RX #define PIN_GPS_RX (0 + 7)
#define PIN_GPS_EN (32 + 9) #define PIN_GPS_EN (32 + 9)
#define PIN_GPS_PPS (32 + 1) #define PIN_GPS_PPS (32 + 1)
#define PIN_GPS_RESET (32 + 6) #define PIN_GPS_RESET (32 + 6)

Loading…
Cancel
Save