Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SPI_TFT_ILI9341_V2 by
Diff: SPI_TFT_ILI9341.cpp
- Revision:
- 1:6d6125e88de7
- Parent:
- 0:da1bf437cbc1
- Child:
- 2:0a16083193a4
diff -r da1bf437cbc1 -r 6d6125e88de7 SPI_TFT_ILI9341.cpp --- a/SPI_TFT_ILI9341.cpp Wed Jun 12 22:54:38 2013 +0000 +++ b/SPI_TFT_ILI9341.cpp Thu Jun 13 19:54:24 2013 +0000 @@ -98,66 +98,165 @@ +// Init code based on MI0283QT datasheet + void SPI_TFT_ILI9341::tft_reset() { - //static unsigned short driverCode; _spi.format(8,3); // 8 bit spi mode 3 - _spi.frequency(12000000); // 12 Mhz SPI clock + _spi.frequency(10000000); // 10 Mhz SPI clock _cs = 1; // cs high _dc = 1; // dc high _reset = 0; // display reset wait_us(50); - _reset = 1; // end reset + _reset = 1; // end hardware reset wait_ms(5); + + wr_cmd(0x01); // SW reset + wait_ms(5); + wr_cmd(0x28); // display off /* Start Initial Sequence ----------------------------------------------------*/ - wr_cmd(0xCD); // Power Control A + wr_cmd(0xCF); + _spi.write(0x00); + _spi.write(0x83); + _spi.write(0x30); + _cs = 1; + + wr_cmd(0xED); + _spi.write(0x64); + _spi.write(0x03); + _spi.write(0x12); + _spi.write(0x81); + _cs = 1; + + wr_cmd(0xE8); + _spi.write(0x85); + _spi.write(0x01); + _spi.write(0x79); + _cs = 1; + + wr_cmd(0xCB); _spi.write(0x39); _spi.write(0x2C); _spi.write(0x00); _spi.write(0x34); _spi.write(0x02); _cs = 1; - - wr_cmd(0xCF); // Power Control B - _spi.write(0x00); - _spi.write(0xAA); - _spi.write(0xB0); + + wr_cmd(0xF7); + _spi.write(0x20); _cs = 1; - wr_cmd(0xF7); // CMD_PUMP_RATIO_CONTROL - _spi.write(0x30); + + wr_cmd(0xEA); + _spi.write(0x00); + _spi.write(0x00); _cs = 1; + wr_cmd(0xC0); // POWER_CONTROL_1 - _spi.write(0x25); + _spi.write(0x26); _cs = 1; + wr_cmd(0xC1); // POWER_CONTROL_2 _spi.write(0x11); _cs = 1; + wr_cmd(0xC5); // VCOM_CONTROL_1 - _spi.write(0x5C); - _spi.write(0x4C); + _spi.write(0x35); + _spi.write(0x3E); _cs = 1; + wr_cmd(0xC7); // VCOM_CONTROL_2 - _spi.write(0x94); - _cs = 1; - wr_cmd(0xE8); // DRIVER_TIMING_CONTROL_A - _spi.write(0x85); - _spi.write(0x01); - _spi.write(0x78); + _spi.write(0xBE); _cs = 1; - wr_cmd(0xEA); // DRIVER_TIMING_CONTROL_B - _spi.write(0x00); - _spi.write(0x00); - _cs = 1; - wr_cmd(0x3A); // COLMOD_PIXEL_FORMAT_SET - _spi.write(0x05); - _cs = 1; + wr_cmd(0x36); // MEMORY_ACCESS_CONTROL _spi.write(0x48); _cs = 1; - WindowMax (); -} + + wr_cmd(0x3A); // COLMOD_PIXEL_FORMAT_SET + _spi.write(0x55); // 16 bit pixel + _cs = 1; + + wr_cmd(0xB1); // Frame Rate + _spi.write(0x00); + _spi.write(0x1B); + _cs = 1; + + wr_cmd(0xF2); // Gamma Function Disable + _spi.write(0x08); + _cs = 1; + + wr_cmd(0x26); + _spi.write(0x01); // gamma set for curve 01/2/04/08 + _cs = 1; + + wr_cmd(0xE0); // positive gamma correction + _spi.write(0x1F); + _spi.write(0x1A); + _spi.write(0x18); + _spi.write(0x0A); + _spi.write(0x0F); + _spi.write(0x06); + _spi.write(0x45); + _spi.write(0x87); + _spi.write(0x32); + _spi.write(0x0A); + _spi.write(0x07); + _spi.write(0x02); + _spi.write(0x07); + _spi.write(0x05); + _spi.write(0x00); + _cs = 1; + + wr_cmd(0xE1); // negativ gamma correction + _spi.write(0x00); + _spi.write(0x25); + _spi.write(0x27); + _spi.write(0x05); + _spi.write(0x10); + _spi.write(0x09); + _spi.write(0x3A); + _spi.write(0x78); + _spi.write(0x4D); + _spi.write(0x05); + _spi.write(0x18); + _spi.write(0x0D); + _spi.write(0x38); + _spi.write(0x3A); + _spi.write(0x1F); + _cs = 1; + + WindowMax (); + + //wr_cmd(0x34); // tearing effect off + //_cs = 1; + + //wr_cmd(0x35); // tearing effect on + //_cs = 1; + + wr_cmd(0xB7); // entry mode + _spi.write(0x07); + _cs = 1; + + wr_cmd(0xB6); // display function control + _spi.write(0x0A); + _spi.write(0x82); + _spi.write(0x27); + _spi.write(0x00); + _cs = 1; + + wr_cmd(0x11); // sleep out + _cs = 1; + + wait_ms(100); + + wr_cmd(0x29); // display on + _cs = 1; + + wait_ms(100); + + } void SPI_TFT_ILI9341::pixel(int x, int y, int color)