Monday, December 07, 2015

Revelations II

The ability to see information, code or data, displayed in a graphical manner is one of the most powerful techniques within the whole field of human-machine-interface design.  In this post I describe a prototype pcb - which will allow colourful graphics to be added to even the humblest of 8-bit micros  - in a manner that will reveal their true capabilities - as inspired by this youtube:



Andrew's demonstration above uses the microVGA III - graphics engine which is about $60.

Other off the shelf video hardware is available - including the more economically priced (but less capable)   uVGA  - for about $30.

However, I am looking for something a bit cheaper, and more flexible - that may be applied to almost any microcontroller.

Last weekend I looked at a couple of ways of producing VGA graphics using simple hardware - and I decided that the two approaches worth following up are:

1. The use of the on-chip LCD controller on the STM32F746 microcontroller displaying 1024 x 768.

2. The FTDI FT81x  EVE2 embedded video engine that provides 800 x 600 + touchscreen + sound.

Having looked at the "Arduino" headers on the STM32F7 Discovery board - I have worked out that I can get a RGB 3:2:2  output from the on chip LCD graphics controller via the Arduino expansion headers.   Whilst this is one red bit short of the more standard RGB 3:3:2 format, it will be good enough for simple coloured graphics and text.

Also during the week I have taken delivery of the FTDI VM810 - an  Eve2 development board - which drives a 5" LCD. I have found code that will run on the STM32F7 (and STM32F4) Discovery boards - to allow me to drive the FT810 from the STM32.

The only problem, is that the Eve dev-board does not give sensible access to the LCD colour signals - as they all terminate in a very narrow 0.5mm pitch 40 way FPC (flat plastic cable) connector - a soldering nightmare.

The solution was obvious - make up a quick pcb that breaks out the Eve IC and provides VGA and PS/2 mouse and keyboard ports.

The VGA Adaptor Board with PS/2 Mouse & Keyboard Ports
A 5050 Design.

Some weeks back I decided on a new 50mm square board format - that is quick and cheap to make yet breaks out sufficient pins to make it useful for prototyping with SMT IC parts.

The VGA board was going to be the first test of the new format. In the image above it shows the VGA connector to the top, he FT812/813 embedded video IC below it and the two PS/2 connectors for mouse and keyboard along the bottom edge of the pcb.

The FT812/13 is a 56 pin QFN.   24 pins are used to generate the 24 bit RGB 8:8:8 video - and the banks of resistors that form the networks are seen surrounding the central IC.

A General Purpose Board.

Whilst intended to match with Arduino style headers - this board may be used to provide 800 x 600 VGA output, PS/2 keyboard and mouse to a variety of different development boards.  The pin-headers allow Arduino, Nucleo, Discovery F7 and a variety of other boards to be used.

The interface between the microcontroller is not at all complex - requiring just an SPI bus (at 3V3 levels), chip select  and +5V power and ground to operate - the full list is below:

The EVE chip requires just 7 (or 8) interconnecting wires to implement the SPI interface and provide power

SPI_MOSI
SPI_MISO
SPI_CLK
SPI_CS
/PD         Power Down
/INT        Interrupt  - optional
+5V      
0V

Code examples are available on the FTDI site, including a driver library for Arduino and code for STM32 and PIC targets.

Development boards are available cheaply from FTDI (via Farnell, RS, Mouser etc) - but these are oriented towards driving an LCD.  My design is specifically aimed at creating a VGA output suitable for a large flat screen monitor.





No comments: