TFT driver for ILI9341. I imported this library from Seeed-Studio-28-TFT-Touch-Shield-V20.
Dependents: TFT_sdcard TS_Eyes Tokei AfficheurTFTAdafruit ... more
Fork of SPI_TFT_ILI9341 by
Revision 2:0a16083193a4, committed 2013-07-21
- Comitter:
- dreschpe
- Date:
- Sun Jul 21 11:57:06 2013 +0000
- Parent:
- 1:6d6125e88de7
- Child:
- 3:3d7298360e45
- Commit message:
- implement set_orientation
Changed in this revision
| SPI_TFT_ILI9341.cpp | Show annotated file Show diff for this revision Revisions of this file |
| SPI_TFT_ILI9341.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/SPI_TFT_ILI9341.cpp Thu Jun 13 19:54:24 2013 +0000
+++ b/SPI_TFT_ILI9341.cpp Sun Jul 21 11:57:06 2013 +0000
@@ -11,6 +11,7 @@
*/
// 12.06.13 fork from SPI_TFT code because controller is different ...
+// 14.07.13 Test with real display and bugfix
#include "SPI_TFT_ILI9341.h"
#include "mbed.h"
@@ -43,25 +44,27 @@
}
-/*void SPI_TFT_ILI9341::set_orientation(unsigned int o)
+void SPI_TFT_ILI9341::set_orientation(unsigned int o)
{
orientation = o;
+ wr_cmd(0x36); // MEMORY_ACCESS_CONTROL
switch (orientation) {
case 0:
- wr_reg(0x16, 0x08);
+ _spi.write(0x48);
break;
case 1:
- wr_reg(0x16, 0x68);
+ _spi.write(0x28);
break;
case 2:
- wr_reg(0x16, 0xC8);
+ _spi.write(0x88);
break;
case 3:
- wr_reg(0x16, 0xA8);
+ _spi.write(0xE8);
break;
}
+ _cs = 1;
WindowMax();
-} */
+}
// write command to tft register
@@ -79,7 +82,6 @@
void SPI_TFT_ILI9341::wr_dat(unsigned char dat)
{
_spi.write(dat); // mbed lib
-// _cs = 1;
}
@@ -102,7 +104,7 @@
void SPI_TFT_ILI9341::tft_reset()
{
- _spi.format(8,3); // 8 bit spi mode 3
+ _spi.format(8,3); // 8 bit spi mode 3
_spi.frequency(10000000); // 10 Mhz SPI clock
_cs = 1; // cs high
_dc = 1; // dc high
@@ -674,18 +676,20 @@
unsigned int j;
int padd;
unsigned short *bitmap_ptr = (unsigned short *)bitmap;
+ unsigned int i;
+
// the lines are padded to multiple of 4 bytes in a bitmap
padd = -1;
do {
padd ++;
} while (2*(w + padd)%4 != 0);
window(x, y, w, h);
+ bitmap_ptr += ((h - 1)* (w + padd));
wr_cmd(0x2C); // send pixel
_spi.format(16,3); // switch to 16 bit Mode 3
- unsigned int i;
- for (j = 0; j < h; j++) { //Lines
- for (i = 0; i < w; i++) { // copy pixel data to TFT
- _spi.write(*bitmap_ptr); // one line
+ for (j = 0; j < h; j++) { //Lines
+ for (i = 0; i < w; i++) { // one line
+ _spi.write(*bitmap_ptr); // copy pixel data to TFT
bitmap_ptr++;
}
bitmap_ptr -= 2*w;
--- a/SPI_TFT_ILI9341.h Thu Jun 13 19:54:24 2013 +0000
+++ b/SPI_TFT_ILI9341.h Sun Jul 21 11:57:06 2013 +0000
@@ -1,5 +1,5 @@
-/* mbed library for 240*320 pixel display TFT based on HX8347D LCD Controller
- * Copyright (c) 2011 Peter Drescher - DC2PD
+/* mbed library for 240*320 pixel display TFT based on ILI9341 LCD Controller
+ * Copyright (c) 2013 Peter Drescher - DC2PD
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -57,9 +57,10 @@
*
*
*
- * // the TFT is connected to SPI pin 5-7
+ * // the TFT is connected to SPI pin 5-7 and IO's 8-10
* SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc
- *
+ * If your display need a signal for switch the backlight use a aditional IO pin in your program
+ *
* int main() {
* TFT.claim(stdout); // send stdout to the TFT display
* //TFT.claim(stderr); // send stderr to the TFT display
@@ -269,10 +270,10 @@
/** Set the orientation of the screen
* x,y: 0,0 is always top left
*
- * @param o direction to use the screen (0-3) 90� Steps
+ * @param o direction to use the screen (0-3)
*
*/
- //void set_orientation(unsigned int o);
+ void set_orientation(unsigned int o);
SPI _spi;
DigitalOut _cs;
