Anyone been using the FT800 ebedded video engine from FTDI?

Go To Last Post
21 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

As mentioned, did anyone already used this chip in a project, and what are the thoughts about the abilities?

While thinking of updating an existing project, my first candidate was a LPC178X, with embedded TFT driver(looking to use WQVGA or bigger), it has all I need and even more, also thought about using a SSD1963, but they aren't cheap and you need at least an 8bit wide data bus if you want some acceptable refresh(data) rates.

One of the advantages of the FT800 is that it uses SPI or I2C, which one can connect to a rather simple(small) µC, has embedded ram, touch and sound interface and real nice embedded widgets to build up some nice GUI's.

So I downloaded the API for the FT800, which also uses a Arduino as a platform, but I'm rather a bit disappointed on the way it's written, also not much comment's on what's really happening.

Also some of the exiting commands(or widgets, like the gauge or clock) are nice but in the mean time limited; as far as I understand it's not possible to add tick marks or labels.

Anyone any experience with them and has suggestions?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I guess now one have any experience with this chip.

I finally bought their development board, and I'm a bit disappointed, I expected more from FTDI.

Their software API is a mess, and do not really like how the chip is working.

For example, you need to rebuild the whole screen, even if you change only one little thing on the screen, say a different value for the gauge widget, when you're using the touch function, you need to rebuild each time the whole screen while sending commands to receive touch information, then react, and rebuild completely again.

I'll probably have to learn a lot, but still, not really my cup of thee.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

EVE
FTDI - Embedded Video Engine
4D Systems - Extensible Virtual Engine
Just a fyi; no answer for your questions.

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
For example, you need to rebuild the whole screen, even if you change only one little thing on the screen

I've just started playing with the FT800. It looks like a function called "scissor" determines a rectangular area where writing to the screen can take place. The default scissor rectangle is the entire screen, so perhaps when a small area needs to be modified, the scissor should be set appropriately. Haven't tested that feature yet...

Tom Pappano
Tulsa, Oklahoma

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

fleemy wrote:

Their software API is a mess, and do not really like how the chip is working.

For example, you need to rebuild the whole screen, ...

I can only agree with fleemy that the API, and the examples are an outrageous mess. Must have been written by a tank driver. Same for the documentation BTW. The programming guide is next to useless as a "guide", with plenty of errors and ambiguous language.

It took me the better part of a week to get the feel of it, and in the process I rewrote most of the API and an example.

Actually there's no need to redraw much, in the general case. Most redrawing is done by the chip itself. It's all about smarts in manipulating the display list. Plus scissor rectangles as a previous poster mentioned.

Here's my current sandbox, derived from the App_Gauges.ino example. The binary is about 8K (for Arduino uno), and works just fine.

I like the FT800's 1/16 pixel anti-aliasing, the alpha blending, and the SPI/I2C interface of course.

 

sandbox example for familiarization with FT800

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

TR3PA113

 

would you be willing to share your API and demo, I am trying to familiarize myself with their documentation and it sounds like you might have it documented better

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

rocksolidsr wrote:

would you be willing to share your API and demo, I am trying to familiarize myself with their documentation and it sounds like you might have it documented better

Sure, just let me know how I can send it, and perhaps what you plan to use the FT800 for.

Mind you I haven't been able to work on the API/example in the last month, so it's still in a half-baked state (although much cleaner and clearer than the original, IMO).

