aboutsummaryrefslogtreecommitdiffstats
To get this steaming pile of excellence working you need

1) an STM32F103 board rated to 72MHz with an 8MHz clock and the PB6 and PB7 pins available

eg 
http://www.ebay.co.uk/itm/132170295715
http://www.ebay.co.uk/itm/132138287991

2) optional (passive adaptors to get to you HDMI or DVI-D from whatever you have, the apple ones work well)

3) Some way of connecting your HDMI/DVI-D to the board:

HDMI		DVI-D		Cortex-M3

15 DDC SCL	6 DDC SCL	PB6 (with 10k pull-up to 3V3)
16 DDC SDA	7 DDC SDA	PB7 (with 10k pull-up to 3V3)
17 GND		15 GND		GND
18 +5V		14 +5V		(tie to HPD)
19 HPD		16 HPD		(tie to +5V)

The code connects a virtual NS16X50 uart to the I2C bus at address 0x90 (like an SC16IS7XX does), 
and a 24C02 EEPROM containg DDC data for a 1280x1024 monitor at address 0xA0.

The virtual UART is connected to the M3's real uart 1 which is enabled, and to a CDC ACM device
on USB.

The fake monitor is necessary because recent intel GPUs do hot plug detection and powering up the ports
in firmware rather than in the driver it also tricks said firmware into configuring the port as HDMI/DVI
rather than as Displayport - that way the GPIOs that AX can see get connected to SDA and SCL.

The USB interface also offers a DFU device for flashing the firmware without a JTAG/ST-LINK cable,
which although very slow is good because it synchronises the board reset with the USB host's rescaning 
of the device, so you don't need to replug.


J.