my SPI_TFT_ILI9341 lib

Fork of SPI_TFT_ILI9341 by Peter Drescher

Files at this revision

API Documentation at this revision

Comitter:
dreschpe
Date:
Sun Jul 21 11:57:06 2013 +0000
Parent:
1:6d6125e88de7
Commit message:
implement set_orientation

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
diff -r 6d6125e88de7 -r 0a16083193a4 SPI_TFT_ILI9341.cpp
--- a/SPI_TFT_ILI9341.cpp	Thu Jun 13 19:54:24 2013 +0000
+++ b/SPI_TFT_ILI9341.cpp	Sun Jul 21 11:57:06 2013 +0000
@@ -11,6 +11,7 @@
  */
  
 // 12.06.13 fork from SPI_TFT code because controller is different ...
+// 14.07.13 Test with real display and bugfix 
 
 #include "SPI_TFT_ILI9341.h"
 #include "mbed.h"
@@ -43,25 +44,27 @@
 }
 
 
-/*void SPI_TFT_ILI9341::set_orientation(unsigned int o)
+void SPI_TFT_ILI9341::set_orientation(unsigned int o)
 {
     orientation = o;
+    wr_cmd(0x36);                     // MEMORY_ACCESS_CONTROL
     switch (orientation) {
         case 0:
-            wr_reg(0x16, 0x08);
+            _spi.write(0x48);
             break;
         case 1:
-            wr_reg(0x16, 0x68);
+            _spi.write(0x28);
             break;
         case 2:
-            wr_reg(0x16, 0xC8);
+            _spi.write(0x88);
             break;
         case 3:
-            wr_reg(0x16, 0xA8);
+            _spi.write(0xE8);
             break;
     }
+    _cs = 1; 
     WindowMax();
-} */
+} 
 
 
 // write command to tft register
@@ -79,7 +82,6 @@
 void SPI_TFT_ILI9341::wr_dat(unsigned char dat)
 {
    _spi.write(dat);      // mbed lib
-//   _cs = 1;
 }
 
 
@@ -102,7 +104,7 @@
 
 void SPI_TFT_ILI9341::tft_reset()
 {
-    _spi.format(8,3);                 // 8 bit spi mode 3
+    _spi.format(8,3);                  // 8 bit spi mode 3
     _spi.frequency(10000000);          // 10 Mhz SPI clock
     _cs = 1;                           // cs high
     _dc = 1;                           // dc high 
@@ -674,18 +676,20 @@
     unsigned int  j;
     int padd;
     unsigned short *bitmap_ptr = (unsigned short *)bitmap;
+    unsigned int i;
+    
     // the lines are padded to multiple of 4 bytes in a bitmap
     padd = -1;
     do {
         padd ++;
     } while (2*(w + padd)%4 != 0);
     window(x, y, w, h);
+    bitmap_ptr += ((h - 1)* (w + padd));
     wr_cmd(0x2C);  // send pixel 
     _spi.format(16,3);                            // switch to 16 bit Mode 3
-    unsigned int i;
-    for (j = 0; j < h; j++) {        //Lines
-        for (i = 0; i < w; i++) {     // copy pixel data to TFT
-            _spi.write(*bitmap_ptr);    // one line
+    for (j = 0; j < h; j++) {         //Lines
+        for (i = 0; i < w; i++) {     // one line
+            _spi.write(*bitmap_ptr);  // copy pixel data to TFT
             bitmap_ptr++;
         }
         bitmap_ptr -= 2*w;
diff -r 6d6125e88de7 -r 0a16083193a4 SPI_TFT_ILI9341.h
--- a/SPI_TFT_ILI9341.h	Thu Jun 13 19:54:24 2013 +0000
+++ b/SPI_TFT_ILI9341.h	Sun Jul 21 11:57:06 2013 +0000
@@ -1,5 +1,5 @@
-/* mbed library for 240*320 pixel display TFT based on HX8347D LCD Controller
- * Copyright (c) 2011 Peter Drescher - DC2PD
+/* mbed library for 240*320 pixel display TFT based on ILI9341 LCD Controller
+ * Copyright (c) 2013 Peter Drescher - DC2PD
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -57,9 +57,10 @@
  * 
  *
  *
- * // the TFT is connected to SPI pin 5-7 
+ * // the TFT is connected to SPI pin 5-7 and IO's 8-10
  * SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc
- * 
+ * If your display need a signal for switch the backlight use a aditional IO pin in your program 
+ *
  * int main() {
  *     TFT.claim(stdout);      // send stdout to the TFT display 
  *     //TFT.claim(stderr);      // send stderr to the TFT display
@@ -269,10 +270,10 @@
   /** Set the orientation of the screen
    *  x,y: 0,0 is always top left 
    *
-   * @param o direction to use the screen (0-3) 90&#65533; Steps  
+   * @param o direction to use the screen (0-3)  
    *
    */  
-  //void set_orientation(unsigned int o);
+  void set_orientation(unsigned int o);
     
   SPI _spi;
   DigitalOut _cs;