AN_245 FT800 Sample Application Introduction For VM800B and VM800C Development Kits and Windows PC Document Reference No.:FT_000846 Version 1.0 Issue Date: 28 August 2013 This document is provided to introduce the setup of a Sample Application running on a Windows PC with a VM800B or VM800C development system. The objective of the Sample Application is to enable users to become familiar with the usage of the FT800, the design flow, and display list language used to design the desired user interface or visual effect. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold FTDI harmless from any and all damages, claims, suits or expense resulting from such use. Future Technology Devices International Limited (FTDI) Unit 1, 2 Seaward Place, Glasgow G41 1HH, United Kingdom Tel.: +44 (0) 141 429 2777 Fax: + 44 (0) 141 429 2758 Web Site: http://ftdichip.com Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 Table of Contents 1 Introduction .................................................................... 2 1.1 Audience ................................................................................... 2 1.2 Scope ........................................................................................ 2 1.3 Overview ................................................................................... 3 1.3.1 Hardware ................................................................................................. 3 1.3.2 Application flow......................................................................................... 4 1.3.3 Architecture .............................................................................................. 5 1.4 Hardware requirement .............................................................. 5 1.5 Software requirement ............................................................... 5 1.5.1 2 Software package introduction .................................................................... 6 Set up steps .................................................................... 7 2.1 Hardware Connection ................................................................ 7 2.2 Source code build ...................................................................... 8 2.2.1 Determine the screen size .......................................................................... 8 2.2.2 Determine the group of functions to build and run ......................................... 8 2.2.3 Experimenting with the Sample Application project ....................................... 9 2.2.4 Source file brief ........................................................................................ 9 2.2.5 Project file brief ........................................................................................ 9 2.2.6 Major function groups in the Sample Application ........................................... 9 3 Helpful Hints ................................................................. 13 4 Contact Information ...................................................... 14 5 Appendix A– References ............................................... 15 Document References ...................................................................... 15 Acronyms and Abbreviations ........................................................... 15 6 Appendix B – List of Tables & Figures ........................... 16 7 Appendix C– Revision History ....................................... 17 1 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 1 Introduction FT800 combines display, audio and touch functionality into one single chip, powered by FTDI Chip’s advanced EVE technology, Embedded Video Engine. The FT800 device interfaces with a system MCU via either a SPI or I2C interface. To help customers easily utilize the functionality of the FT800 in a project, a Sample Application is provided here for tutorial purposes. The Sample Application has been written for usage in conjunction with the FTDI USB to SPI bridge cable that incorporates the FT232H. This cable operates in MPSSE mode (Multi-Protocol Synchronous Serial Engine) to enable the code to be executed from a PC and bridged over USB to provide stimulus to the VM800B and VM800C development systems for fast and easy testing. Users can read the source code of the Sample Application first, then run the code to observe the effects. Editing the code is also encouraged to help learn the features of the FT800. Note that although the basic project compiles for the Windows PC with the MPSSE cable, most of the code could be re-used in different microcontroller design environments. All that the FT800 requires is a host microcontroller device with an SPI or I2C master interface and the transportation layer of Sample Application adapted for the specifc device. Further information regarding the FT800 programming language or pseudo code can be found in the FT800 Programmer Guide. This document introduces how to set up and use the Sample Application with the FTDI VM800B/C development kits and a Windows PC. For VM800B or VM800C development board details, please refer to the datasheets for VM800B or VM800C modules from FTDI. NOTE: Any source code is provided on an “as is” basis, and is neither guaranteed nor supported. 1.1 Audience This document assumes the audience have read the datasheet and Programmer Guide of the FT800. In addition, familiarity of the C/C++programming language is necessary to understand the Sample Application source code. 1.2 Scope The Sample Application mentioned in this document runs on a Windows PC, through Microsoft Visual Studio C++ software. It is comprised of the source code as well as project files. 2 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 1.3 Overview 1.3.1 Hardware The diagram below illustrates the overall hardware setup. TFT USB SPI FT800 WINDOWS PC FTDI MPSSE CABLE SPEAKER VM800C Figure 1-1: Example Block Diagram of Setup for VM800C board with Windows PC The VM800B and VM800C units require minimal hardware configuration. The FT800 IC, the TFT display and the speaker are all included in the module assembly. The MPSSE cable provides the USB to SPI bridge. 3 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 1.3.2 Application flow The diagram below gives the basic flow to configure the FT800 in an application. CONFIGURE THE SPI MASTER (MODE 0 – MSB) INITIALISE THE FT800 RESET THE FT800 CORE – WRITE 0x68, 0x00 READ DUMMY DATA AT ADDRESS 0 SET THE CLOCK – WRITE 0x44, 0x00 INITIALISE THE TFT DISPLAY LOAD DUMMY DISPLAY LIST (e.g. blank screen) CONFIGURE VSYNC CONFIGURE HSYNC ENABLE PCLK CONFIGURE THE TFT TOUCH SENSE CONFIGURE THE AUDIO VOLUME CREATE DISPLAY LIST UPDATE (SWAP) DISPLAY LIST Figure 1-2: Typical Application Flow 4 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 1.3.3 Architecture The Sample Application is designed to easily port to various platforms with SPI host functionality. To achieve this, the Sample Application introduces one HAL (hardware abstraction layer) to make the Sample Application code generic for different platforms. Sample Application Application HAL SPI FT800 Figure 1.3: Architecture diagram 1.4 Hardware requirement VM800B or VM800C development kit. Note that this kit comes with an option for 3 different size displays, 3.5”, 4.3”, or 5.0”(VM800B35A-D, VM800C35A-D, VM800B43A-D, VM800C43A-D, VM800B50A-D, or VM800C50A-D, respectively). Microsoft Windows based PC working as a host. Windows XP onwards is preferred. FTDI MPSSE cable (3.3V). FTDI USB interface to SPI converter. One USB A to MicroB cable to provide power to the VM800B/C board. Optional if a battery or other power source is provided for the VM800B or VM800C development board. 1.5 Software requirement D2XX driver for the FTDI MPSSE cable. Please download and install on the PC. Microsoft Visual C++. The IDE(Integrated Development Environment) used to create the Sample Application. It is required by users to build and run the Sample Application. Note: The express version of the tool is a free download from Microsoft. FT800 Sample Application release package. 5 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 1.5.1 Software package introduction 1.5.1.1 Folder introduction Folder "Src" includes the .C source files of the Sample Application. Folder "Bin" includes the binary and library files used by the Sample Application Folder "Hdr" includes the .h files which define the macros, data structures and function prototypes for the source .C files. Folder "Test" includes the resources files, such as bitmaps and sound tracks used in the application. Folder "Project" includes the MSVC project and solution file. Folder "Docs" includes the folder "MSVC_Win32" which contains this document. 1.5.1.2 Dependency FT800 Sample Application depends on the FTDI D2XX driver to communicate with FT800 through the FTDI MPSSE cable. FT800 Sample Application is one console application with a GUI interface at the Windows PC side. FT800 Sample Application is linked with the FTDI libMPSSE-SPI library, Please see http://www.ftdichip.com/Support/SoftwareExamples/MPSSE/LibMPSSE-SPI.htm for details. 6 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 2 Set up steps 2.1 Hardware Connection The picture below shows the connection on the VM800C board. Two USB ports will be used on the windows PC: One USB cable connecting via the MicroB connector is used to supply power (5V/100mA) from the PC to the device. One FTDI MPSSE cable is needed to connect the PC with the FT800 SPI interface. Figure 2-1: Module Connections Signals from the MPSSE cable to the VM800C board are colour coded as shown below. Figure 2-2: MPSSE cable connection MPSSE cable Signal Name Colour SCK ORANGE MOSI YELLOW MISO GREEN CS# BROWN INT# PURPLE PD# BLUE GND BLACK Table 1 MPSSE cable signal colour mapping 7 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 2.2 Source code build Open the file "Project\Msvc_win32\SampleApp\ SampleApp.sln" with Microsoft Visual C++ and the following screen should appear: Figure 2-3: Visual Studio Project Page 2.2.1 Determine the screen size For 3.5 inch display panels, ensure the compilation macro switch "#define SAMAPP_DISPLAY_QVGA" in "Hdr\FT_Platform.h" is defined. This macro enables the FT800 to support 3.5 inches panels with a resolution of 320x240 pixels. For 4.3 or 5 inch display panels, please ensure the macro above is undefined within the Sample Application project. This will ensure the correct display resolution is selected to match the 4.3 or 5 inch display panels with a resolution of 480x272 pixels. After correctly setting the definition, re-build the project. Display panels other than those stated above are not supported at this time by the Sample Application. 2.2.2 Determine the group of functions to build and run All the functions are grouped into 5 categories, which are compiled and built under the following compiler switches in the file "Project\Hdr\FT_Platform.h " #define #define #define #define #define #define SAMAPP_ENABLE_APIS_SET0 SAMAPP_ENABLE_APIS_SET1 SAMAPP_ENABLE_APIS_SET2 SAMAPP_ENABLE_APIS_SET3 SAMAPP_ENABLE_APIS_SET4 SAMAPP_ENABLE_APIS_SET5 Users can define all 5 macros to be enabled at the same time or undefine sections to focus on a certain feature. Note the categories mentioned here are not the same as the groups mentioned in Major function groups in the Sample Application. The groups here are defined for the purpose of running on the Windows PC. 8 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 2.2.3 Experimenting with the Sample Application project Place the break point at the line you would like to study before you run the Sample Application. This allows functions to be tested and executed one by one, thus simplifying debugging and observing the functionality of each different function call. A key item to note is that the actual display is not updated until the display list swap is executed. Figure 2-4: Visual Studio Project Page 2.2.4 Source file brief “SampleApp.c” under “src\” is the main source file for the Sample Application. The “Main” entry function is inside. It defines all the sample functions. Breakpoints can be set in this file for each of the functions for further study. The functions in “SampleApp.c” are mostly in the form of “SAMAPP_GPU_xxx” and “SAMAPP_CoPro_xxx”. “FT_Gpu_Hal.c” under folder “src” defines the transportation layer functions, which provide one SPI abstraction layer to access the FT800. Editing this file allows for porting the application to alternative MCU’s and compilers with minimum effort. It is more specific to the SPI master interface than the FT800. “FT_CoPro_Cmds.c” defines the APIs of the FT800 coprocessor engine commands. This file is structured to be generic and could be ported to other projects for other target MCU’s. “FT_GPU.h” defines the FT800 specific interface, including the instructions and parameters, register names and memory maps. This file relates directly to the FT800 Programmers Guide and is independent from any MCU. “SampleApp_RawData.c” defines the bitmap and jpeg data used in the Sample Application. 2.2.5 Project file brief “SampleApp.sln” is the solution file used by Microsoft Visual C++ IDE (Integrated Development Environment). It will invoke other project files to restore the building environment on your PC. You can open it after Microsoft Visual C++ is installed on your windows PC. 2.2.6 Major function groups in the Sample Application The major functions in the Sample Application can be classified into the following groups according to the functionality and design purpose. 2.2.6.1 Primitives group The functions in this group are designed to demonstrate the usage of FT800 primitives. 9 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 An FT800 primitive is the basic drawing command for geometric shapes, for example, points, lines etc. More information on the primitives can be found in the FT800 Programmers Guide. All the functions are in the form of “SAMAPP_GPU_xxx”. Here is the list: o o o o o o o o o o o o o o o o o o o /*draw circles*/ SAMAPP_GPU_Points(); /*draw a triangle*/ SAMAPP_Gpu_Polygon(); /*draw lines*/ SAMAPP_GPU_Lines(); /*draw rectangles*/ SAMAPP_GPU_Rectangles(); /*draw bitmaps*/ SAMAPP_GPU_Bitmap(); /*draw palette format bitmap*/ SAMAPP_GPU_Bitmap_Palette() /*draw palette format bitmap as background*/ SAMAPP_GPU_Bitmap_Palette() /*draws chars with different fonts*/ SAMAPP_GPU_Fonts(); SAMAPP_GPU_Text8x8(); SAMAPP_GPU_TextVGA(); /*draws a bargraph*/ SAMAPP_GPU_Bargraph(); SAMAPP_GPU_LineStrips(); SAMAPP_GPU_EdgeStrips(); /*example of cutting away an active area on the display*/ SAMAPP_GPU_Scissor(); /*Font and Points Primitives combination*/ SAMAPP_GPU_FtdiString(); /*Call and Return Primitives combination*/ SAMAPP_GPU_StreetMap(); /*Additive blending of fonts*/ SAMAPP_GPU_AdditiveBlendText(); /*Usage of Macro*/ SAMAPP_GPU_MacroUsage(); /*Additive blending of points*/ SAMAPP_GPU_AdditiveBlendPoints(); 2.2.6.2 Widgets group The functions in this group are designed to demonstrate the FT800 graphic engine widgets, which are visual components that have been created to reduce the effort of GUI programmers. A widget will create a complex object with one command as opposed to many. For example, the clock widget provides a large circle for the face, twelve circles for each number and 3 lines for each clock hand. If this image was created without the widget the programmers would need to draw 13 circles and 3 hands in separate primitive commands. There are 14 in-built widgets and their sample functions are in the form of “SAMAPP_CoPro_Widget_xxx” as below: o o o SAMAPP_CoPro_Widget_Logo(); SAMAPP_CoPro_Widget_Text(); SAMAPP_CoPro_Widget_Number(); 10 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 o o o o o o o o o o o Clearance No.: FTDI# 347 SAMAPP_CoPro_Widget_Button(); SAMAPP_CoPro_Widget_Clock(); SAMAPP_CoPro_Widget_Guage(); SAMAPP_CoPro_Widget_Gradient(); SAMAPP_CoPro_Widget_Keys(); SAMAPP_CoPro_Widget_Progressbar(); SAMAPP_CoPro_Widget_Scroll(); SAMAPP_CoPro_Widget_Slider(); SAMAPP_CoPro_Widget_Dial(); SAMAPP_CoPro_Widget_Toggle(); SAMAPP_CoPro_Widget_Spinner(); The following functions are designed to demonstrate additional FT800 commands, which are frequently used by programmers to simplify a project. They are in the form of “SAMAPP_CoPro_xxx”. o o o o o o o o o o o /*Screen calibrate example*/ SAMAPP_CoPro_Calibrate(); SAMAPP_CoPro_Screensaver(); /*Matrix example for Bitmap manipulation*/ SAMAPP_CoPro_Matrix(); /*Appending block of memory to the current display list*/ SAMAPP_CoPro_AppendCmds(); /*Decompress functionality example*/ SAMAPP_CoPro_Inflate(); /*JPEG decoding functionality example*/ SAMAPP_CoPro_Loadimage(); /*Customer Font example*/ SAMAPP_CoPro_Setfont(); /*Customer Font used in widget example : Chinese Font*/ SAMAPP_ChineseFont(); /*Track usage example for touch*/ SAMAPP_CoPro_Track(); /*Screenshot example*/ SAMAPP_CoPro_Snapshot(); /*Sketch example*/ SAMAPP_CoPro_Sketch(); 2.2.6.3 Audio & Touch group The APIs in this group demonstrate how to utilize the audio and touch functionality of the FT800. /* Audio playback API */ o SAMAPP_Aud_Music_Player(); /* Audio Playback sample function in streaming way*/ o SAMAPP_Aud_Music_Player_Streaming(); /*FT800 Built-In Sound sample function*/ o SAMAPP_Sound() /*FT800 Touch and Tag usage sample function*/ o SAMAPP_Touch() /* FT800 Track coprocessor engine command usage sample */ o SAMAPP_CoPro_Track() /*FT800 keys widget and touch tag usage example*/ 11 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 o Clearance No.: FTDI# 347 SAMAPP_CoPro_Widget_Keys_Interactive() 2.2.6.4 Host Command Group The APIs in this group demonstrate the power management feature of the FT800. /*Toggle the PD_N pin of FT800 for power cycle*/ o Ft_Gpu_Hal_Powercycle () /* FT800 Host Command Function: users can send the respective host commands to achieve clock source selection, power mode switch, frequency selection as well as core reset. */ o Ft_Gpu_HostCommand() /* This API defines 6 scenarios of power mode switch, implemented by calling functions above. */ o SAMAPP_PowerMode() 12 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 3 Helpful Hints Users are strongly encouraged to read the datasheets of the VM800B and VM800C development systems before reading this document and starting to use the Sample Application. Before running the FT800 Sample Application, please make sure the FTDI MPSSE cable is connected with VM800B or VM800C board and the proper driver is loaded. If encountering issues while running the FT800 Sample Application, please check the USB port status in the device manager of the Windows PC and make sure there are no other USB ports in use with the D2XX driver. The use of “debug” mode will allow individual sections of the Sample Application to be executed through the placement of breakpoints. Note that a calibration procedure (e.g. SAMAPP_CoPro_Calibrate()) is required if experimenting with the touch screen feature. 13 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 4 Contact Information Head Office – Glasgow, UK Branch Office – Tigard, Oregon, USA Future Technology Devices International Limited Unit 1, 2 Seaward Place, Centurion Business Park Glasgow G41 1HH United Kingdom Tel: +44 (0) 141 429 2777 Fax: +44 (0) 141 429 2758 Future Technology Devices International Limited (USA) 7130 SW Fir Loop Tigard, OR 97223 USA Tel: +1 (503) 547 0988 Fax: +1 (503) 547 0987 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) [email protected] [email protected] [email protected] E-Mail (Sales) E-Mail (Support) E-Mail (General Enquiries) [email protected] [email protected] [email protected] Branch Office – Taipei, Taiwan Branch Office – Shanghai, China Future Technology Devices International Limited (Taiwan) 2F, No. 516, Sec. 1, NeiHu Road Taipei 114 Taiwan , R.O.C. Tel: +886 (0) 2 8791 3570 Fax: +886 (0) 2 8791 3576 Future Technology Devices International Limited (China) Room 1103, No. 666 West Huaihai Road, Shanghai, 200052 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) [email protected] [email protected] m [email protected] China Tel: +86 21 62351596 Fax: +86 21 62351595 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) [email protected] [email protected] [email protected] Web Site http://ftdichip.com System and equipment manufacturers and designers are responsible to ensure that their systems, and any Future Technology Devices International Ltd (FTDI) devices incorporated in their systems, meet all applicable safety, regulatory and system-level performance requirements. All application-related information in this document (including application descriptions, suggested FTDI devices and other materials) is provided for reference only. While FTDI has taken care to assure it is accurate, this information is subject to customer confirmation, and FTDI disclaims all liability for system designs and for any applications assistance provided by FTDI. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold harmless FTDI from any and all damages, claims, suits or expense resulting from such use. This document is subject to change without notice. No freedom to use patents or other intellectual property rights is implied by the publication of this document. Neither the whole nor any part of the information contained in, or the product described in this document, may be adapted or reproduced in any material or electronic form without the prior written consent of the copyright holder. Future Technology Devices International Ltd, Unit 1, 2 Seaward Place, Centurion Business Park, Glasgow G41 1HH, United Kingdom. Scotland Registered Company Number: SC136640 14 Copyright © 2013 Future Technology Devices International Limited Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 5 Appendix A– References Document References 1. 2. 3. 4. 5. datasheet for VM800C: DS_VM800C EVE datasheet for VM800B: DS_VM800B EVE FTDI MPSSE for SPI application note FT800 Programmer Guide FT800 Embedded Video Engine Datasheet 6. Sample Application Acronyms and Abbreviations Terms Description EVE Embedded Video Engine IDE Integrated Development Environment MPSSE FTDI Multi-Protocol Synchronous Serial Engine MSVC Microsoft Visual Studio C++ 2010 SPI Serial Peripheral Interface UI User Interface USB Universal Serial Bus VM800B/C VM800B or VM800C board Copyright © 2013 Future Technology Devices International Limited 15 Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 6 Appendix B – List of Tables & Figures List of Figures Figure 1-1: Example Block Diagram of Setup for VM800C board with Windows PC ..... 3 Figure 1-2: Typical Application Flow ........................................................................... 4 Figure 1.3: Architecture diagram ................................................................................ 5 Figure 2-1: Module Connections ................................................................................. 7 Figure 2-2: MPSSE cable connection ........................................................................... 7 Figure 2-3: Visual Studio Project Page ....................................................................... 8 Figure 2-4: Visual Studio Project Page ....................................................................... 9 List of Tables Table 1 MPSSE cable signal colour mapping ............................................................. 7 Copyright © 2013 Future Technology Devices International Limited 16 Application Note AN_245 VM800C/B Sample Application PC Introduction Version 1.0 Document Reference No.: FT_000846 Clearance No.: FTDI# 347 7 Appendix C– Revision History Document Title: AN_245 VM800C/B Sample Application PC Introduction Document Reference No.: FT_000846 Clearance No.: FTDI# 347 Product Page: http://www.ftdichip.com/EVE.htm Document Feedback: Send Feedback Revision 1.0 Changes Initial Release Copyright © 2013 Future Technology Devices International Limited Date 2013-08-28 17