Lib for FTDI FT800 Graphic Controller EVE Support up to 512 x 512 pixel resolution. Resistive touch sense Mono audio output SPI Interface

Dependents:   FT800_touch_track FT800_JPG

Library for the FT800 Display,Audio and Touch Controller from FTDI. The Code is based on the sample code from FTDI.

FT800 is a graphics chip with added features such as audio playback and touch capabilities. FT800 graphics consist of a rich set of graphics objects (primitive and widgets) that can be used for displaying various menus and screen shots.

http://www.ftdichip.com/Products/ICs/FT800.html

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.

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_touch_track/

or the demo code from FTDI : http://www.ftdichip.com/Support/SoftwareExamples/EVE/FT800_SampleApp_1.0.zip

Committer:
dreschpe
Date:
Wed Jan 28 23:33:56 2015 +0000
Revision:
3:3c631ce6fbb5
Parent:
2:ab74a9a05970
Initial

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