Friday, December 11, 2015

Colour Coding - Part III

This is the first of my 5050 boards -
 that has gone to meet it's makers....

As Frankie Howerd used to say....

The Prologue

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.

Some Details

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

A1  /INT
A2  PD

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.

Other Connectors

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.

Introducing Eve.

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
D1        H-Sync
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
A1   PF10
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.


No comments: