Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/lovyan03/LovyanGFX into …
Browse files Browse the repository at this point in the history
…develop
  • Loading branch information
tobozo committed Apr 24, 2024
2 parents 05104e2 + 0e474e2 commit a4960a3
Show file tree
Hide file tree
Showing 8 changed files with 207 additions and 34 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/PlatformioBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ jobs:
- board: m5stack-core-esp32
- board: m5stack-core2
- board: m5stack-cores3
- { board: esp8266, platform-version: 3.0.0, ... }
- { board: esp8266, platform-version: 3.1.0, ... }
- { board: esp8266, platform-version: 3.2.0, ... }
- { board: esp8266, platform-version: 4.2.1, ... }
- { board: esp8266, platform-version: 4.2.0, ... }
- { board: esp8266, platform-version: 4.1.0, ... }
- { board: seeed_wio_terminal, platform-version: default, ... }
- { board: adafruit_pybadge_m4, platform-version: default, ... }
- { board: pico, platform-version: default, ... }
Expand Down
22 changes: 15 additions & 7 deletions examples/Test/build_test/platformio_esp8266.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,26 @@ platform = [email protected]
[esp8266_3_2_0]
platform = [email protected]

[esp8266_4_1_0]
platform = [email protected]

[esp8266_4_2_0]
platform = [email protected]

[esp8266_4_2_1]
platform = [email protected]


[env:esp8266]

[env:esp8266-3_0_0]
platform = ${esp8266_3_0_0.platform}
[env:esp8266-4_1_0]
platform = ${esp8266_4_1_0.platform}
board = d1_mini

[env:esp8266-3_1_0]
platform = ${esp8266_3_1_0.platform}
[env:esp8266-4_2_0]
platform = ${esp8266_4_2_0.platform}
board = d1_mini

[env:esp8266-3_2_0]
platform = ${esp8266_3_2_0.platform}
[env:esp8266-4_2_1]
platform = ${esp8266_4_2_1.platform}
board = d1_mini

