|This is the first of my 5050 boards -|
that has gone to meet it's makers....
As Frankie Howerd used to say....
In the last week, I have designed a compact VGA generation pcb - which will provide a test bed for FTDI's latest second generation embedded video engine IC ("Eve") -either FT812 or FT813 .
This board is in the form of a 50mm x 50mm shield - that will work with Arduino compatible devices - provided that they have a 3.3V system voltage (NOT 5V!!). The EVE IC is not 5V tolerant!
This includes all STM Nucleo boards, STM32F7 Discovery board - and my own design "Piano Forte" board which is STM32F1xx, STM32F3xx or STM32F4xx with Arduino Headers.
The board also includes an interface for a PS/2 Keyboard and Mouse.
I have ordered a small batch of these boards from Ragworm - a UK PCB vendor, and hope to make some progress over the Christmas break.
The VGA board uses a FT812 to generate the VGA signals in 24-bit colour at a resolution of 800 x 600 pixels.
The FT812 or "Eve" chip (embedded video engine) is a very capable graphics co-processor with a 1MB frame buffer. It can provide a low resource microcontroller with all the elements of a graphical user interface for just a few dollars.
The FT812 is connected to the host processor "Arduino" using a very conventional SPI interface, along with an interrupt line (optional) and a Power Down signal.
The FT812 provides 8 digital outputs for each of the RGB colours and each of these are weighted and summed together using a very simple resistor network - to produce an analogue video signal of red green and blue components.
Whilst the board is arranged with Arduino style headers - it can be used with any other 3V3 dev - board - using jumper leads - as only 8 connections are needed to interface to it.
As this board is purely a VGA testbed - none of the LCD specific signals are brought to connectors.
The PCB supports a serial connection using an FTDI cable, plus a variety of different break-out options.
A set of optional resistors fitted to the underside of the PCB - allow it to be used solely as a passive VGA adaptor (without the FT812 fitted) - to work with the STM32F7 Discovery board - allowing up to 1024 x 768 7 bit colour.
The Hardware Set Up.
When used as a VGA generation shield for a 3V3 Arduino - like device - the following pins are used to access the FT812
D3 Keyboard Clock
D4 Keyboard Data
D6 Mouse Clock
D7 Mouse Data
D9 SPI CS
D12 SPI MISO
D13 SPI SCK
Power is supplied to the board via the 5V power pin - and is regulated down to 3V3 by IC2 - a maximum of 300mA available from the MCP1702 regulator
An FTDI serial cable can be fitted into connector JP4 (next to the analogue inputs connector) and using a pair of jumpers JP2 and JP3 allows access to the D0 and D1 Rx and Tx pins.
The remaining un-jumpered pins of JP5 provide breakout for the GPIO pins plus PD and /INT of the FT812. The additional pins - on the end of the Arduino "power" header give access to the resistive touchscreen sensing network - and could be used as such, or used carefully as 10 bit resistive analogue inputs.
The backlight pin provides a 7-bit duty cycle PWM signal - of frequency between 250Hz and 10Khz.
Pixel Clock, Data Enable and Disp have not been routed out on the first prototype boards.
The Audio pin has not been routed out on the first prototype boards.
This board hopefully will provide the VGA graphics, keyboard and mouse interface to a variety of dev - boards, thus expanding their capabilities, manifold. If the basics of the board are sound, it can be later augmented to cater for audio and a microSD card.
The EVE chip has an impressive specification - here's a copy of the 1st page of the datasheet
The FT81x is a series of easy to use graphic controllers targeted at embedded applications to generate high-quality Human Machine Interfaces (HMIs).
It has the following features:
- Advanced Embedded Video Engine(EVE) with high resolution graphics and video playback
- FT81x functionality includes graphic control, audio control, and touch control interface
- Pinout backward compatible with FT800 (FT810) and FT801 (FT811).
- Support multiple widgets for simplified design implementation
- Built-in graphics operations allow users with little expertise to create high-quality displays
- Support 4-wire resistive touch screen (FT810/FT812)
- Support capacitive touch screen with up to 5 touches detection (FT811/FT813)
- Hardware engine can recognize touch tags and track touch movement. Provides notification for up to 255 touch tags.
- Enhanced sketch processing
- Programmable interrupt controller provides interrupts to host MCU
- Built-in 12MHz crystal oscillator with PLL providing programmable system clock up to 60MHz
- Clock switch command for internal or external clock source. External 12MHz crystal or clock input can be used for higher accuracy.
- Video RGB parallel output; configurable to support PCLK up to 60MHz and R/G/B output of 1 to 8 bits
- Programmable timing to adjust HSYNC and VSYNC timing, enabling interface to numerous displays
- Support for LCD display with resolution up to SVGA (800x600) and formats with data enable (DE) mode or VSYNC/HSYNC mode
- Support landscape and portrait orientations
- Display enable control output to LCD panel
- Integrated 1MByte graphics RAM, no frame buffer RAM required
- Support playback of motion-JPEG encoded AVI videos
- Mono audio channel output with PWM output
- Built-in sound synthesizer
- Audio wave playback for mono 8-bit linear PCM, 4- bit ADPCM and µ-Law coding format at sampling frequencies from 8kHz to 48kHz. Built-in digital filter reduces the system design complexity of external filtering
- PWM output for display backlight dimming control
- Advanced object oriented architecture enables low cost MPU/MCU as system host using SPI interfaces
- Support SPI data lines in single, dual or quad mode; SPI clock up to 30MHz
- Power mode control allows the chip to be put in power down, sleep and standby states
- Supports I/O voltage from 1.8V to 3.3V
- Internal voltage regulator supplies 1.2V to the digital core
- Build-in Power-on-reset circuit -40°C to 85°C extended operating temperature range
- Available in a compact Pb-free, VQFN-48 and VQFN- 56 package, RoHS compliant
PCB - Second Function - As a Passive VGA network for the Discovery F7
The shield may also be used to fit to a STM32F7 Discovery board - which also has Arduino style connectors. The STM32F746 has an on-chip video generation engine, which synthesises the signals needed to run a colour LCD. Conveniently several of these higher bit colour signals and H-sync appear on the Arduino headers.
When used in this mode - the following pins can be configured to have RGB data on them.
D0 Green 6
D2 Red 7
D5 Green 5
D8 Green 7
D10 Red 6
D14 Blue 7
D15 Blue 6
VSYNC is missing but can be synthesised from H_SYNC used to clock a Timer input
To utilise this mode of operation it is necessary to fit the resistor network to the underside of the pcb and fit the jumper headers JP1 and JP5. Ten jumper links are needed to connect every pin on JP1 across to its neighbour on JP5.
If using a F7 Discovery board, there is an additional SPI port and UART available - as alternative function on the Analogue Input Pins. The UART can be jumper selected using JP3 and JP4 so that it is accessible from the FTDI connector. All of these pins accept analogue inputs of 12 bits
A0 PA0 UART4_TX
A2 PF9 SPI5_MOSI
A3 PF8 SPI5_MISO
A4 PF7 SPI5_SCK UART7_TX
A5 PF6 SPI5_NSS UART7_RX
Colour graphics really makes computers come alive - and a simple video interface is an asset to any microcontroller.
It has been seen that the Gameduino and Gameduino2 provide a spectacular graphical environment for even the 8-bit ATmega328 Arduino.
Having a colour text output, that can be displayed on a large screen monitor - independent of an IDE- will give a whole set of new dimensions to developing and debugging code on any microcontroller.
The addition of a keyboard and mouse all makes for a better computing environment.