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 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)
    