8 changes: 4 additions & 4 deletions src/lgfx/v1/LGFXBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,11 +342,11 @@ namespace lgfx
void LGFXBase::drawEllipse(int32_t x, int32_t y, int32_t rx, int32_t ry)
{
if (ry == 0) {
drawFastHLine(x - rx, y, (ry << 2) + 1);
drawFastHLine(x - rx, y, (rx << 1) + 1);
return;
}
if (rx == 0) {
drawFastVLine(x, y - ry, (rx << 2) + 1);
drawFastVLine(x, y - ry, (ry << 1) + 1);
return;
}
if (rx < 0 || ry < 0) return;
Expand Down Expand Up @@ -391,11 +391,11 @@ namespace lgfx
void LGFXBase::fillEllipse(int32_t x, int32_t y, int32_t rx, int32_t ry)
{
if (ry == 0) {
drawFastHLine(x - rx, y, (ry << 2) + 1);
drawFastHLine(x - rx, y, (rx << 1) + 1);
return;
}
if (rx == 0) {
drawFastVLine(x, y - ry, (rx << 2) + 1);
drawFastVLine(x, y - ry, (ry << 1) + 1);
return;
}
if (rx < 0 || ry < 0) return;
Expand Down
73 changes: 71 additions & 2 deletions src/lgfx/v1/panel/Panel_ILI9341.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,19 @@ namespace lgfx
{
//----------------------------------------------------------------------------

struct Panel_ILI9341 : public Panel_LCD
struct Panel_ILI9341_Base : public Panel_LCD
{
Panel_ILI9341(void)
Panel_ILI9341_Base(void)
{
_cfg.memory_width = _cfg.panel_width = 240;
_cfg.memory_height = _cfg.panel_height = 320;
}
};

//----------------------------------------------------------------------------

struct Panel_ILI9341 : public Panel_ILI9341_Base
{
protected:

static constexpr uint8_t CMD_FRMCTR1 = 0xB1;
Expand Down Expand Up @@ -88,5 +93,69 @@ namespace lgfx
};

//----------------------------------------------------------------------------


struct Panel_ILI9341_2 : public Panel_ILI9341_Base
{
protected:

static constexpr uint8_t CMD_FRMCTR1 = 0xB1;
static constexpr uint8_t CMD_FRMCTR2 = 0xB2;
static constexpr uint8_t CMD_FRMCTR3 = 0xB3;
static constexpr uint8_t CMD_INVCTR = 0xB4;
static constexpr uint8_t CMD_DFUNCTR = 0xB6;
static constexpr uint8_t CMD_PWCTR1 = 0xC0;
static constexpr uint8_t CMD_PWCTR2 = 0xC1;
static constexpr uint8_t CMD_PWCTR3 = 0xC2;
static constexpr uint8_t CMD_PWCTR4 = 0xC3;
static constexpr uint8_t CMD_PWCTR5 = 0xC4;
static constexpr uint8_t CMD_VMCTR1 = 0xC5;
static constexpr uint8_t CMD_VMCTR2 = 0xC7;
static constexpr uint8_t CMD_GMCTRP1 = 0x0; // Positive Gamma Correction (E0h)
static constexpr uint8_t CMD_GMCTRN1 = 0x0; // Negative Gamma Correction (E1h)
static constexpr uint8_t CMD_RDINDEX = 0xD9; // ili9341
static constexpr uint8_t CMD_IDXRD = 0xDD; // ILI9341 only, indexed control register read

const uint8_t* getInitCommands(uint8_t listno) const override
{
static constexpr uint8_t list0[] =
{
0xEF , 3, 0x03,0x80,0x02,
0xCF , 3, 0x00,0xC1,0x30,
0xED , 4, 0x64,0x03,0x12,0x81,
0xE8 , 3, 0x85,0x00,0x78,
0xCB , 5, 0x39,0x2C,0x00,0x34,0x02,
0xF7 , 1, 0x20,
0xEA , 2, 0x00,0x00,
CMD_PWCTR1, 1, 0x10,
CMD_PWCTR2, 1, 0x00,
CMD_VMCTR1, 2, 0x30,0x30,
CMD_VMCTR2, 1, 0xB7,
0x3A , 1, 0x55,
0x36 , 1, 0x08,
CMD_FRMCTR1, 2, 0x00,0x1A,
0xF2 , 1, 0x00,

CMD_GAMMASET,1, 0x01, // Gamma set, curve 1
CMD_GMCTRP1,15, 0x0F,0x2A,0x28,0x08,0x0E,0x08,0x54,0xA9,0x43,0x0A,0x0F,0x00,0x00,0x00,0x00,
CMD_GMCTRN1,15, 0x00,0x15,0x17,0x07,0x11,0x06,0x2B,0x56,0x3C,0x05,0x10,0x0F,0x3F,0x3F,0x0F,
CMD_DFUNCTR, 3, 0x08,0x82,0x27,
0x2B , 4, 0x00,0x00,0x01,0x3F,
0x2A , 4, 0x00,0x00,0x00,0x3F,
CMD_SLPOUT , 0+CMD_INIT_DELAY, 120, // Exit sleep mode
CMD_IDMOFF , 0,
CMD_DISPON , 0+CMD_INIT_DELAY, 100,
0xFF,0xFF, // end
};
switch (listno)
{
case 0: return list0;
default: return nullptr;
}
}
};

//----------------------------------------------------------------------------

}
}
37 changes: 21 additions & 16 deletions src/lgfx/v1/platforms/arduino_default/Bus_SPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,41 +50,46 @@ namespace lgfx
{
dc_h();
pinMode(_cfg.pin_dc, pin_mode_t::output);
//SPI.pins(_cfg.pin_sclk, _cfg.pin_miso, _cfg.pin_mosi, -1);
SPI.begin();
//PrivateSPI->pins(_cfg.pin_sclk, _cfg.pin_miso, _cfg.pin_mosi, -1);
PrivateSPI->begin();
return true;
}

void Bus_SPI::release(void)
{
SPI.end();
PrivateSPI->end();
}

void Bus_SPI::spi_device(HardwareSPI *newSPI)
{
PrivateSPI = newSPI;
}

void Bus_SPI::beginTransaction(void)
{
dc_h();
//SPISettings setting(_cfg.freq_write, BitOrder::MSBFIRST, _cfg.spi_mode, true);
SPISettings setting(_cfg.freq_write, MSBFIRST, _cfg.spi_mode);
SPI.beginTransaction(setting);
PrivateSPI->beginTransaction(setting);
}

void Bus_SPI::endTransaction(void)
{
SPI.endTransaction();
PrivateSPI->endTransaction();
dc_h();
}

void Bus_SPI::beginRead(void)
{
SPI.endTransaction();
PrivateSPI->endTransaction();
//SPISettings setting(_cfg.freq_read, BitOrder::MSBFIRST, _cfg.spi_mode, false);
SPISettings setting(_cfg.freq_read, MSBFIRST, _cfg.spi_mode);
SPI.beginTransaction(setting);
PrivateSPI->beginTransaction(setting);
}

void Bus_SPI::endRead(void)
{
SPI.endTransaction();
PrivateSPI->endTransaction();
beginTransaction();
}

Expand All @@ -100,14 +105,14 @@ namespace lgfx
bool Bus_SPI::writeCommand(uint32_t data, uint_fast8_t bit_length)
{
dc_l();
SPI.transfer((uint8_t*)&data, bit_length >> 3);
PrivateSPI->transfer((uint8_t*)&data, bit_length >> 3);
dc_h();
return true;
}

void Bus_SPI::writeData(uint32_t data, uint_fast8_t bit_length)
{
SPI.transfer((uint8_t*)&data, bit_length >> 3);
PrivateSPI->transfer((uint8_t*)&data, bit_length >> 3);
}

void Bus_SPI::writeDataRepeat(uint32_t data, uint_fast8_t bit_length, uint32_t length)
Expand All @@ -116,7 +121,7 @@ namespace lgfx
auto bytes = bit_length >> 3;
do
{
SPI.send(reinterpret_cast<uint8_t*>(&data), bytes);
PrivateSPI->send(reinterpret_cast<uint8_t*>(&data), bytes);
} while (--length);
/*/
const uint8_t dst_bytes = bit_length >> 3;
Expand All @@ -137,7 +142,7 @@ namespace lgfx
fillpos += fillpos;
}

SPI.transfer(buf, len * dst_bytes);
PrivateSPI->transfer(buf, len * dst_bytes);
} while (length -= len);
//*/
}
Expand All @@ -153,15 +158,15 @@ namespace lgfx
if (limit <= 32) limit <<= 1;
auto buf = _flip_buffer.getBuffer(len * dst_bytes);
param->fp_copy(buf, 0, len, param);
SPI.transfer(buf, len * dst_bytes);
PrivateSPI->transfer(buf, len * dst_bytes);
} while (length -= len);
}

