Added methods and features

Fork of SPI_TFT_ILI9341 by Peter Drescher

Revision:
8:8593d3668153
Parent:
6:fe07ae8329f7
Child:
9:6d30a225a5c7
--- a/SPI_TFT_ILI9341.h	Sun Jan 26 20:54:21 2014 +0000
+++ b/SPI_TFT_ILI9341.h	Wed Apr 02 19:20:09 2014 +0000
@@ -20,10 +20,24 @@
 #include "mbed.h"
 #include "GraphicsDisplay.h"
 
+/* Enable or disable 16 bit SPI communication */
+#if defined TARGET_KL25Z 
+//Always disable for KL25Z since it does not support 16 bit SPI.
+#define SPI_16 0
+#else
+//Disable anyhow since 16 bit SPI does not really seem to improve performance..
+#define SPI_16 0
+//#define SPI_16 1
+#endif
+
+/* Default Display Dimensions */
+#define TFT_WIDTH          240
+#define TFT_HEIGHT         320
+
+/* Compute RGB color in 565 format                                            */
 #define RGB(r,g,b)  (((r&0xF8)<<8)|((g&0xFC)<<3)|((b&0xF8)>>3)) //5 red | 6 green | 5 blue
 
-
-/* some RGB color definitions                                                 */
+/* Some RGB color definitions in 888 format                                   */
 #define Black           0x0000      /*   0,   0,   0 */
 #define Navy            0x000F      /*   0,   0, 128 */
 #define DarkGreen       0x03E0      /*   0, 128,   0 */
@@ -44,6 +58,50 @@
 #define GreenYellow     0xAFE5      /* 173, 255,  47 */
 
 
+/** 
+  * @brief ILI9341 Registers  
+  */ 
+#define ILI9341_DISPLAY_RST          0x01   /* SW reset */
+
+#define ILI9341_SLEEP_OUT            0x11   /* Sleep out register */
+#define ILI9341_GAMMA                0x26   /* Gamma register */
+#define ILI9341_DISPLAY_OFF          0x28   /* Display off register */
+#define ILI9341_DISPLAY_ON           0x29   /* Display on register */
+#define ILI9341_COLUMN_ADDR          0x2A   /* Colomn address register */ 
+#define ILI9341_PAGE_ADDR            0x2B   /* Page address register */ 
+#define ILI9341_GRAM                 0x2C   /* GRAM register */   
+//
+//
+#define ILI9341_TEAR_OFF             0x34   /* tearing effect off */
+#define ILI9341_TEAR_ON              0x35   /* tearing effect on */
+
+#define ILI9341_MAC                  0x36   /* Memory Access Control register*/
+#define ILI9341_PIXEL_FORMAT         0x3A   /* Pixel Format register */
+
+#define ILI9341_WDB                  0x51   /* Write Brightness Display register */
+#define ILI9341_WCD                  0x53   /* Write Control Display register*/
+#define ILI9341_RGB_INTERFACE        0xB0   /* RGB Interface Signal Control */
+#define ILI9341_FRC                  0xB1   /* Frame Rate Control register */
+#define ILI9341_BPC                  0xB5   /* Blanking Porch Control register*/
+#define ILI9341_DFC                  0xB6   /* Display Function Control register*/
+#define ILI9341_ENTRY_MODE           0xB7   /* Display Entry mode register*/
+//
+#define ILI9341_POWER1               0xC0   /* Power Control 1 register */
+#define ILI9341_POWER2               0xC1   /* Power Control 2 register */
+#define ILI9341_VCOM1                0xC5   /* VCOM Control 1 register */
+#define ILI9341_VCOM2                0xC7   /* VCOM Control 2 register */
+#define ILI9341_POWERA               0xCB   /* Power control A register */
+#define ILI9341_POWERB               0xCF   /* Power control B register */
+#define ILI9341_PGAMMA               0xE0   /* Positive Gamma Correction register*/
+#define ILI9341_NGAMMA               0xE1   /* Negative Gamma Correction register*/
+#define ILI9341_DTCA                 0xE8   /* Driver timing control A */
+#define ILI9341_DTCB                 0xEA   /* Driver timing control B */
+#define ILI9341_POWER_SEQ            0xED   /* Power on sequence register */
+#define ILI9341_3GAMMA_EN            0xF2   /* 3 Gamma enable register */
+#define ILI9341_INTERFACE            0xF6   /* Interface control register */
+#define ILI9341_PRC                  0xF7   /* Pump ratio control register */
+
+
 /** Display control class, based on GraphicsDisplay and TextDisplay
  *
  * Example:
@@ -81,6 +139,14 @@
  class SPI_TFT_ILI9341 : public GraphicsDisplay {
  public:
 
+   /** Display origin */
+   enum Origin {
+     Origin_LeftTop=0,   /**<  Left Top of panel is origin */    
+     Origin_RightTop,    /**<  Right Top of panel is origin */
+     Origin_RightBot,    /**<  Right Bottom of panel is origin */
+     Origin_LeftBot      /**<  Left Bottom panel is origin */
+   };
+
   /** Create a SPI_TFT object connected to SPI and three pins
    *
    * @param mosi pin connected to SDO of display
@@ -89,20 +155,20 @@
    * @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) 
+   * The IM pins have to be set to 1110 (3-0). Note: the M24SR board uses 0110 which also works.  
    */ 
   SPI_TFT_ILI9341(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, PinName dc, const char* name ="TFT");
     
