I have ILI9486 based tft display to initiate via 16bit FSMC. I did gpio, fsmc, and lcd initialization.
// Interface Mode Control
LCD_WRITE_CMD(0xb0);
LCD_WRITE_DATA(0x00);
// Interface Pixel Format, 16 bits / pixel
LCD_WRITE_CMD(0x3A);
LCD_WRITE_DATA(0x55);
// PGAMCTRL(Positive Gamma Control)
LCD_WRITE_CMD(0xE0);
LCD_WRITE_DATA(0x0F);
LCD_WRITE_DATA(0x1F);
LCD_WRITE_DATA(0x1C);
LCD_WRITE_DATA(0x0C);
LCD_WRITE_DATA(0x0F);
LCD_WRITE_DATA(0x08);
LCD_WRITE_DATA(0x48);
LCD_WRITE_DATA(0x98);
LCD_WRITE_DATA(0x37);
LCD_WRITE_DATA(0x0A);
LCD_WRITE_DATA(0x13);
LCD_WRITE_DATA(0x04);
LCD_WRITE_DATA(0x11);
LCD_WRITE_DATA(0x0D);
LCD_WRITE_DATA(0x00);
// NGAMCTRL (Negative Gamma Correction)
LCD_WRITE_CMD(0xE1);
LCD_WRITE_DATA(0x0F);
LCD_WRITE_DATA(0x32);
LCD_WRITE_DATA(0x2E);
LCD_WRITE_DATA(0x0B);
LCD_WRITE_DATA(0x0D);
LCD_WRITE_DATA(0x05);
LCD_WRITE_DATA(0x47);
LCD_WRITE_DATA(0x75);
LCD_WRITE_DATA(0x37);
LCD_WRITE_DATA(0x06);
LCD_WRITE_DATA(0x10);
LCD_WRITE_DATA(0x03);
LCD_WRITE_DATA(0x24);
LCD_WRITE_DATA(0x20);
LCD_WRITE_DATA(0x00);
// VCOM Control
LCD_WRITE_CMD(0xC5);
LCD_WRITE_DATA(0x00);
LCD_WRITE_DATA(0x00);
LCD_WRITE_DATA(0x00);
LCD_WRITE_DATA(0x00);
// Power Control 3
LCD_WRITE_CMD(0xC2);
LCD_WRITE_DATA(0x44);
// Memory Access Control
LCD_WRITE_CMD(0x36);
LCD_WRITE_DATA(0x08);
// Set rotation
DIRECTION(0);
// # Sleep OUT
LCD_WRITE_DATA(0x11);
DELAY(500); // ms
// Display ON
LCD_WRITE_DATA(0x29);
Mem. regs:
CMD: 0x60020000
DATA: 0x60000000
Timings:
Timing.AddressSetupTime = 2;
Timing.AddressHoldTime = 0;
Timing.DataSetupTime = 5;
Timing.BusTurnAroundDuration = 0;
Timing.CLKDivision = 0;
Timing.DataLatency = 0;
Wiring is double checked. NE1 is CS, RS -> A16, Reset set high.
The problem is that the display seems to be ON after all (gray background), but it's not possible to draw anything on it. Practically, doing DRAW_SOMETHING(...) the display just flashes and turns bright gray. I have checked every command and absolutely have no clue why this could happen. Any help highly appreciated thanks ~
----------------------[UPD]
correct memory addresses:
CMD: 0x60000000
DATA: 0x60020000