mirror of https://github.com/arendst/Tasmota.git
ra8876 esp32
This commit is contained in:
parent
dcde10eac4
commit
21656fdd81
|
@ -66,13 +66,14 @@ RA8876::RA8876(int8_t cs,int8_t mosi,int8_t miso,int8_t sclk,int8_t bp) : Render
|
|||
//#define RA8876_CS_LOW digitalWrite(m_csPin, LOW)
|
||||
//#define RA8876_CS_HIGH digitalWrite(m_csPin, HIGH)
|
||||
|
||||
#ifdef ESP8266
|
||||
#ifndef ESP32
|
||||
#define RA8876_CS_LOW GPOC=(1<<m_csPin);
|
||||
#define RA8876_CS_HIGH GPOS=(1<<m_csPin);
|
||||
#else
|
||||
#define RA8876_CS_LOW digitalWrite(1<<m_csPin,0);
|
||||
#define RA8876_CS_HIGH digitalWrite(1<<m_csPin,1);
|
||||
#define RA8876_CS_LOW digitalWrite(m_csPin,0);
|
||||
#define RA8876_CS_HIGH digitalWrite(m_csPin,1);
|
||||
#endif
|
||||
|
||||
/*
|
||||
extern void ICACHE_RAM_ATTR RA8876_digitalWrite(uint8_t pin, uint8_t val) {
|
||||
//stopWaveform(pin);
|
||||
|
@ -173,10 +174,8 @@ void RA8876::DisplayOnff(int8_t on) {
|
|||
uint8_t dpcr;
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
dpcr = readReg(RA8876_REG_DPCR);
|
||||
|
||||
if (on) {
|
||||
dpcr |= 0x40; // Display on
|
||||
dim(dimmer);
|
||||
} else {
|
||||
dpcr &= 0x40^0xff; // Display off
|
||||
// backlight off
|
||||
|
@ -185,12 +184,14 @@ void RA8876::DisplayOnff(int8_t on) {
|
|||
}
|
||||
writeReg(RA8876_REG_DPCR, dpcr);
|
||||
SPI.endTransaction();
|
||||
if (on) {
|
||||
dim(dimmer);
|
||||
}
|
||||
}
|
||||
|
||||
// 0-15
|
||||
void RA8876::dim(uint8_t contrast) {
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
|
||||
dimmer=contrast;
|
||||
// pwm0 duty
|
||||
uint32_t duty=(contrast*1024)/15;
|
||||
|
@ -671,10 +672,18 @@ bool RA8876::begin(void) {
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifndef ESP32
|
||||
SPI.begin();
|
||||
#else
|
||||
SPI.begin(_sclk,_miso,_mosi , -1);
|
||||
#endif
|
||||
|
||||
m_spiSettings = SPISettings(RA8876_SPI_SPEED, MSBFIRST, SPI_MODE3);
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 init\n");
|
||||
#endif
|
||||
|
||||
softReset();
|
||||
|
||||
if (!initPLL()) {
|
||||
|
@ -682,24 +691,44 @@ bool RA8876::begin(void) {
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 init pll OK\n");
|
||||
#endif
|
||||
|
||||
if (!initMemory(m_sdramInfo)) {
|
||||
//Serial.println("initMemory failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 init sdram OK\n");
|
||||
#endif
|
||||
|
||||
if (!initDisplay()) {
|
||||
//Serial.println("initDisplay failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 init display OK\n");
|
||||
#endif
|
||||
|
||||
// Set default font
|
||||
selectInternalFont(RA8876_FONT_SIZE_16);
|
||||
setTextScale(1);
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 set scale OK\n");
|
||||
#endif
|
||||
|
||||
setRotation(0);
|
||||
|
||||
clearScreen(0);
|
||||
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("RA8876 init complete\n");
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -899,7 +928,8 @@ void RA8876::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
|
|||
|
||||
writeCmd(RA8876_REG_MRWDP); //04h();
|
||||
|
||||
if (flag) SPI.endTransaction();
|
||||
//if (flag) SPI.endTransaction();
|
||||
SPI.endTransaction();
|
||||
}
|
||||
|
||||
void RA8876::pushColors(uint16_t *data, uint8_t len, boolean first) {
|
||||
|
@ -980,7 +1010,9 @@ void RA8876::waitWriteFifo(void) {
|
|||
// timeout, soft reset
|
||||
softReset();
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("iter timeout fifo\n");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1001,7 +1033,9 @@ void RA8876::wait_ready(void) {
|
|||
// timeout, soft reset
|
||||
softReset();
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
#ifdef RA8876_DEBUG
|
||||
Serial.printf("iter timeout cmd\n");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1188,11 +1222,13 @@ void RA8876::setTextMode(void) {
|
|||
uint8_t icr = readReg(RA8876_REG_ICR);
|
||||
writeReg(RA8876_REG_ICR, icr | 0x04);
|
||||
|
||||
SPI.endTransaction();
|
||||
if (textcolor==textbgcolor) {
|
||||
setDrawMode_reg(1);
|
||||
} else {
|
||||
setDrawMode_reg(0);
|
||||
}
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
|
||||
}
|
||||
|
||||
|
@ -1368,7 +1404,9 @@ size_t RA8876::xwrite(const uint8_t *buffer, size_t size) {
|
|||
; // Ignored
|
||||
else if (c == '\n')
|
||||
{
|
||||
SPI.endTransaction();
|
||||
setCursor(0, getCursorY() + getTextSizeY());
|
||||
SPI.beginTransaction(m_spiSettings);
|
||||
writeCmd(RA8876_REG_MRWDP); // Reset current register for writing to memory
|
||||
}
|
||||
else if ((m_fontFlags & RA8876_FONT_FLAG_XLAT_FULLWIDTH) && ((c >= 0x21) || (c <= 0x7F)))
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <SPI.h>
|
||||
#include <renderer.h>
|
||||
|
||||
#undef SPRINT
|
||||
#define SPRINT(A) {char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);}
|
||||
|
||||
|
||||
|
|
|
@ -71,11 +71,24 @@ void RA8876_InitDriver()
|
|||
fg_color = RA8876_WHITE;
|
||||
bg_color = RA8876_BLACK;
|
||||
|
||||
#ifdef ESP32
|
||||
#define HW_SPI_MOSI 23
|
||||
#define HW_SPI_MISO 19
|
||||
#define HW_SPI_CLK 18
|
||||
#else
|
||||
#undef HW_SPI_MOSI
|
||||
#define HW_SPI_MOSI 13
|
||||
#undef HW_SPI_MISO
|
||||
#define HW_SPI_MISO 12
|
||||
#undef HW_SPI_CLK
|
||||
#define HW_SPI_CLK 14
|
||||
#endif
|
||||
|
||||
// init renderer, must use hardware spi
|
||||
if (PinUsed(GPIO_SSPI_CS) && (Pin(GPIO_SSPI_MOSI)==13) && (Pin(GPIO_SSPI_MISO)==12) && (Pin(GPIO_SSPI_SCLK)==14)) {
|
||||
if (PinUsed(GPIO_SSPI_CS) && (Pin(GPIO_SSPI_MOSI)==HW_SPI_MOSI) && (Pin(GPIO_SSPI_MISO)==HW_SPI_MISO) && (Pin(GPIO_SSPI_SCLK)==HW_SPI_CLK)) {
|
||||
ra8876 = new RA8876(Pin(GPIO_SSPI_CS),Pin(GPIO_SSPI_MOSI),Pin(GPIO_SSPI_MISO),Pin(GPIO_SSPI_SCLK),Pin(GPIO_BACKLIGHT));
|
||||
} else {
|
||||
if (PinUsed(GPIO_SPI_CS) && (Pin(GPIO_SPI_MOSI)==13) && (Pin(GPIO_SPI_MISO)==12) && (Pin(GPIO_SPI_CLK)==14)) {
|
||||
if (PinUsed(GPIO_SPI_CS) && (Pin(GPIO_SPI_MOSI)==HW_SPI_MOSI) && (Pin(GPIO_SPI_MISO)==HW_SPI_MISO) && (Pin(GPIO_SPI_CLK)==HW_SPI_CLK)) {
|
||||
ra8876 = new RA8876(Pin(GPIO_SPI_CS),Pin(GPIO_SPI_MOSI),Pin(GPIO_SPI_MISO),Pin(GPIO_SPI_CLK),Pin(GPIO_BACKLIGHT));
|
||||
} else {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue