Nothing really changed. Its just forked in case there will be some changes for the Floranium Project.

Dependents:   floranionSciShield

Fork of SPI_TFT_ILI9341 by Peter Drescher

Files at this revision

API Documentation at this revision

Comitter:
dreschpe
Date:
Thu Jun 13 19:54:24 2013 +0000
Parent:
0:da1bf437cbc1
Child:
2:0a16083193a4
Commit message:
Init sequence changed based on MI0283QT datasheet

Changed in this revision

SPI_TFT_ILI9341.cpp Show annotated file Show diff for this revision Revisions of this file
SPI_TFT_ILI9341.h Show annotated file Show diff for this revision Revisions of this file
--- 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)
--- a/SPI_TFT_ILI9341.h	Wed Jun 12 22:54:38 2013 +0000
+++ b/SPI_TFT_ILI9341.h	Thu Jun 13 19:54:24 2013 +0000
@@ -58,7 +58,7 @@
  *
  *
  * // the TFT is connected to SPI pin 5-7 
- * SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p15,"TFT"); // mosi, miso, sclk, cs, reset
+ * SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc
  * 
  * int main() {
  *     TFT.claim(stdout);      // send stdout to the TFT display 
@@ -70,7 +70,6 @@
  *     TFT.set_font((unsigned char*) Arial12x12);  // select the font
  *     
  *     TFT.set_orientation(0);
- *     TFT.locate(0,0);
  *     printf("  Hello Mbed 0");
  *     TFT.set_font((unsigned char*) Arial24x23);  // select font 2
  *     TFT.locate(48,115);
@@ -81,12 +80,15 @@
  class SPI_TFT_ILI9341 : public GraphicsDisplay {
  public:
 
-  /** Create a SPI_TFT object connected to SPI and two pins
+  /** Create a SPI_TFT object connected to SPI and three pins
    *
-   * @param mosi,miso,sclk SPI
+   * @param mosi pin connected to SDO of display
+   * @param miso pin connected to SDI of display
+   * @param sclk pin connected to RS of display 
    * @param cs pin connected to CS of display
    * @param reset pin connected to RESET of display
-   *
+   * @param dc pin connected to WR of display
+   * the IM pins have to be set to 1110 (3-0) 
    */ 
   SPI_TFT_ILI9341(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, PinName dc, const char* name ="TFT");