Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of UniGraphic by
Inits/TFT_MIPI.cpp@4:12ba0ecc2c1f, 2015-02-15 (annotated)
- Committer:
- Geremia
- Date:
- Sun Feb 15 20:06:07 2015 +0000
- Revision:
- 4:12ba0ecc2c1f
- Child:
- 7:bb0383b91104
Added PAR16, separated 16bit writes for cmd parameters and pixeldata
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Geremia | 4:12ba0ecc2c1f | 1 | /* mbed UniGraphic library - Device specific class |
| Geremia | 4:12ba0ecc2c1f | 2 | * Copyright (c) 2015 Giuliano Dianda |
| Geremia | 4:12ba0ecc2c1f | 3 | * Released under the MIT License: http://mbed.org/license/mit |
| Geremia | 4:12ba0ecc2c1f | 4 | */ |
| Geremia | 4:12ba0ecc2c1f | 5 | #include "Protocols.h" |
| Geremia | 4:12ba0ecc2c1f | 6 | #include "TFT_MIPI.h" |
| Geremia | 4:12ba0ecc2c1f | 7 | |
| Geremia | 4:12ba0ecc2c1f | 8 | ////////////////////////////////////////////////////////////////////////////////// |
| Geremia | 4:12ba0ecc2c1f | 9 | // display settings /////////////////////////////////////////////////////// |
| Geremia | 4:12ba0ecc2c1f | 10 | ///////////////////////////////////////////////////////////////////////// |
| Geremia | 4:12ba0ecc2c1f | 11 | |
| Geremia | 4:12ba0ecc2c1f | 12 | #define LCDSIZE_X 320 // display X pixels, TFTs are usually portrait view |
| Geremia | 4:12ba0ecc2c1f | 13 | #define LCDSIZE_Y 480 // display Y pixels |
| Geremia | 4:12ba0ecc2c1f | 14 | |
| Geremia | 4:12ba0ecc2c1f | 15 | |
| Geremia | 4:12ba0ecc2c1f | 16 | |
| Geremia | 4:12ba0ecc2c1f | 17 | TFT_MIPI::TFT_MIPI(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char *name) |
| Geremia | 4:12ba0ecc2c1f | 18 | : TFT(displayproto, port, CS, reset, DC, WR, RD, LCDSIZE_X, LCDSIZE_Y, name) |
| Geremia | 4:12ba0ecc2c1f | 19 | { |
| Geremia | 4:12ba0ecc2c1f | 20 | hw_reset(); |
| Geremia | 4:12ba0ecc2c1f | 21 | BusEnable(true); |
| Geremia | 4:12ba0ecc2c1f | 22 | init(); |
| Geremia | 4:12ba0ecc2c1f | 23 | mipistd=true; |
| Geremia | 4:12ba0ecc2c1f | 24 | set_orientation(0); |
| Geremia | 4:12ba0ecc2c1f | 25 | cls(); |
| Geremia | 4:12ba0ecc2c1f | 26 | locate(0,0); |
| Geremia | 4:12ba0ecc2c1f | 27 | } |
| Geremia | 4:12ba0ecc2c1f | 28 | TFT_MIPI::TFT_MIPI(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const char *name) |
| Geremia | 4:12ba0ecc2c1f | 29 | : TFT(displayproto, Hz, mosi, miso, sclk, CS, reset, DC, LCDSIZE_X, LCDSIZE_Y, name) |
| Geremia | 4:12ba0ecc2c1f | 30 | { |
| Geremia | 4:12ba0ecc2c1f | 31 | hw_reset(); //TFT class forwards to Protocol class |
| Geremia | 4:12ba0ecc2c1f | 32 | BusEnable(true); //TFT class forwards to Protocol class |
| Geremia | 4:12ba0ecc2c1f | 33 | init(); // per display custom init cmd sequence, implemented here |
| Geremia | 4:12ba0ecc2c1f | 34 | mipistd=true; |
| Geremia | 4:12ba0ecc2c1f | 35 | set_orientation(0); //TFT class does for MIPI standard and some ILIxxx |
| Geremia | 4:12ba0ecc2c1f | 36 | cls(); |
| Geremia | 4:12ba0ecc2c1f | 37 | locate(0,0); |
| Geremia | 4:12ba0ecc2c1f | 38 | } |
| Geremia | 4:12ba0ecc2c1f | 39 | // reset and init the lcd controller |
| Geremia | 4:12ba0ecc2c1f | 40 | void TFT_MIPI::init() |
| Geremia | 4:12ba0ecc2c1f | 41 | { |
| Geremia | 4:12ba0ecc2c1f | 42 | /* Start Initial Sequence ----------------------------------------------------*/ |
| Geremia | 4:12ba0ecc2c1f | 43 | |
| Geremia | 4:12ba0ecc2c1f | 44 | /* Start Initial Sequence ----------------------------------------------------*/ |
| Geremia | 4:12ba0ecc2c1f | 45 | wr_cmd8(0xD0); // POWER SETTING |
| Geremia | 4:12ba0ecc2c1f | 46 | wr_data8(0x07); |
| Geremia | 4:12ba0ecc2c1f | 47 | wr_data8(0x42); |
| Geremia | 4:12ba0ecc2c1f | 48 | wr_data8(0x18); |
| Geremia | 4:12ba0ecc2c1f | 49 | |
| Geremia | 4:12ba0ecc2c1f | 50 | wr_cmd8(0xD1); // VCOM control |
| Geremia | 4:12ba0ecc2c1f | 51 | wr_data8(0x00); |
| Geremia | 4:12ba0ecc2c1f | 52 | wr_data8(0x07); |
| Geremia | 4:12ba0ecc2c1f | 53 | wr_data8(0x10); |
| Geremia | 4:12ba0ecc2c1f | 54 | |
| Geremia | 4:12ba0ecc2c1f | 55 | wr_cmd8(0xD2); // Power_Setting for Normal Mode |
| Geremia | 4:12ba0ecc2c1f | 56 | wr_data8(0x01); // LCD power supply current |
| Geremia | 4:12ba0ecc2c1f | 57 | wr_data8(0x02); // charge pumps |
| Geremia | 4:12ba0ecc2c1f | 58 | |
| Geremia | 4:12ba0ecc2c1f | 59 | wr_cmd8(0xC0); // Panel Driving Setting |
| Geremia | 4:12ba0ecc2c1f | 60 | wr_data8(0x10); // 10 orig |
| Geremia | 4:12ba0ecc2c1f | 61 | wr_data8(0x3B); //number of lines+1 *8 |
| Geremia | 4:12ba0ecc2c1f | 62 | wr_data8(0x00); |
| Geremia | 4:12ba0ecc2c1f | 63 | wr_data8(0x02); |
| Geremia | 4:12ba0ecc2c1f | 64 | wr_data8(0x11); |
| Geremia | 4:12ba0ecc2c1f | 65 | |
| Geremia | 4:12ba0ecc2c1f | 66 | // C1 missing? Display_Timing_Setting for Normal Mode |
| Geremia | 4:12ba0ecc2c1f | 67 | |
| Geremia | 4:12ba0ecc2c1f | 68 | //renesas does not have this |
| Geremia | 4:12ba0ecc2c1f | 69 | // wr_cmd8(0xC5); // Frame Rate and Inversion Control |
| Geremia | 4:12ba0ecc2c1f | 70 | // wr_data8(0x03); // 72hz, datashet tells default 02=85hz |
| Geremia | 4:12ba0ecc2c1f | 71 | |
| Geremia | 4:12ba0ecc2c1f | 72 | wr_cmd8(0xC8); // Gamma settings |
| Geremia | 4:12ba0ecc2c1f | 73 | wr_data8(0x00); |
| Geremia | 4:12ba0ecc2c1f | 74 | wr_data8(0x32); |
| Geremia | 4:12ba0ecc2c1f | 75 | wr_data8(0x36); |
| Geremia | 4:12ba0ecc2c1f | 76 | wr_data8(0x45); |
| Geremia | 4:12ba0ecc2c1f | 77 | wr_data8(0x06); |
| Geremia | 4:12ba0ecc2c1f | 78 | wr_data8(0x16); |
| Geremia | 4:12ba0ecc2c1f | 79 | wr_data8(0x37); |
| Geremia | 4:12ba0ecc2c1f | 80 | wr_data8(0x75); |
| Geremia | 4:12ba0ecc2c1f | 81 | wr_data8(0x77); |
| Geremia | 4:12ba0ecc2c1f | 82 | wr_data8(0x54); |
| Geremia | 4:12ba0ecc2c1f | 83 | wr_data8(0x0C); |
| Geremia | 4:12ba0ecc2c1f | 84 | wr_data8(0x00); |
| Geremia | 4:12ba0ecc2c1f | 85 | |
| Geremia | 4:12ba0ecc2c1f | 86 | |
| Geremia | 4:12ba0ecc2c1f | 87 | |
| Geremia | 4:12ba0ecc2c1f | 88 | wr_cmd8(0x36); // MEMORY_ACCESS_CONTROL (orientation stuff) |
| Geremia | 4:12ba0ecc2c1f | 89 | wr_data8(0x0A); // 0A as per chinese example (vertical flipped) |
| Geremia | 4:12ba0ecc2c1f | 90 | |
| Geremia | 4:12ba0ecc2c1f | 91 | wr_cmd8(0x3A); // COLMOD_PIXEL_FORMAT_SET, not present in AN |
| Geremia | 4:12ba0ecc2c1f | 92 | wr_data8(0x55); // 16 bit pixel |
| Geremia | 4:12ba0ecc2c1f | 93 | |
| Geremia | 4:12ba0ecc2c1f | 94 | wr_cmd8(0x13); // Nomal Displaymode |
| Geremia | 4:12ba0ecc2c1f | 95 | |
| Geremia | 4:12ba0ecc2c1f | 96 | wr_cmd8(0x11); // sleep out |
| Geremia | 4:12ba0ecc2c1f | 97 | wait_ms(150); |
| Geremia | 4:12ba0ecc2c1f | 98 | |
| Geremia | 4:12ba0ecc2c1f | 99 | wr_cmd8(0x29); // display on |
| Geremia | 4:12ba0ecc2c1f | 100 | wait_ms(150); |
| Geremia | 4:12ba0ecc2c1f | 101 | |
| Geremia | 4:12ba0ecc2c1f | 102 | } |