FYI I use the 4dsystems display (http://www.4dsystems.com.au/product/4DLCD_FT843/) and their flex-to-breadboard adapter.

-3P

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

TR3PA113

I've sent you a private message with my email if you could send it to me I would really appreciate it!!

 

I am using it on a VM800C 

http://www.ftdichip.com/Products...

 

I plan on trying to make my own wifi connected thermostat

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm making some progress with my FT800 application.  Nothing pretty just yet, but so far is acting as a simple HMI for viewing/changing a lot of numeric values and settings for a fairly complex system.  It is a revenue job so I can't say much about it, but it is a xmega based system that talks Modbus.  I do like how easy it is to implement buttons, etc. and especially the fact that *any* object drawn on the screen, whether text, button, "widget", shape, whatever, can be assigned a "tag" so that it can behave as a button when touched.  Still haven't tried "scissoring" yet.

Tom Pappano
Tulsa, Oklahoma

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

rocksolidsr wrote:

I am using it on a VM800C 

Sent, hope it works for you.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There is a source library posted at mcs electronics for the ft800 written in basic that may help those losing their hair over the chip.

 

http://mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=12555&sid=2e84f0e59448c782afa82f7d721bfe84

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi!

 

I´m using the FT800 and I found the circuit very powerful allowing a huge number of possibilities.

But I´m also glad to found out that I´m not the only one feeling that the example code from FTDI is terrible!

Anyway, I was able to get it working and I´m pleased with the result, however I want now to optimise it.

One of the aspect is to use the interrupts feature but there´s very little information in the documentation about when each flag is triggered.

Has anybody tried to implement interrupt based driver?

 

With best regards:

 

Eric

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

I'm using FT800 dev board from FTDI. I got the init part to work and now need help to go forward.

Can you post or send me your API and demo too.

Thanks.

Slava

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Tslava wrote:

Hi,

I'm using FT800 dev board from FTDI. I got the init part to work and now need help to go forward.

Can you post or send me your API and demo too.

Thanks.

Slava

Sure, just send me a PM with your email address. What do you plan to use it for?

.T

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Sent, have fun.

-T

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello, I'm having problems scaling a L8 bitmap... It is in rawh format so every Pixel has 1Byte value.

 

Here is my code so far but it is not working... Any suggestions?

 

Ft_App_WrDlCmd_Buffer(phost, CLEAR(1, 1, 1)); // clear screen
	Ft_App_WrDlCmd_Buffer(phost,COLOR_RGB(255,255,255));
	Ft_App_WrDlCmd_Buffer(phost,BITMAP_SOURCE(RAM_G));
	Ft_App_WrDlCmd_Buffer(phost,BITMAP_LAYOUT(L8, p_bmhdr->Stride, p_bmhdr->Height));
	Ft_App_WrDlCmd_Buffer(phost,BITMAP_SIZE(NEAREST, BORDER, BORDER, p_bmhdr->Width, p_bmhdr->Height));
	Ft_App_WrDlCmd_Buffer(phost,BEGIN(BITMAPS)); // start drawing bitmaps

	Ft_Gpu_CoCmd_Scale(phost, 4*65536,4*65536); 

	Ft_Gpu_CoCmd_SetMatrix(phost);

	Ft_App_WrDlCmd_Buffer(phost,VERTEX2II(0,0, 0, 0));
	Ft_App_WrDlCmd_Buffer(phost,END());
	Ft_App_WrDlCmd_Buffer(phost, DISPLAY() );

	
	Ft_App_Flush_DL_Buffer(phost);

	SAMAPP_GPU_DLSwap(DLSWAP_FRAME);

 

Thanks

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

 

I am glad I found this forum, and could read the positive experiences from people using this chip.

(That means I am missing something, and now I have hope to get it working nicely)

 

Perhaps someone here went through similar experience I am having and could give me some tips / suggestions ?

 

Here is a description of what I got so far:

-----------------------------------------------------

 

I found that, even with very very simple display lists (for example, CLEAR_COLOR (255,0,0) / CLEAR (1,1,1) / DISPLAY), the LCD panel will  show only a blank screen.

But I notice that the initial DL (the one that is created during initialization and before REG_PCLK is set, *does* work fine.)

So, after a lot of attempts, I manage to get arbitrary complex display lists working, if I use this trick:

REG_PCLK = 0
cmd_DLSTART
.
.
.
cmd_Display
cmd_Swap
<a small loop waiting for the command buffer to get empty>
REG_PCLK = 5

 

If I don't zero REG_PCLK, or if I skip the delay between swap and setting REG_PCLK again, the screen gets blanked.

 

Some project data:

-------------------------

SPI clock is 16MHz (after initialization) and 8MHz during initialization.
Display is New Haven 480x272 (NHD-4.3-480272EF-ASXV#-CTP)
The parameters I am using for this display:
#define FT_DISPLAY_HCYCLE       (548L) 
#define FT_DISPLAY_HOFFSET      (68L) 
#define FT_DISPLAY_HSYNC0       (25L) 
#define FT_DISPLAY_HSYNC1       (66L) 
#define FT_DISPLAY_VCYCLE       (292L) 
#define FT_DISPLAY_VOFFSET      (20L) 
#define FT_DISPLAY_VSYNC0       (8L) 
#define FT_DISPLAY_VSYNC1       (18L) 
#define FT_DISPLAY_SWIZZLE      (0L) 
#define FT_DISPLAY_PCLKPOL      (1L) 
#define FT_DISPLAY_HSIZE        (480L) 
#define FT_DISPLAY_VSIZE        (272L) 
#define FT_DISPLAY_PCLK         (5L)

 

I tried using external clock (12MHz xtal) and also internal with identical results

 

Here is my initialization code:

--------------------------------------

 spi_PDN_low (); 
 disp_delay (10); 
 spi_PDN_high (); 
 disp_delay (20); 
 // send active command to enable Graphic Engine, 
 //   followed by download of default DL into graphics engine, 
 //   followed by SPI settings wrt internal clock requirements during bootup stage 
 uint8_t FT_DLCODE_BOOTUP[12] = { 
   0, 0, 0, 2, // GPU instruction CLEAR_COLOR_RGB - black color 
   7, 0, 0, 38, // GPU instruction CLEAR 
   0, 0, 0, 0,  // GPU instruction DISPLAY 
 }; 
 // change the SPI clock to < 11MHz 
 spi_SlowClock (); 
 // wake up the processor from sleep state 
 disp_HostCommand (FT_ACTIVE); 
 // Set to use external clock 
 disp_HostCommand (FT_CLKEXT); 
 // download the first display list 
 spi_WriteN (FT_RAM_DL, FT_DLCODE_BOOTUP, 12); 
 // perform first swap command 
 spi_Write8 (REG_DLSWAP, FT_DLSWAP_FRAME); 
 // Set brightness to 25% 
 disp_DisplayDuty (32); 

 // Set the display configurations followed by external clock set, 
 // spi clock change wrt FT80x 
 spi_Write16 (REG_HCYCLE,   FT_DISPLAY_HCYCLE); 
 spi_Write16 (REG_HOFFSET,  FT_DISPLAY_HOFFSET); 
 spi_Write16 (REG_HSYNC0,   FT_DISPLAY_HSYNC0); 
 spi_Write16 (REG_HSYNC1,   FT_DISPLAY_HSYNC1); 
 spi_Write16 (REG_VCYCLE,   FT_DISPLAY_VCYCLE); 
 spi_Write16 (REG_VOFFSET,  FT_DISPLAY_VOFFSET); 
 spi_Write16 (REG_VSYNC0,   FT_DISPLAY_VSYNC0); 
 spi_Write16 (REG_VSYNC1,   FT_DISPLAY_VSYNC1); 
 spi_Write8  (REG_SWIZZLE,  FT_DISPLAY_SWIZZLE); 
 spi_Write8  (REG_PCLK_POL, FT_DISPLAY_PCLKPOL); 
 spi_Write8  (REG_CSPREAD,  1); 
 spi_Write16 (REG_HSIZE,    FT_DISPLAY_HSIZE); 
 spi_Write16 (REG_VSIZE,    FT_DISPLAY_VSIZE); 
 // after configuring display parameters, configure pclk 
 spi_Write8  (REG_PCLK,     FT_DISPLAY_PCLK); 

 // change the clock to maximum SPI operating frequency 
 spi_FastClock ();

 disp_SetDisplayEnablePin (); 
 disp_DisplayOn ();

My questions are:

----------------------

1 - Why is it necessary to zero REG_PCLK ? I found nothing on any documentation that would suggest this was required.

Does anyone here in the forum had to do the same thing ?

 

2 - Is there a way to not have to zero REG_PCLK between device lists ?

 

3 - Any comment / feedback on my initialization and / or parameters (especially  HOFFSET / HSYNC0 / HSYNC1 / VOFFSET / VSYNC0 / VSYNC1) are greatly appreciated

(I am suspicious something on those parameters are causing the FT801 to starve on processing power.)

 

Thanks

Edmar

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you are still on this thread, I too would greatly appreciate receiving your API and any other demos regarding the FTDI EVE chip, thank you very much!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
1 - Why is it necessary to zero REG_PCLK ? I found nothing on any documentation that would suggest this was required.

Does anyone here in the forum had to do the same thing ?

 

2 - Is there a way to not have to zero REG_PCLK between device lists ?

 

3 - Any comment / feedback on my initialization and / or parameters (especially  HOFFSET / HSYNC0 / HSYNC1 / VOFFSET / VSYNC0 / VSYNC1) are greatly appreciated

(I am suspicious something on those parameters are causing the FT801 to starve on processing power.)

 

Thanks

Edmar

 

1 - It is not necessary, you set it only once at the init.

 

2 - Did you try to reduce the SPI clock? Did you scope your SPI signals at the FT800 end?

 

3 - The initialisation parameters are dependent on which display you use, you should find those timing details(vertical front porch, back porch, etc) in the display data sheet.

 

I'm still using this chip, but initialization and SPI clock settings haven't changed for me in a while(still using the same display type), but from what I remember changing the SPI clock above 4Mhz, did not speedup the frame rate(doing a simple test displaying the frame rate only, nothing else). Now when using bitmaps and the like may need for a higher SPI clock, but still if the FT800 command buffer can't keep up with your microcontroller, using a higher SPI clock is useless anyway.

Last Edited: Sun. Jan 31, 2016 - 12:48 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

TR3PA113

   Wondering if you could post the code for your sandbox.  Here it is 4 years later and the FTDI examples have not improved.  I am struggling with FT800 examples that sometimes access the display list directly, sometimes write registers directly and sometimes use the coprocessor, with little explanation of what is going on.  I am trying to get something working on Arduino Beyond just the button demo, but not having much success.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Might consider Bridgetek as seems to have begun with EVE then follow-on were created.

About Us – Bridgetek

New Bridgetek Products | Mouser

edit :

Bridgetek Joins forces with Zerynth & Riverdi to forge IoT Technology Partnership.pdf

...

About Bridgetek Founded in 2016, ...

 

"Dare to be naïve." - Buckminster Fuller

Last Edited: Tue. Jul 9, 2019 - 09:56 AM