ftdi chip – embedded video engine designing with the ft800
TRANSCRIPT
FTDI Chip – Embedded Video Engine
Designing with the FT800
Agenda
• Introduction to “EVE”
• Key features and benefits
• Hardware and system requirements
• Do you require Audio?
• Display connections• Development flow
(software)• What are display
objects
• FT800 ‘is not complicated’
• Application examples: multiple display objects
• Application creation : Clocks
• EVE Code Creation• EVE Hardware
options• Supporting Utilities• Supporting
Documentation• VM800P Board Set up
FTDI Chip Overview
“Design Made Easy”
Multiple award winning solutions for USB and Display technology
Recent introduction of two Application Orientated
Controller (AOC) microcontroller families Free customer support
‘Royalty free’ drivers and software
Technically qualified sales network
Full range of associated development kits and USB interface cables
“EVE” Embedded
Video Engine
Typical Hardware
Current designs usually require• High-end µC typically 32-bit with abundant IO
+ external memory Higher cost and board area
• Graphics library and sometimes an Embedded OS required
• Expensive frame buffer IC required for display memory
• Touch and audio implementations needed
FT800 Hardware
• Low cost MCUs enabled (ATMEGA 328, PIC, 8051, etc)• 48 pin QFN for reduced PCB area • SPI/I²C interface options for reduced pins, simple interface• 262k colour (RGB – 6,6,6) WQVGA graphics• Touch controller• Audio output
FT800 Block Diagram
EVE Roadmap
• Upgrade to modern Human Machine Interface (HMI)• Replace mechanical switch (expensive, bespoke)• Increased functionality w/graphical feedback – e.g.
display and control temperature• Aesthetic versatility
Have Want
Where can we see these benefits?
Where can we see these benefits?
• Replace mechanical controls – save on expense and space
• Company logos instead of buttons• Audio feedback• Add adverts/information within commercial
environments
Have Want
“EVE” Key features and benefits
Key Features and benefits
The FT800’s object oriented approach renders images in a line by line fashion with 1/16th of a pixel resolution
• No expensive frame buffer (less RAM) required lowering system cost
• Anti-Aliasing• Allows the FT800 to produce
sharper, smoother edges with enhanced image quality, even on lower resolution displays.
• Alpha blending and masking algorithms• Create shadows / 3D /
fade effects
• In-built widgets for complex shapes
• Colour Dither• Allows the FT800 to calculate
for 8-bit colour despite only providing pins for 6-bit (RGB – 6,6,6)
• Improves half-tone appearance
• 8kbyte RAM stores display list• Approximately 2000 items
• Programmable Timing• Allows the FT800 to adjust
HSYNC and VSYNC timing enabling control of many different displays.
Key Features and benefits
• Mono audio (single pin) output from PWM
• 64-voice polyphonic synthesiser
– Play pre-stored sounds allowing for fast implementation of sound generation e.g. bells, chirps, beeps, alarms, clicks, DTMF tones
• Audio wave playback for mono-8-bit linear PCM, 4-bit ADPCM and µ-Law coding format at sampling frequency from 8kHz to 48kHz
• Designed for resistive touch screens
• Includes median filtering and touch force sensing to adjust the screens sensitivity.
• 4 wire control (X+, X-, Y+, Y-)
• Screen pressure alters resistance between the +/- signals with the value returned to the FT800.
• 10 bit ADC + processing enables location to be determined.
Design Cycle
1. Select your FT800 hardware
2. Confirm your Controller
3. Utilise the appropriate compiler
4. Design your application
Do you require Audio?
Designing with the FT800 – Hardware
• Audio Circuit
Display connections
Display Connections – RGB Swizzle
• What happens if the LCD Panel has a different pin out?
Display Connections – Data Spreading CSPREAD
RGB Timing with CSPREAD disabled
RGB Timing with CSPREAD enabled
Development flow:
7 Stages
Startup & Config
1. Configure the SPI/I2C interface
• SPI supports Mode 0 to 30MHz
• I2C supports up to 3.4Mbit/s
2. Wake up the FT800
• Fundamentally a dummy read to address 0 and configure
the PLL
Startup
3. Configure the TFT display timing parameters• Many displays will have different timing for horizontal and vertical
sync.
• FT800 has a set of 10 registers to set the synchronisation
• FT800 has 3 additional registers to control actual pixel clocking:
FT_DispPCLK – Pixel clock divisor
FT_DispSwizzle – Sync of RGB pixel clocking
FT_DispPCLKPol – Polarity of clock
Startup & Config
• Typical values for frame synchronisation:
REGISTER WQVGA
VGA
FT_DispWidth 480 320
FT_DispHeight
272 240
FT_DispHCycle
548 408
FT_DispHOffset
43 70
FT_DispHSync0
0 0
REGISTER WQVGA
VGA
FT_DispHSync1
41 10
FT_DispVCycle
292 263
FT_DispVOffset
12 13
FT_DispVSync0
0 0
FT_DispVSync1
10 2
Startup & Config
4. Configure the TFT display touch parameters
• Theoretically only required if using the touch
function.
• 19 registers to control sensitivity (charge and
settle) and monitor feedback
• Key ones are:
o Reg_Touch_Mode_Definition
o Reg_Touch_Charge_Definition
o Reg_Touch_Settle Definition
o Values dependant upon display
5. Create the display list
• Multiple paths for this.
• Direct to 8kRAM (2000 objects)
Note: An object may be visual, audio or touch.
• Via j1 co-processor.
6. Complete and swap the display list7. Compile and load the code into the system processor
FT800 Step 2 Create the Code (part 3)
• Enable the LCD
Data Paths
Graphic Processor Data Path
Audio and touch processor ctrl/data paths
What are display objects?
FT800 Graphic objects
‘EVE’ displays are created using two primary types of objects:
• Primitive objects (simple shapes)
• Widget objects
FT800 Graphic Primitives – Basic Shapes
• POINTS – anti-aliased points, point radius is 1-256 pixels
• LINES – anti-aliased lines, with width of 1-256 pixels (width is from center of the line to boundary)
FT800 Graphic Primitives – Basic Shapes
• LINE STRIP – anti-aliased lines, connected head-to-tail
• EDGE STRIP – Above, Below, Left, Right – anti aliased edge strips
FT800 Graphic Primitives – Basic Shapes
• RECTS – round-cornered anti-aliased rectangles (curvature of the corners can be adjusted using LINE WIDTH)
• BITMAPS – rectangular pixel arrays, in various color formats
FT800 Graphic Engine Widgets
• TEXT – draw text of varying font types and sizes
• BUTTON – draw a button• CLOCK – draw an analog clock face• GAUGE – draw a gauge with optional
pointer and tick marks• GRADIENT – draw a smooth color
gradient• KEYS – draw a row of keys• PROGRESS – draw a progress bar
showing two colors• SLIDER – draw a slider bar with knob• SCROLLBAR – draw a scroll bar• DIAL – draw a knob with an optional
pointer• TOGGLE – draw a selection bar with
two choices (yes/no, on/off, etc.)• NUMBER – draw a decimal number
with optional sign
FT800 Graphic Engine Widgets
Graphics functionality 2 – alpha blend, stencil buffer functionality.
Coprocessor Widget set 13
FT800 Graphic Engine Widgets
• Coprocessor in built functionality ~8 – jpeg decode (baseline), inflate, calibration, logo, screen saver, sketch, snapshot, set font
• Coprocessor in built operations – 1D memory operation, bitmap post processing, register read/write, interrupt generation etc.
• Coprocessor track – linear and rotary track.
FT800is not
complicated
FT800 Registry and Command Set
72 registers which are classified into 5 groups • Graphics Engine Registers• Audio Engine Registers • Touch Engine Registers• Co-processor Engine Registers • Miscellaneous Registers.
65 Commands which are classified into 5 groups• Graphics Commands• Widget Commands• Memory Commands• Bitmap Commands• Other Commands
REG_SWIZZLE
REG_TOUCH_MODEREG_GPIO
CMD_GRADIENT
POINT_SIZE
CMD_CALIBRATE
Software – Display List Functions
PRIMITIVES (basic shapes)
• BITMAPS• POINTS• LINES• LINE STRIP• EDGE STRIP_R• EDGE_STRIP_L• EDGE_STRIP_A• EDGE_STRIP_B• RECTS
DRAWING ACTIONS
• BEGIN• END• VERTEX2II• VERTEX2F
EXECUTION CONTROL
• JUMP• MACRO• CALL• RETURN• DISPLAY
• ALPHA_FUNC• BITMAP_HANDLE • BITMAP_LAYOUT BITMAP_SIZE • BITMAP_SOURCE • BITMAP_TRANSFORM_A-F • BLEND_FUNC • CELL • CLEAR • CLEAR_COLOR_A • CLEAR_COLOR_RGB • CLEAR_STENCIL• CLEAR_TAG • COLOR_A • COLOR_MASK • COLOR_RGB
Software – Graphics Commands
• LINE_WIDTH • POINT_SIZE • RESTORE_CONTEXT • SAVE_CONTEXT • SCISSOR_SIZE • SCISSOR_XY • STENCIL_FUNC • STENCIL_MASK • STENCIL_OP • TAG • TAG_MASK
WIDGET COMMANDS
• CMD_TEXT • CMD_BUTTON • CMD_CLOCK• CMD_BGCOLOR• CMD_FGCOLOR • CMD_GRADCOLOR• CMD_GAUGE • CMD_GRADIENT• CMD_KEYS • CMD_PROGRESS• CMD_SCROLLBAR• CMD_SLIDER • CMD_DIAL• CMD_TOGGLE• CMD_NUMBER•
Software – Graphic Engine Functions
• CMD_SKETCH • CMD_SNAPSHOT• CMD_LOGO
MEMORY COMMANDS
• CMD_MEMCRC• CMD_MEMZERO • CMD_MEMSET• CMD_MEMWRITE• CMD_MEMCPY• CMD_APPEND
OTHER COMMANDS
• CMD_COLDSTART • CMD_INTERRUPT• CMD_REGREAD • CMD_CALIBRATE• CMD_SPINNER • CMD_STOP • CMD_SCREENSAVER
BITMAP COMMANDS
• CMD_INFLATE• CMD_LOADIMAGE• CMD_LOADIDENTITY• CMD_TRANSLATE • CMD_SCALE• CMD_ROTATE• CMD_SETMATRIX• CMD_GETMATRIX
Widget example: Buttons/keys
Buttons
• cmd_button(10, 10, 140, 100, 31, 0, "Press!"); // X Y width height font
• cmd_button(10, 10, 140, 100, 31, OPT_FLAT, "Press!");
• cmd_button(10, 10, 50, 25, 26, 0, "One");• cmd_button(10, 40, 50, 25, 26, 0, "Two");• cmd_button(10, 70, 50, 25, 26, 0, "Three");
• cmd_fgcolor(0xb9b900),• cmd_button(10, 10, 50, 25, 26, 0, "Banana");• cmd_fgcolor(0xb97300),• cmd_button(10, 40, 50, 25, 26, 0, "Orange");• cmd_fgcolor(0xb90007),• cmd_button(10, 70, 50, 25, 26, 0, "Cherry");
Keys
• Code demonstrates the usage of the keys function• Draws buttons with characters given as input parameters• Flat and 3D effects, draw at (x,y) coordinates or centre of the display• Inbuilt or custom fonts can be used for key display
Application examples using multiple
display objects
Power GraphApplication
Cmd_gradient(BackgroundColor);Gpu_draw(PowerSignalEdgeStripAbove);Gpu_draw(StencilForEdgeStripAbove);Cmd_gradient(PowerSignalBackgroundColor);Gpu_draw(PowerSignalLineStrip);Cmd_clock(NineClocksWithOneHourChange);Cmd_text(NineClocksTime);Gpu_draw(VerticalTransparentLinesAboveClocks);Gpu_draw(TransparentEdgeStripLeftForPowerValues);Cmd_text(PowerRangeValues);Gpu_draw(HorizontalTranparentLinesForPowerValues);
Power GraphScreenshot
Cmd_gradient(BackgroundColor);
Cmd_gradient(PowerSignalBackgroundColor);
Cmd_clock(NineClocksWithOneHourChange);
Cmd_text(PowerRangeValues);
Gpu_draw(PowerSignalLineStrip); Display;
Application example:‘Clocks’
Clocks Application
Cmd_gradient(BackgroundColor);Cmd_clock(SingaporeTime);Cmd_track(TrackSingaporeClock);Cmd_text(Singapore);Cmd_clock(PescaderoTime);Cmd_track(TrackPescaderoClock);Cmd_text(Pescadero);Gpu_draw(DrawHomeBitmap);
ClocksScreenshot
Cmd_gradient(BackgroundColour);
Cmd_clock(SingaporeTime;
Cmd_text(Singapore);
Cmd_text(Pescadero;
Display;
EVE Code creation
Software developmentprototype setup
• PC running Microsoft Visual studio acting as microcontroller• FTDI high speed SPI cable• FT800 Basic module to control 4.3" display with display and
black bezel enclosure
Code creation points(circles)
Code creation points(circles)
Code creation points(circles)
Application codecreation
EVE Hardwareoptions
FT800Q IC
• 48 pin VQFN package
• Tape and Reel (2500 pcs) or Tray (250 pcs) packaging options
• RoHS Compliant
• -40Deg C to +85 Deg C Operating Temperature
VM800C (Credit Card) Development Hardware
• Development board containing
with FT800
• Includes connector for RGB video
timing and touch control signals
to the display
• Includes audio amp
• Includes connector to mate with
external MCU via SPI
• May be supplied with or without
display
• Display support for 3.5”, 4.3” and
5.0 “ QVGA and WQVGA displays
• without display or with display
VM800B (Basic) Development Hardware
• Development board containing with FT800
• Support for 3.5”, 4.3” and 5.0 “ QVGA and WQVGA
displays
• Precision fitted bezel in black or pearl
• Includes audio amp
• Includes connector to mate with external MCU via
SPI
VM800B/VM800C Block Diagram
USB to SPI Connection
VA800A-SPI C232HM-DDHSL-0
VM800PPlus Module
• Plus module with on board Atmega MCU
• Support for 3.5”, 4.3” and 5.0 “ QVGA and WQVGA displays
• Audio amplifier & speaker
• Precision fitted bezel in black or pearl
• USB micro – power/programming
• SD Card slot – BMP`s audio files
• Battery operation – Real Time Clock
VM800P Plus ModuleBlock Diagram
Supporting utilities
EVE Support Utilities
SOFTWARE: Sample application including FT_GPU.h and Hardware Abstraction Layer (HAL). Img_cvt windows utility for formatting images such that EVE can use them Aud_cvt windows utility for formatting audio files such that EVE can use them fnt_cvt windows utility for formatting fonts to bitmaps such that EVE can use them
All available from www.ftdichip.com
Supporting documentation
FT800Document Resources
www.ftdichip.com/EVE
VM800P board setup
VM800P
VM800P
Install Drivers
Plug in the USB cable to the PC
Load a program
Download the Example 13- FT_App_Signals sample app from the web site: http://www.ftdichip.com/Support/SoftwareExamples/FT800_Projects.htm
Unzip to a new folder, double click on the project FT_App_Signals.ino, found within: \Downloads\FT_App_Signals\FT_App_Signals\Project\Aurdino\FT_App_Signals\FT_App_Signals.ino
This will automatically open the Ardunio IDE tool chain.
IDE Select Board
IDE Select Port
Program the ATMega328
Program the ATMega328
Error if the incorrect com port is selected
Load a sample app
The sample application will run after a reset. First screen is the three point calibrate
Run the sample app
Load a program SD card images
Download the Example 22- Refrigerator sample app from the web site: http://www.ftdichip.com/Support/SoftwareExamples/FT800_Projects.htm
Unzip to a new folder, FT_App_Refrigerator.ino, found within: \FT800_DEMOAPP_Refrigerator_V1.1\FT800_DEMOAPP_Refrigerator_V1.1\FT800_DEMOAPP_Refrigerator_V1.1\Project\Arduino\FT_App_Refrigerator
Load a program SD card images
Copy contents of Test folder to VM800P SD card
Double click on the project FT_App_Refrigerator.ino, found within: \FT800_DEMOAPP_Refrigerator_V1.1\FT800_DEMOAPP_Refrigerator_V1.1\FT800_DEMOAPP_Refrigerator_V1.1\Project\Arduino\FT_App_Refrigerator
IDE will open with project
Load a sample app
The sample application will run after a reset. First screen is the three point calibrate
Run the sample app
Slide SummaryFT800Applications
Cooking Machines
Rice Cookers
Induction Cookers
Oven/ Microwav
e
Juice Maker
Coffee/ Tea Machines
Washer/Dryer Machines
Air Conditioner/ Smart Homes
Smart Meter/ Smart home controller:It could combine with Zigbee or WiFi for
Smart Home applications.
Central Air Conditioner
Others for homeelectric goods
Massage Chair
Refrigerator
Lighting Control
Industry Field: Elevator display for each floor
Display and audio, do not need touch function
FTDI Example
Industry Field: Elevator display for each floor
IP Phone POS PhoneDoor Security
Industry HMI interface
Disk Server UPSPower Meter
Vending Machine/ Smart card payment
Smart card scanner for payment
Vending Machine
Health tech (or blood-pressure/ handheld devices)
FT800 Applications – Money counting machine
Others – home router
For wireless router
MFP/Embroidery Machine
Multi Function Printer Embroidery Machine
Toy relatedapplications
Electric PianoLow-end gamer Childs computer
QUESTIONS?