Lib for FTDI FT800 graphic controller "EVE" The API is changed from the FTDI original names. It use smaller names now. DL() will add something to the display list instead of Ft_App_WrCoCmd_Buffer ... The FTDI programmer Guide is also using this commands.

Dependents:   FT800_RGB_demo FT800_RGB_demo2 FT800_demo_for_habr Temp_&_RH_at_TFT-demo ... more

Fork of FT800 by Peter Drescher

The mbed is talking thru the SPI interface with the graphic engine. We have to set up a list of Commands and send them to the FT800 to get graphics.

Hardware

1. VM800C development modules from FTDI : http://www.ftdichip.com/Products/Modules/VM800C.html

The modules come with different size lcd. 3.5", 4.3" or 5" or without. /media/uploads/dreschpe/ftdi_eve.jpg The picture shows a modified board, because my lcd had a different pinout. The mbed is connected to the pin header on the bottom.

2. EVBEVE-FT800 board from GLYN: http://www.glyn.com/News-Events/Newsletter/Newsletter-2013/October-2013/A-quick-start-for-EVE-Requires-no-basic-knowledge-graphics-sound-and-touch-can-all-be-learned-in-minutes

The module has a 40 pin flex cable connector to connect a display out of the EDT series.

/media/uploads/dreschpe/glyn_eve.jpg

The mbed is connected via the pin header on the left. If you use this board with a EDT display you have to uncomment the #define Inv_Backlite in FT_LCD_Type.h, because the backlight dimming is inverted.

3. ConnectEVE board from MikroElektronika http://www.mikroe.com/add-on-boards/display/connecteve/#headers_10 The board has also a pin header to connect the mbed. - not tested, but it looks like the other boards.

4. ADAM arduino shield http://www.4dsystems.com.au/product/4DLCD_FT843/ Component page : http://mbed.org/components/ADAM/

Works with the NUCLEO boards, but you have to patch three wires.

/media/uploads/dreschpe/adam.jpg

Connection

We need 5 signals to connect to the mbed. SCK, MOSI and MISO are connected to a SPI channel. SS is the chip select signal and PD work as powerdown. The additional INT signal is not used at the moment. It is possible to generate a interrupt signal, but at the moment you have to poll the status register of the FT800 to see if a command is finished.

Software

This lib is based on the demo code from FTDI. If you want to use it, you have to read the programming manual : http://www.ftdichip.com/Support/Documents/ProgramGuides/FT800%20Programmers%20Guide.pdf

See my demo : http://mbed.org/users/dreschpe/code/FT800_RGB_demo/

