Saturday, November 28, 2015

Revelation Time!

Revelation Time!

The STM32F7 Discovery board is remarkable a board for the money providing a rich mix of hardware, communication interfaces and memory. With it's 216MHz STM32F746 ARM Cortex M7 microcontroller and 4.3" capacitive touchscreen display, it makes a very capable platform to develop embedded applications on.  It represents probably the fastest system available that allows true bare metal programming - unhindered by an operating system. For anyone developing embedded systems requiring touchscreen display, ethernet, audio and a fast 32 bit processor, the F7 Discovery is worth considering. All of the principal ICs on the F7 Discovery are available in LQFP or TSSOP packages - which means that the core hardware design could be recreated on a simple double sided pcb - suitable for hobbyist construction.

When I first looked at the STM32F7 Discovery board, and saw the Arduino headers on the underside of the pcb - I thought that such a powerful board, having been design restricted to just 20 feeble I/O lines, was a bit lame - kind of added at the last moment - as an Arduino afterthought.

However, when I took a closer look at what signals had actually been routed out to the Arduino headers - I discovered that it is possible to get all but 1 of the signals for an RGB  2:3:2 display!  It almost looks as the signals were planted on the Arduino headers on purpose - for a backdoor VGA display  - of up to 128 colours.  Now that did get my attention!

A VGA shield could be easily built on a proto shield or even stripboard.

Not only that - but two SPI ports and an additional UART appear on the headers - allowing for a PS2 mouse and keyboard, and an auxiliary serial debug port!

Whoever laid out the F7 Discovery board was either a Genius of a bluffer!

A Pocket Workstation

With the possibility of quite an easy hack to get 7 bit VGA from the Arduino headers, and add a PS2 keyboard and mouse - it occurred to me that the Discovery board had just redeemed itself as a prime contender for the proposed retro-workstation project.   It would certainly work well as a target board - to allow ideas to be tried before committing to further hardware.

A simple shield carrying the VGA resistor networks, a VGA connector and 2 PS2 sockets could be made up very easily - on the new preferred 50x50mm board format.

The Discovery board provides  8Mbyte of SDRAM,  16MByte of Nor Flash and a microSD card. This would be sufficient for much of the experimentation I want to do - after all I am looking for minimal systems with modest resources. In terms of computing power - the Discovery board represents a respectable mid-1990s desktop.

Other useful hardware is the ethernet connectivity, the OTG high speed USB and the audio interface. hardware.

mbed on the STM32F7 Discovery

With mbed available for code development - this seems to be a step up from the humble Arduino - and definitely a very exposed platform for bare metal code development.   The hardware is totally accessible - and not hiding behind Linux, and there is no part of this hardware design that I cannot recreate using LQFP packages on a self designed pcb, adding more SRAM or SDRAM as required.

The hardware is quick too - it looks like it will be about 30 times the speed if the ZPUino - plus more resources - and a more flexible VGA or LCD system.  There is scope for Li Po battery operation - and discover some of the low power modes of the STM32F7 micro.


Discovery F7 VGA Output Hardware Details


Here's the hardware connection details for the proposed "Arduino"  VGA/ PS2 shield.

Colour                      Port                       Arduino Pin

R7                             PG6                       Dig 2
R6                             PA8                       Dig 10

G7                             PI2                        Dig 8
G6                             PI1                        Dig 13
G5                             PI0                        Dig 5

B7                             PB9                       Dig 14
B6                             PB8                       Dig 15

H_SYNC                  PC6                       Dig 1  
V_SYNC                  TBD                      Available on camera FPC

The missing V_sync is probably not too much of an issue.  It could be generated by a Timer - clocked by H_sync

LCD_CLK                PG7                       Dig 4

TIM3 CH1                PB4                       Dig 3
                                 PH6                       Dig 6
TIM2 CH1                PA15                     Dig 9
                                 PB15                     Dig 11
                                 PB14                     Dig 12


For serial communication - we have access to UART7 on PF6 ad PF7 - which appear as AN4 and AN5. This will allow a FTDI cable to be plugged is as an auxiliary/ debug port

So the full line up - rearranged

H_SYNC                  PC6                        Dig 1
R7                             PG6                       Dig 2
TIM3 CH1                PB4                       Dig 3
LCD_CLK                PG7                       Dig 4
G5                             PI0                        Dig 5
TIM12 CH2              PH6                       Dig 6
Spare                        PI3                         Dig 7
G7                             PI2                        Dig 8
TIM2 CH1                PA15                     Dig 9
R6                             PA8                       Dig 10
TIM12 CH2              PB15                     Dig 11
TIM1/8 CH2N          PB14                     Dig 12
G6                             PI1                        Dig 13
B7                             PB9                       Dig 14
B6                             PB8                       Dig 15

                               PA0                       AN0
                               PF10                      AN1
SPI5_MOSI            PF9                        AN2
SPI5_MISO            PF8                        AN3
SPI5_SCK              PF7                        AN4
UART7 TX             PF6                        AN5

No comments: