Working display connected by GPIO pins to microcontroller?

Would it be possible to add a normal HDMI port or a display to any microcontroller with the GPIO pins?

(I didn't buy anything yet, I'm just getting information before I buy...)

EDIT: Thanks for all the information guys, a moderator should probably close this discussion now...

• Suggest you read the wikipedia site on HDM - specially the part about "gigabits per second and then ask yourself how many gigabits per second a microcontroller that is clocked at maybe 100MHz can produce. – JRE May 1 '16 at 16:16
• If you want to support an HDMI type display get yourself a Raspberry Pi. These have an onboard SOC that supports an HDMI port plus a sizeable amount of RAM to support it. The R-Pi boards are inexpensive for what you get and have a whole community of Makers around them that support the embedded Linux that runs on the boards and other software that does all kinds of things. – Michael Karas May 1 '16 at 16:29
• @MichaelKaras I know what a raspberry pi is, that's how I got introduced to the amazing world of electronics (XD...), The problem is (why I'm probably not using a raspberry pi for my project) is that all the ones I want (zero, a+) are sold out (except on diji-key, where there 42$CAD.) A much less costly solution is to just buy a 8$ micro-controller. – Tacocat 4642 May 1 '16 at 17:24
• you can do a C.H.I.P for $9 with a$15 hdmi add on card. probably why the pi-zero came out. but as already mentioned there is no way a microcontroller could handle video like that, unless there is a video hardware and another processor to go with it. right now I dont know if anything can compete with the pi if hdmi is what you are after at a low price. maybe the pcduino lite at sparkfun, or some other allwinner based android board out of China or Taiwan. (at least until the pizero is available) – old_timer May 2 '16 at 1:06

Any display controlled by an HDMI port is not going to be possible to get working on a "few GPIO pins". You would really need a microcontroller or an SOC with a built in HDMI controller. Keep in mind that such MCU or SOC would also have to have support for connection of SDRAM or DDR memory to support the image source for the HDMI controller.

For most other types of simpler microcontrollers you can use a few GPIOs to support small displays such as monochrome character LCDs. The 16 character by two lines is a very common type. In similar manner you can support small graphics displays that support display refresh memory right in the display controller chip onboard the display module. A particularly popular type of display is the back lit 1024 x 256 pixel display. The graphics displays that are easiest to work with support one bit per pixel. Color displays are also possible but are harder to work with and may support a few more bits per pixel.

HDMI (and HD video in general) requires a very large bandwidth, which implies a fast processor that is capable of generating or manipulating that much data.

This excludes microcontrollers. If you want to drive HDMI, the smallest chip that could do so would be a small FPGA, an ARM Cortex A series, or similar. Microcontrollers simply don't have the required clock speed, interconnect bandwidth, or memory. Also, HDMI requires differential signal drivers, which are exceedingly rare if not nonexistent on microcontrollers.

Now, that said, it may be possible to couple a microcontroller to an HDMI transmitter, but you will still be hampered by the slow clock speed and very limited RAM. You will be better off using either an ARM A8/9 or an FPGA (probably with external DDR).

Typically, when you need a microcontroller-attached display, you would use one of the following options:

• a small LCD display, typically 16x2 or 20x4 monochromatic line display. These can be driven directly via GPIO pins, or through a serial/I2C "backpack" which reduces the number of needed IO lines.
• an I2C/SPI OLED. These are often 128x64 pixels, monochromatic.
• a SPI TFT LCD. Full-color, typ. 1.8-~4in diagonal, sometimes with resistive touch support.

It is possible to directly drive VGA at limited resolutions and color depths from a MCU, but it requires the majority of available processing cycles and memory, so it is typically more often a novelty rather than a practical solution.

Simply, no. HDMI is a quite specialized kind of digital output format which cannot be implemented with a few GPIO pins from ANY microprocessor or microcontroller. There are three major reasons for this.

1) The electrical signals are current-mode, low-voltage differential signals which are quite different from GPIO.

2) The data rate is quite high (up to 18GBPS) which is quite beyond what GPIO interfaces are designed to handle.

3) The timing of the signals is critical. Another thing that is difficult to impossible to achieve with ordinary GPIO ports.

To be sure, there ARE chips that are specially designed to generate (and receive) HDMI. And there are a growing number of mcirocontroller chips which have HDMI output built-in. A prime example is the Raspberry Pi which is based on a Broadcom "System on a Chip" (SOC) which has integrated HDMI output.

unfortunately, no, even if the micro could handle the immense bandwidth (it can't), most gpio pins have a limit of 20-60MHz, far short of the 1000MHz or so needed by hdmi, although there are micros with dedicated hdmi outputs, but you're looking at a \$20 part with 400 BGA pins