Committer:
dreschpe
Date:
Tue Feb 10 23:32:22 2015 +0000
Revision:
6:16e22c789f7d
Parent:
2:ab74a9a05970
Add function to read/write touch calibration data.; Add color names  ; Add a patch from  Ivano Pelicella to draw flat buttons

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreschpe 2:ab74a9a05970 1 /* mbed Library for FTDI FT800 Enbedded Video Engine "EVE"
dreschpe 2:ab74a9a05970 2 * based on Original Code Sample from FTDI
dreschpe 2:ab74a9a05970 3 * ported to mbed by Peter Drescher, DC2PD 2014
dreschpe 2:ab74a9a05970 4 * Released under the MIT License: http://mbed.org/license/mit */
dreschpe 2:ab74a9a05970 5
dreschpe 0:5e013296b353 6 #ifndef _FT_DATATYPES_H_
dreschpe 0:5e013296b353 7 #define _FT_DATATYPES_H_
dreschpe 0:5e013296b353 8
dreschpe 0:5e013296b353 9
dreschpe 0:5e013296b353 10 #define FT_FALSE (0)
dreschpe 0:5e013296b353 11 #define FT_TRUE (1)
dreschpe 0:5e013296b353 12
dreschpe 0:5e013296b353 13 typedef char ft_char8_t;
dreschpe 0:5e013296b353 14 typedef signed char ft_schar8_t;
dreschpe 0:5e013296b353 15 typedef unsigned char ft_uchar8_t;
dreschpe 0:5e013296b353 16 typedef ft_uchar8_t ft_uint8_t;
dreschpe 0:5e013296b353 17 typedef short ft_int16_t;
dreschpe 0:5e013296b353 18 typedef unsigned short ft_uint16_t;
dreschpe 0:5e013296b353 19 typedef unsigned int ft_uint32_t;
dreschpe 0:5e013296b353 20 typedef int ft_int32_t;
dreschpe 0:5e013296b353 21 typedef void ft_void_t;
dreschpe 0:5e013296b353 22 typedef long long ft_int64_t;
dreschpe 0:5e013296b353 23 typedef unsigned long long ft_uint64_t;
dreschpe 0:5e013296b353 24 typedef float ft_float_t;
dreschpe 0:5e013296b353 25 typedef double ft_double_t;
dreschpe 0:5e013296b353 26 typedef char ft_bool_t;
dreschpe 0:5e013296b353 27
dreschpe 0:5e013296b353 28 #define FT_BYTE_SIZE (1)
dreschpe 0:5e013296b353 29 #define FT_SHORT_SIZE (2)
dreschpe 0:5e013296b353 30 #define FT_WORD_SIZE (4)
dreschpe 0:5e013296b353 31 #define FT_DWORD_SIZE (8)
dreschpe 0:5e013296b353 32
dreschpe 0:5e013296b353 33 #define FT_NUMBITS_IN_BYTE (1*8)
dreschpe 0:5e013296b353 34 #define FT_NUMBITS_IN_SHORT (2*8)
dreschpe 0:5e013296b353 35 #define FT_NUMBITS_IN_WORD (4*8)
dreschpe 0:5e013296b353 36 #define FT_NUMBITS_IN_DWORD (8*8)
dreschpe 0:5e013296b353 37
dreschpe 0:5e013296b353 38 #define ft_prog_uchar8_t ft_uchar8_t
dreschpe 0:5e013296b353 39 #define ft_prog_char8_t ft_char8_t
dreschpe 0:5e013296b353 40 #define ft_prog_uint16_t ft_uint16_t
dreschpe 0:5e013296b353 41
dreschpe 0:5e013296b353 42 #define ft_random(x) (rand() % (x))
dreschpe 0:5e013296b353 43
dreschpe 0:5e013296b353 44 #define ft_pgm_read_byte_near(x) (*(x))
dreschpe 0:5e013296b353 45 #define ft_pgm_read_byte(x) (*(x))
dreschpe 0:5e013296b353 46
dreschpe 0:5e013296b353 47 #define ft_strcpy_P strcpy
dreschpe 0:5e013296b353 48 #define ft_strlen_P strlen
dreschpe 0:5e013296b353 49
dreschpe 0:5e013296b353 50 #define FT_DBGPRINT(x) printf(x)
dreschpe 1:bd671a31e765 51 #define FT_PROGMEM const
dreschpe 0:5e013296b353 52
dreschpe 0:5e013296b353 53 #define ft_pgm_read_byte_near(x) (*(x))
dreschpe 0:5e013296b353 54 #define ft_pgm_read_byte(x) (*(x))
dreschpe 0:5e013296b353 55
dreschpe 0:5e013296b353 56 #define ft_pgm_read_word(addr) (*(ft_int16_t*)(addr))
dreschpe 0:5e013296b353 57
dreschpe 0:5e013296b353 58 #endif /*_FT_DATATYPES_H_*/
dreschpe 0:5e013296b353 59
dreschpe 0:5e013296b353 60
dreschpe 0:5e013296b353 61 /* Nothing beyond this*/
dreschpe 0:5e013296b353 62
dreschpe 0:5e013296b353 63
dreschpe 0:5e013296b353 64
dreschpe 0:5e013296b353 65
dreschpe 0:5e013296b353 66
dreschpe 0:5e013296b353 67
dreschpe 0:5e013296b353 68