Forked from Peter Drescher lib, using always 16bit spi, init values for chinese red pcb, added read cmds and some mess here and there

Fork of SPI_TFT_ILI9341 by Peter Drescher

Revision:
12:ab5e34c9f3f9
Parent:
11:365aa15eaa0f
--- a/SPI_TFT_ILI9341.cpp	Thu Sep 04 22:17:14 2014 +0000
+++ b/SPI_TFT_ILI9341.cpp	Thu Sep 04 22:54:09 2014 +0000
@@ -15,6 +15,9 @@
 // 18.10.13 Better Circle function from Michael Ammann
 // 22.10.13 Fixes for Kinetis Board - 8 bit spi
 // 26.01.14 Change interface for BMP_16 to also use SD-cards
+// 01-09-14 Geremia:
+// using always 16bit spi. Now 8bits are wasted every cmd, but slower cpus takes more time to send 3x8bits than 2x16bits with 8bit wasted
+// added read stuff, like read ID, read status, read pixel
 
 #include "SPI_TFT_ILI9341.h"
 #include "mbed.h"
@@ -23,9 +26,6 @@
 
 // if display is the only slave into the SPI bus, we can skip driving CS at every cmd
 //#define USE_CS  
-         
-//extern Serial pc;
-//extern DigitalOut xx;     // debug !!
 
 SPI_TFT_ILI9341::SPI_TFT_ILI9341(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, PinName dc, const char *name)
     : _spi(mosi, miso, sclk), _cs(cs), _reset(reset), _dc(dc), GraphicsDisplay(name)
@@ -93,7 +93,7 @@
 void SPI_TFT_ILI9341::wr_8(unsigned char value)
 {
     _spi.format(8,0);   // changing format takes time but wr_8 is used only for init and set orientation
-    _spi.write(value);      // mbed lib
+    _spi.write(value);
     _spi.format(16,0);
 }
 
@@ -113,7 +113,7 @@
     _cs = 0;
 #endif
     _spi.write(cmd);      // mbed lib
-    _dc = 1;            // fixed
+ //   _dc = 1; //not needed for read cmds
     r = _spi.write(0) >> 8;
 #ifdef USE_CS
     _cs = 1;
@@ -130,7 +130,7 @@
     _cs = 0;
 #endif
     _spi.write(cmd); 
-    _dc = 1;
+//    _dc = 1; //not needed for read cmds
     r = _spi.write(0); // we get only 15bit valid, first bit was the dummy cycle
     d = r;
     r = _spi.write(0);
@@ -153,7 +153,7 @@
     _cs = 0;
 #endif
     _spi.write(cmd); 
-    _dc = 1;
+ //   _dc = 1; //not needed for read cmds
     r = _spi.write(0); // we get only 15bit valid, first bit was the dummy cycle
     d = r;
     r = _spi.write(0);
@@ -167,7 +167,7 @@
 #endif  
     return(d);
 }
-// for read cmds that needs a dummy byte (not a dummy bit, like 2E ram read)
+// for read cmds that needs a dummy byte (not a dummy bit) like 2E ram read
 unsigned int SPI_TFT_ILI9341::wr_cmd_rd32_dbyte(unsigned char cmd)
 {
     unsigned int r;
@@ -175,8 +175,8 @@
 #ifdef USE_CS
     _cs = 0;
 #endif
-    _spi.write(cmd<<8); // send cmd then 00byte, cmd is processed and second byte is the dummy byte
-   _dc = 1; //not needed for read cmds
+    _spi.write(cmd<<8); // send cmd then 00, cmd is processed immediatly, so the second byte will be the dummy byte
+  // _dc = 1; //not needed for read cmds
     r = _spi.write(0)<<16; // Byte3,2
     r = r | _spi.write(0); // Byte1,0
     // now need to reset because some cmds would expect to xfer more data