You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are trying to connect Bharat Pi ESP32 board with 3.5" TFT LCD shield and followed the guidance mentioned in the issue #47 but no luck. The white screen still exist. Please let know. Thanks in advance.
Below is the code (LCD_ID_readreg.ino), board pinout and the output.
Code:
// adapted from LCD_ID_Reader from http://misc.ws/lcd_information
// controllers either read as 16-bit or as a sequence of 8-bit values
//-- Arduino UNO or Mega 2560 Plugged as shield
#define LCD_RST 32
#define LCD_CS 33
#define LCD_RS 15
#define LCD_WR 4
#define LCD_RD 2
#define LCD_D0 12
#define LCD_D1 13
#define LCD_D2 26
#define LCD_D3 25
#define LCD_D4 17
#define LCD_D5 16
#define LCD_D6 27
#define LCD_D7 14
void setup()
{
Serial.begin(9600);
while (!Serial) ;
Serial.println("Read Registers on MCUFRIEND UNO shield");
Serial.println("controllers either read as single 16-bit");
Serial.println("e.g. the ID is at readReg(0)");
Serial.println("or as a sequence of 8-bit values");
Serial.println("in special locations (first is dummy)");
Serial.println("");
lcdInit();
lcdReset(); //ensures that controller is in default state
// for (uint16_t i = 0; i < 256; i++) readReg(i, 7, "f.k");
readReg(0x00, 2, "ID: ILI9320, ILI9325, ILI9335, ...");
readReg(0x04, 4, "Manufacturer ID");
readReg(0x09, 5, "Status Register");
readReg(0x0A, 2, "Get Power Mode");
readReg(0x0C, 2, "Get Pixel Format");
readReg(0x61, 2, "RDID1 HX8347-G");
readReg(0x62, 2, "RDID2 HX8347-G");
readReg(0x63, 2, "RDID3 HX8347-G");
readReg(0x64, 2, "RDID1 HX8347-A");
readReg(0x65, 2, "RDID2 HX8347-A");
readReg(0x66, 2, "RDID3 HX8347-A");
readReg(0x67, 2, "RDID Himax HX8347-A");
readReg(0x70, 2, "Panel Himax HX8347-A");
readReg(0xA1, 5, "RD_DDB SSD1963");
readReg(0xB0, 2, "RGB Interface Signal Control");
readReg(0xB4, 2, "Inversion Control");
readReg(0xB6, 5, "Display Control");
readReg(0xB7, 2, "Entry Mode Set");
readReg(0xBF, 6, "ILI9481, HX8357-B");
readReg(0xC0, 9, "Panel Control");
readReg(0xC8, 13, "GAMMA");
readReg(0xCC, 2, "Panel Control");
readReg(0xD0, 3, "Power Control");
readReg(0xD2, 5, "NVM Read");
readReg(0xD3, 4, "ILI9341, ILI9488");
readReg(0xD4, 4, "Novatek ID");
readReg(0xDA, 2, "RDID1");
readReg(0xDB, 2, "RDID2");
readReg(0xDC, 2, "RDID3");
readReg(0xE0, 16, "GAMMA-P");
readReg(0xE1, 16, "GAMMA-N");
readReg(0xEF, 6, "ILI9327");
readReg(0xF2, 12, "Adjust Control 2");
readReg(0xF6, 4, "Interface Control");
}
void loop()
{
// put your main code here, to run repeatedly:
}
void printhex(uint8_t val)
{
if (val < 0x10) Serial.print("0");
Serial.print(val, HEX);
}
void readReg(uint16_t reg, uint8_t n, const char *msg)
{
uint8_t val8;
lcdReset();
lcdSetWriteDir();
lcdWriteCommand(0xB0); //Command Access Protect
lcdWriteData(0x00); //looks wrong
/*
lcdWriteCommand(0xF6);
lcdWriteData(0x01);
lcdWriteData(0x01);
lcdWriteData(0x03);
*/
lcdWriteCommand(reg);
Serial.print("reg(0x");
printhex(reg >> 8);
printhex(reg);
Serial.print(")");
lcdSetReadDir();
while (n--) {
val8 = lcdReadData8();
Serial.print(" ");
printhex(val8);
}
lcdSetWriteDir();
Serial.print("\t");
Serial.println(msg);
}
void lcdInit()
{
pinMode(LCD_CS, OUTPUT);
digitalWrite(LCD_CS, HIGH);
pinMode(LCD_RS, OUTPUT);
digitalWrite(LCD_RS, HIGH);
pinMode(LCD_WR, OUTPUT);
digitalWrite(LCD_WR, HIGH);
pinMode(LCD_RD, OUTPUT);
digitalWrite(LCD_RD, HIGH);
pinMode(LCD_RST, OUTPUT);
digitalWrite(LCD_RST, HIGH);
}
void lcdReset()
{
digitalWrite(LCD_RST, LOW);
delay(2);
digitalWrite(LCD_RST, HIGH);
delay(10); //allow controller to re-start
}
void lcdWrite8(uint16_t data)
{
digitalWrite(LCD_D0, data & 1);
digitalWrite(LCD_D1, (data & 2) >> 1);
digitalWrite(LCD_D2, (data & 4) >> 2);
digitalWrite(LCD_D3, (data & 8) >> 3);
digitalWrite(LCD_D4, (data & 16) >> 4);
digitalWrite(LCD_D5, (data & 32) >> 5);
digitalWrite(LCD_D6, (data & 64) >> 6);
digitalWrite(LCD_D7, (data & 128) >> 7);
}
uint16_t lcdRead8()
{
uint16_t result = digitalRead(LCD_D7);
result <<= 1;
result |= digitalRead(LCD_D6);
result <<= 1;
result |= digitalRead(LCD_D5);
result <<= 1;
result |= digitalRead(LCD_D4);
result <<= 1;
result |= digitalRead(LCD_D3);
result <<= 1;
result |= digitalRead(LCD_D2);
result <<= 1;
result |= digitalRead(LCD_D1);
result <<= 1;
result |= digitalRead(LCD_D0);
return result;
}
void lcdSetWriteDir()
{
pinMode(LCD_D0, OUTPUT);
pinMode(LCD_D1, OUTPUT);
pinMode(LCD_D2, OUTPUT);
pinMode(LCD_D3, OUTPUT);
pinMode(LCD_D4, OUTPUT);
pinMode(LCD_D5, OUTPUT);
pinMode(LCD_D6, OUTPUT);
pinMode(LCD_D7, OUTPUT);
}
void lcdSetReadDir()
{
pinMode(LCD_D0, INPUT);
pinMode(LCD_D1, INPUT);
pinMode(LCD_D2, INPUT);
pinMode(LCD_D3, INPUT);
pinMode(LCD_D4, INPUT);
pinMode(LCD_D5, INPUT);
pinMode(LCD_D6, INPUT);
pinMode(LCD_D7, INPUT);
}
void lcdWriteData(uint16_t data)
{
lcdSetWriteDir();
digitalWrite(LCD_CS, LOW);
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_RD, HIGH);
digitalWrite(LCD_WR, HIGH);
lcdWrite8(data >> 8);
digitalWrite(LCD_WR, LOW);
delayMicroseconds(10);
digitalWrite(LCD_WR, HIGH);
lcdWrite8(data);
digitalWrite(LCD_WR, LOW);
delayMicroseconds(10);
digitalWrite(LCD_WR, HIGH);
digitalWrite(LCD_CS, HIGH);
}
void lcdWriteCommand(uint16_t command)
{
lcdSetWriteDir();
digitalWrite(LCD_CS, LOW);
digitalWrite(LCD_RS, LOW);
digitalWrite(LCD_RD, HIGH);
digitalWrite(LCD_WR, HIGH);
lcdWrite8(command >> 8);
digitalWrite(LCD_WR, LOW);
delayMicroseconds(10);
digitalWrite(LCD_WR, HIGH);
lcdWrite8(command);
digitalWrite(LCD_WR, LOW);
delayMicroseconds(10);
digitalWrite(LCD_WR, HIGH);
digitalWrite(LCD_CS, HIGH);
}
uint8_t lcdReadData8()
{
uint8_t result;
lcdSetReadDir();
digitalWrite(LCD_CS, LOW);
digitalWrite(LCD_RS, HIGH);
digitalWrite(LCD_RD, HIGH);
digitalWrite(LCD_WR, HIGH);
digitalWrite(LCD_RD, LOW);
delayMicroseconds(10);
result = lcdRead8();
digitalWrite(LCD_RD, HIGH);
delayMicroseconds(10);
return result;
}
uint16_t lcdReadData16()
{
uint16_t result;
result = lcdReadData8() << 8;
result |= lcdReadData8();
return result;
}
void lcdWriteRegister(uint16_t addr, uint16_t data)
{
lcdWriteCommand(addr);
lcdWriteData(data);
}
Hi,
We are trying to connect Bharat Pi ESP32 board with 3.5" TFT LCD shield and followed the guidance mentioned in the issue #47 but no luck. The white screen still exist. Please let know. Thanks in advance.
Below is the code (LCD_ID_readreg.ino), board pinout and the output.
Code:
Pinout:
Output:
The text was updated successfully, but these errors were encountered: