Port of the Adafruit_ILI9341 library for MBED. Depends on BurstSPI. fillRect, drawFastVLine, drawFastHLine are optimized to use BurstSPI fastwrites and perform a clearRX afterwards. MIT license Due to 600 character limit please find complete license/Adafruit header in license.txt Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! http://www.adafruit.com Original written by Limor Fried/Ladyada for Adafruit Industries.

Dependents:   ili9341_test

Adafruit_ILI9341.h

Committer:
infotech1
Date:
2014-12-05
Revision:
0:16926c5097c9

File content as of revision 0:16926c5097c9:

/***************************************************
  This is our GFX example for the Adafruit ILI9341 Breakout and Shield
  ----> http://www.adafruit.com/products/1651
  Check out the links above for our tutorials and wiring diagrams
  These displays use SPI to communicate, 4 or 5 pins are required to
  interface (RST is optional)
  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing
  products from Adafruit!
  Written by Limor Fried/Ladyada for Adafruit Industries.
  MIT license, all text above must be included in any redistribution
 ****************************************************/
 /*
    Ported to mbed by James Kidd
 */
#include <stdint.h>
#include <stdbool.h>
#include "Adafruit_GFX.h"
#include "mbed.h"

#include "BurstSPI.h"
#define spi_begin()
#define spi_end()

//#defines

#define LCD_SPI_MODE 0x03
#define LCD_SPI_BITS 0x10

//May need to lower this on certain boards
#define LCD_FREQ 6200000

#define PIN_RST  0x00
#define PIN_SCE  0x01
#define PIN_DC   0x02

#define ILI9341_TFTWIDTH  240
#define ILI9341_TFTHEIGHT 320

#define ILI9341_NOP     0x00
#define ILI9341_SWRESET 0x01
#define ILI9341_RDDID   0x04
#define ILI9341_RDDST   0x09

#define ILI9341_SLPIN   0x10
#define ILI9341_SLPOUT  0x11
#define ILI9341_PTLON   0x12
#define ILI9341_NORON   0x13

#define ILI9341_RDMODE  0x0A
#define ILI9341_RDMADCTL  0x0B
#define ILI9341_RDPIXFMT  0x0C
#define ILI9341_RDIMGFMT  0x0A
#define ILI9341_RDSELFDIAG  0x0F

#define ILI9341_INVOFF  0x20
#define ILI9341_INVON   0x21
#define ILI9341_GAMMASET 0x26
#define ILI9341_DISPOFF 0x28
#define ILI9341_DISPON  0x29

#define ILI9341_CASET   0x2A
#define ILI9341_PASET   0x2B
#define ILI9341_RAMWR   0x2C
#define ILI9341_RAMRD   0x2E

#define ILI9341_PTLAR   0x30
#define ILI9341_MADCTL  0x36
#define ILI9341_PIXFMT  0x3A

#define ILI9341_FRMCTR1 0xB1
#define ILI9341_FRMCTR2 0xB2
#define ILI9341_FRMCTR3 0xB3
#define ILI9341_INVCTR  0xB4
#define ILI9341_DFUNCTR 0xB6

#define ILI9341_PWCTR1  0xC0
#define ILI9341_PWCTR2  0xC1
#define ILI9341_PWCTR3  0xC2
#define ILI9341_PWCTR4  0xC3
#define ILI9341_PWCTR5  0xC4
#define ILI9341_VMCTR1  0xC5
#define ILI9341_VMCTR2  0xC7

#define ILI9341_RDID1   0xDA
#define ILI9341_RDID2   0xDB
#define ILI9341_RDID3   0xDC
#define ILI9341_RDID4   0xDD

#define ILI9341_GMCTRP1 0xE0
#define ILI9341_GMCTRN1 0xE1
/*
#define ILI9341_PWCTR6  0xFC
*/

// Color definitions
#define ILI9341_BLACK   0x0000
#define ILI9341_BLUE    0x001F
#define ILI9341_RED     0xF800
#define ILI9341_GREEN   0x07E0
#define ILI9341_CYAN    0x07FF
#define ILI9341_MAGENTA 0xF81F
#define ILI9341_YELLOW  0xFFE0
#define ILI9341_WHITE   0xFFFF

#define DELAY 0x80
//structs
struct AdaLcdPins
{
    PinName mosi;
    PinName miso;
    PinName sclk;
    PinName dc;
    PinName cs;
    PinName rst;
};


class Adafruit_ILI9341 : public Adafruit_GFX {
public:
    Adafruit_ILI9341(PinName DC, PinName CS, PinName RST);

     void     begin(void),
               setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1),
               pushColor(uint16_t color),
               fillScreen(uint16_t color),
               drawPixel(int16_t x, int16_t y, uint16_t color),
               drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
               drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
               fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
                 uint16_t color),
               setRotation(uint8_t r),
               invertDisplay(bool i);
      uint16_t color565(uint8_t r, uint8_t g, uint8_t b);

      void     spiwrite(uint16_t),
          writecommand(uint8_t c),
          writedata(uint16_t d),
          commandList(uint8_t *addr);
        uint8_t  spiread(void);



        uint8_t  readdata(void),
          readcommand8(uint8_t reg, uint8_t index = 0);
       // uint8_t  readdata(void),
        //  readcommand8(uint8_t reg, uint8_t index = 0);

private:
        bool hwSPI;
   AdaLcdPins _pins;
   BurstSPI* LcdSPI;
   DigitalOut** Pins;
   uint8_t  tabcolor;
};