-  /** Get the width of the screen in pixel
+  /** Get the width of the screen in pixels
    *
-   * @returns width of screen in pixel
+   * @returns width of screen in pixels
    *
    */    
   virtual int width();
 
-  /** Get the height of the screen in pixel
+  /** Get the height of the screen in pixels
    *
-   * @returns height of screen in pixel 
+   * @returns height of screen in pixels 
    *
    */     
   virtual int height();
@@ -113,7 +179,7 @@
    * @param y vertical position
    * @param color 16 bit pixel color
    */    
-  virtual void pixel(int x, int y,int colour);
+  virtual void pixel(int x, int y, int colour);
     
   /** draw a circle
    *
@@ -167,11 +233,12 @@
    */   
   virtual void locate(int x, int y);
     
-  /** Fill the screen with _backgroun color
-   *
-   */   
-  virtual void cls (void);   
-    
+ /** Fill the screen with _background color
+   *  @param none
+   *  @return none
+   */    
+  virtual void cls();   
+      
   /** calculate the max number of char in a line
    *
    * @returns max columns
@@ -209,7 +276,7 @@
    *
    * @param x,y : upper left corner 
    * @param w width of bitmap
-   * @param h high of bitmap
+   * @param h height of bitmap
    * @param *bitmap pointer to the bitmap data
    *
    *   bitmap format: 16 bit R5 G6 B5
@@ -223,7 +290,7 @@
    *   cast the pointer to (unsigned char *) :
    *   tft.Bitmap(10,40,309,50,(unsigned char *)scala);
    */    
-  void Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *bitmap);
+  void Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap);
     
     
    /** paint a 16 bit BMP from filesytem on the TFT (slow) 
@@ -246,7 +313,18 @@
     
   int BMP_16(unsigned int x, unsigned int y, const char *Name_BMP);  
     
-    
+
+
+/*******************************************************************************
+* Function Name  : WriteBMP_FAT
+* @brief Displays a bitmap picture loaded in Flash.
+* @param Xpos: specifies the X position.
+* @param Ypos: specifies the Y position.
+* @param BmpAddress: Bmp picture address in Flash.
+* @return None
+*******************************************************************************/
+  void WriteBMP_FAT(uint16_t Xpos, uint16_t Ypos, const char* BmpName);    
+ 
     
   /** select the font to use
    *
@@ -269,7 +347,8 @@
    * @param o direction to use the screen (0-3)  
    *
    */  
-  void set_orientation(unsigned int o);
+//WH  void set_orientation(unsigned int o);
+  void set_origin(Origin origin);
   
   
   /** read out the manufacturer ID of the LCD
@@ -279,14 +358,12 @@
   int Read_ID(void);
   
   
-    
-  SPI _spi;
-  DigitalOut _cs; 
-  DigitalOut _reset;
-  DigitalOut _dc;
-  unsigned char* font;
-  
-  
+//These should move to protected section    
+//  SPI _spi;
+//  DigitalOut _cs; 
+//  DigitalOut _reset;
+//  DigitalOut _dc;
+//  unsigned char* font;
   
    
 protected:
@@ -294,7 +371,7 @@
   /** Set draw window region to whole screen
    *
    */  
-  void WindowMax (void);
+  void window_max (void);
 
 
   /** draw a horizontal line
@@ -390,13 +467,20 @@
    */    
   //unsigned short rd_reg (unsigned char reg);
     
-  unsigned char spi_port; 
-  unsigned int orientation;
+//WH  unsigned char spi_port; 
+  //WHunsigned int orientation;
+  Origin _origin;  
   unsigned int char_x;
   unsigned int char_y;
-  PinName clk;
- 
-    
+//  PinName clk;
+
+
+  SPI _spi;
+  DigitalOut _cs; 
+  DigitalOut _reset;
+  DigitalOut _dc;
+  unsigned char* _font;  
+     
 };
 
 #endif