This is the final version of Mini Gateway for Automation and Security desgined for Renesas GR Peach Design Contest

Dependencies:   GR-PEACH_video GraphicsFramework HTTPServer R_BSP mbed-rpc mbed-rtos Socket lwip-eth lwip-sys lwip FATFileSystem

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
vipinranka
Date:
Wed Jan 11 11:41:30 2017 +0000
Revision:
12:9a20164dcc47
This is the final version MGAS Project for Renesas GR Peach Design Contest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vipinranka 12:9a20164dcc47 1 /* mbed UniGraphic library - Device specific class
vipinranka 12:9a20164dcc47 2 * Copyright (c) 2015 Giuliano Dianda
vipinranka 12:9a20164dcc47 3 * Released under the MIT License: http://mbed.org/license/mit
vipinranka 12:9a20164dcc47 4 */
vipinranka 12:9a20164dcc47 5 #include "Protocols.h"
vipinranka 12:9a20164dcc47 6 #include "ILI9486.h"
vipinranka 12:9a20164dcc47 7
vipinranka 12:9a20164dcc47 8 //////////////////////////////////////////////////////////////////////////////////
vipinranka 12:9a20164dcc47 9 // display settings ///////////////////////////////////////////////////////
vipinranka 12:9a20164dcc47 10 /////////////////////////////////////////////////////////////////////////
vipinranka 12:9a20164dcc47 11
vipinranka 12:9a20164dcc47 12 // put in constructor
vipinranka 12:9a20164dcc47 13 //#define LCDSIZE_X 320 // display X pixels, TFTs are usually portrait view
vipinranka 12:9a20164dcc47 14 //#define LCDSIZE_Y 480 // display Y pixels
vipinranka 12:9a20164dcc47 15
vipinranka 12:9a20164dcc47 16
vipinranka 12:9a20164dcc47 17
vipinranka 12:9a20164dcc47 18 ILI9486::ILI9486(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char *name , unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y)
vipinranka 12:9a20164dcc47 19 : TFT(displayproto, port, CS, reset, DC, WR, RD, LCDSIZE_X, LCDSIZE_Y, name)
vipinranka 12:9a20164dcc47 20 {
vipinranka 12:9a20164dcc47 21 hw_reset();
vipinranka 12:9a20164dcc47 22 BusEnable(true);
vipinranka 12:9a20164dcc47 23 identify(); // will collect tftID and set mipistd flag
vipinranka 12:9a20164dcc47 24 init();
vipinranka 12:9a20164dcc47 25 auto_gram_read_format();// try to get read gram pixel format, could be 16bit or 18bit, RGB or BGR. Will set flags accordingly
vipinranka 12:9a20164dcc47 26 set_orientation(0);
vipinranka 12:9a20164dcc47 27 // FastWindow(true); // most but not all controllers support this, even if datasheet tells they should. ILI9486 does not, at least in par mode
vipinranka 12:9a20164dcc47 28 cls();
vipinranka 12:9a20164dcc47 29 locate(0,0);
vipinranka 12:9a20164dcc47 30 }
vipinranka 12:9a20164dcc47 31 ILI9486::ILI9486(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y)
vipinranka 12:9a20164dcc47 32 : TFT(displayproto, Hz, mosi, miso, sclk, CS, reset, DC, LCDSIZE_X, LCDSIZE_Y, name)
vipinranka 12:9a20164dcc47 33 {
vipinranka 12:9a20164dcc47 34 hw_reset(); //TFT class forwards to Protocol class
vipinranka 12:9a20164dcc47 35 BusEnable(true); //TFT class forwards to Protocol class
vipinranka 12:9a20164dcc47 36 identify(); // will collect tftID and set mipistd flag
vipinranka 12:9a20164dcc47 37 init(); // per display custom init cmd sequence, implemented here
vipinranka 12:9a20164dcc47 38 //auto_gram_read_format();// try to get read gram pixel format, could be 16bit or 18bit, RGB or BGR. Will set flags accordingly
vipinranka 12:9a20164dcc47 39 set_orientation(0); //TFT class does for MIPI standard and some ILIxxx
vipinranka 12:9a20164dcc47 40 // FastWindow(true); // most but not all controllers support this, even if datasheet tells they should. ILI9486 does not, at least in par mode
vipinranka 12:9a20164dcc47 41 cls();
vipinranka 12:9a20164dcc47 42 locate(0,0);
vipinranka 12:9a20164dcc47 43 }
vipinranka 12:9a20164dcc47 44 // reset and init the lcd controller
vipinranka 12:9a20164dcc47 45 void ILI9486::init()
vipinranka 12:9a20164dcc47 46 {
vipinranka 12:9a20164dcc47 47 /* Start Initial Sequence ----------------------------------------------------*/
vipinranka 12:9a20164dcc47 48
vipinranka 12:9a20164dcc47 49
vipinranka 12:9a20164dcc47 50 wr_cmd8(0x11); // sleep out
vipinranka 12:9a20164dcc47 51 wait_ms(150);
vipinranka 12:9a20164dcc47 52
vipinranka 12:9a20164dcc47 53
vipinranka 12:9a20164dcc47 54 wr_cmd8(0xF1);
vipinranka 12:9a20164dcc47 55 wr_data16(0x36);
vipinranka 12:9a20164dcc47 56 wr_data16(0x04);
vipinranka 12:9a20164dcc47 57 wr_data16(0x00);
vipinranka 12:9a20164dcc47 58 wr_data16(0x3C);
vipinranka 12:9a20164dcc47 59 wr_data16(0x0F);
vipinranka 12:9a20164dcc47 60 wr_data16(0x8F);
vipinranka 12:9a20164dcc47 61
vipinranka 12:9a20164dcc47 62
vipinranka 12:9a20164dcc47 63 wr_cmd8(0xF2);
vipinranka 12:9a20164dcc47 64 wr_data16(0x18);
vipinranka 12:9a20164dcc47 65 wr_data16(0xA3);
vipinranka 12:9a20164dcc47 66 wr_data16(0x12);
vipinranka 12:9a20164dcc47 67 wr_data16(0x02);
vipinranka 12:9a20164dcc47 68 wr_data16(0xb2);
vipinranka 12:9a20164dcc47 69 wr_data16(0x12);
vipinranka 12:9a20164dcc47 70 wr_data16(0xFF);
vipinranka 12:9a20164dcc47 71 wr_data16(0x10);
vipinranka 12:9a20164dcc47 72 wr_data16(0x00);
vipinranka 12:9a20164dcc47 73
vipinranka 12:9a20164dcc47 74 wr_cmd8(0xF8);
vipinranka 12:9a20164dcc47 75 wr_data16(0x21);
vipinranka 12:9a20164dcc47 76 wr_data16(0x04);
vipinranka 12:9a20164dcc47 77
vipinranka 12:9a20164dcc47 78 wr_cmd8(0xF9);
vipinranka 12:9a20164dcc47 79 wr_data16(0x00);
vipinranka 12:9a20164dcc47 80 wr_data16(0x08);
vipinranka 12:9a20164dcc47 81
vipinranka 12:9a20164dcc47 82 wr_cmd8(0xC0);
vipinranka 12:9a20164dcc47 83 wr_data16(0x0f); //13
vipinranka 12:9a20164dcc47 84 wr_data16(0x0f); //10
vipinranka 12:9a20164dcc47 85
vipinranka 12:9a20164dcc47 86 wr_cmd8(0xC1);
vipinranka 12:9a20164dcc47 87 wr_data16(0x42); //43
vipinranka 12:9a20164dcc47 88
vipinranka 12:9a20164dcc47 89 wr_cmd8(0xC2);
vipinranka 12:9a20164dcc47 90 wr_data16(0x22);
vipinranka 12:9a20164dcc47 91
vipinranka 12:9a20164dcc47 92 wr_cmd8(0xC5);
vipinranka 12:9a20164dcc47 93 wr_data16(0x01); //00
vipinranka 12:9a20164dcc47 94 wr_data16(0x29); //4D
vipinranka 12:9a20164dcc47 95 wr_data16(0x80);
vipinranka 12:9a20164dcc47 96
vipinranka 12:9a20164dcc47 97 wr_cmd8(0xB6);
vipinranka 12:9a20164dcc47 98 wr_data16(0x00);
vipinranka 12:9a20164dcc47 99 wr_data16(0x22); //42
vipinranka 12:9a20164dcc47 100 wr_data16(0x3b);
vipinranka 12:9a20164dcc47 101
vipinranka 12:9a20164dcc47 102 wr_cmd8(0xB1);
vipinranka 12:9a20164dcc47 103 wr_data16(0xD0); //C0
vipinranka 12:9a20164dcc47 104 wr_data16(0x11);
vipinranka 12:9a20164dcc47 105
vipinranka 12:9a20164dcc47 106 wr_cmd8(0xB4);
vipinranka 12:9a20164dcc47 107 wr_data16(0x02); //01
vipinranka 12:9a20164dcc47 108
vipinranka 12:9a20164dcc47 109 wr_cmd8(0xE0);
vipinranka 12:9a20164dcc47 110 wr_data16(0x0F);
vipinranka 12:9a20164dcc47 111 wr_data16(0x18);
vipinranka 12:9a20164dcc47 112 wr_data16(0x15);
vipinranka 12:9a20164dcc47 113 wr_data16(0x09);
vipinranka 12:9a20164dcc47 114 wr_data16(0x0B);
vipinranka 12:9a20164dcc47 115 wr_data16(0x04);
vipinranka 12:9a20164dcc47 116 wr_data16(0x49);
vipinranka 12:9a20164dcc47 117 wr_data16(0x64);
vipinranka 12:9a20164dcc47 118 wr_data16(0x3D);
vipinranka 12:9a20164dcc47 119 wr_data16(0x08);
vipinranka 12:9a20164dcc47 120 wr_data16(0x15);
vipinranka 12:9a20164dcc47 121 wr_data16(0x06);
vipinranka 12:9a20164dcc47 122 wr_data16(0x12);
vipinranka 12:9a20164dcc47 123 wr_data16(0x07);
vipinranka 12:9a20164dcc47 124 wr_data16(0x00);
vipinranka 12:9a20164dcc47 125
vipinranka 12:9a20164dcc47 126 wr_cmd8(0xE1);
vipinranka 12:9a20164dcc47 127 wr_data16(0x0F);
vipinranka 12:9a20164dcc47 128 wr_data16(0x38);
vipinranka 12:9a20164dcc47 129 wr_data16(0x35);
vipinranka 12:9a20164dcc47 130 wr_data16(0x0a);
vipinranka 12:9a20164dcc47 131 wr_data16(0x0c);
vipinranka 12:9a20164dcc47 132 wr_data16(0x03);
vipinranka 12:9a20164dcc47 133 wr_data16(0x4A);
vipinranka 12:9a20164dcc47 134 wr_data16(0x42);
vipinranka 12:9a20164dcc47 135 wr_data16(0x36);
vipinranka 12:9a20164dcc47 136 wr_data16(0x04);
vipinranka 12:9a20164dcc47 137 wr_data16(0x0F);
vipinranka 12:9a20164dcc47 138 wr_data16(0x03);
vipinranka 12:9a20164dcc47 139 wr_data16(0x1F);
vipinranka 12:9a20164dcc47 140 wr_data16(0x1B);
vipinranka 12:9a20164dcc47 141 wr_data16(0x00);
vipinranka 12:9a20164dcc47 142
vipinranka 12:9a20164dcc47 143 wr_cmd8(0x20); // display inversion OFF
vipinranka 12:9a20164dcc47 144
vipinranka 12:9a20164dcc47 145 wr_cmd8(0x36); // MEMORY_ACCESS_CONTROL (orientation stuff)
vipinranka 12:9a20164dcc47 146 wr_data16(0x0A);
vipinranka 12:9a20164dcc47 147
vipinranka 12:9a20164dcc47 148 wr_cmd8(0x3A); // COLMOD_PIXEL_FORMAT_SET
vipinranka 12:9a20164dcc47 149 wr_data16(0x55); // 16 bit pixel
vipinranka 12:9a20164dcc47 150
vipinranka 12:9a20164dcc47 151 wr_cmd8(0x13); // Nomal Displaymode
vipinranka 12:9a20164dcc47 152
vipinranka 12:9a20164dcc47 153
vipinranka 12:9a20164dcc47 154
vipinranka 12:9a20164dcc47 155
vipinranka 12:9a20164dcc47 156
vipinranka 12:9a20164dcc47 157
vipinranka 12:9a20164dcc47 158 wr_cmd8(0x29); // display on
vipinranka 12:9a20164dcc47 159
vipinranka 12:9a20164dcc47 160
vipinranka 12:9a20164dcc47 161 wait_ms(150);
vipinranka 12:9a20164dcc47 162 }