void Bus_SPI::writeBytes(const uint8_t* data, uint32_t length, bool dc, bool use_dma)
{
if (dc) dc_h();
else dc_l();
SPI.transfer(const_cast<uint8_t*>(data), length);
PrivateSPI->transfer(const_cast<uint8_t*>(data), length);
if (!dc) dc_h();
}

Expand All @@ -173,7 +178,7 @@ namespace lgfx
int idx = 0;
do
{
res |= SPI.transfer(0) << idx;
res |= PrivateSPI->transfer(0) << idx;
idx += 8;
} while (--bit_length);
return res;
Expand All @@ -183,7 +188,7 @@ namespace lgfx
{
do
{
dst[0] = SPI.transfer(0);
dst[0] = PrivateSPI->transfer(0);
++dst;
} while (--length);
return true;
Expand Down
4 changes: 3 additions & 1 deletion src/lgfx/v1/platforms/arduino_default/Bus_SPI.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ namespace lgfx

bool init(void) override;
void release(void) override;
void spi_device(HardwareSPI *newSPI);

void beginTransaction(void) override;
void endTransaction(void) override;
Expand All @@ -76,7 +77,7 @@ namespace lgfx
bool readBytes(uint8_t* dst, uint32_t length, bool use_dma) override;
void readPixels(void* dst, pixelcopy_t* param, uint32_t length) override;

private:
protected:

__attribute__ ((always_inline)) inline void dc_h(void) {
gpio_hi(_cfg.pin_dc);
Expand All @@ -85,6 +86,7 @@ namespace lgfx
gpio_lo(_cfg.pin_dc);
}

HardwareSPI *PrivateSPI = &SPI;
config_t _cfg;
FlipBuffer _flip_buffer;
bool _need_wait;
Expand Down
Loading

0 comments on commit a4960a3

Please sign in to comment.