Close
0%
0%

MIPI DSI Display Shield/HDMI Adapter

A controller for LCD/OLED screens with MIPI DSI interface. Arduino shield format, HDMI-to-DSI adapter & built-in framebuffer.

twltwl
Similar projects worth following
A simple controller for MIPI DSI displays, based on a Xilinx Spartan-6 FPGA.

MIPI DSI is a high speed packet-based interface for delivering video data to LCD/OLED displays. In a way it is similar to DisplayPort, with a more power-conscious (and thus complex) physical layer. DSI is mostly used in mobile devices (smartphones & tablets).

I started this project as the base for building a low-cost HD projector. Later on I realized it could be also useful for VR applications and as a general-purpose graphics card for small uCs - that's why it comes in Arduino shield format.


Features

  • Supports 3/4 lane MIPI DSI displays.
  • DSI controller supports resolutions of up to 1080x1920 at 60 Hz refresh rate.
  • Converts HDMI video to DSI - letting you connect any MIPI DSI screen to your PC, Raspi or similar devices. Conversion works up to 720p@60 Hz or 1080p@48 Hz.
  • Built-in framebuffer with simple graphics stack, allowing to interface small microcontrollers, such as Arduino through 8-bit parallel or SPI busses
  • Sub-$50 BOM, including 4-layer PCB (@100pcs).
  • Powered through mini USB connector.
  • Embedded 32-bit CPU, available for user applications.

Project history

  • 12/2013: Schematics & PCB done.
  • 12/2013: Initial version of the firmware, works with Iphone4/4s screens on a FPGA dev kit.
  • 02/2014: Got the PCBs and components.
  • 02/2014: Test PCB assembled, drive both 3- and 4-lane screens.
  • 07/2014: Started work on HDMI <> DSI conversion.
  • 08/2014: HDMI convesion working for 640x960 Iphone4 screen.
  • 08/2014: DSI core achieves 1080p @ 60 Hz (48 Hz with HDMI conversion).
  • 08/2014: Rev 1.1. PCB design, schematics and firmware released.
  • 06/2015: Prototypingr rev 2.0.

To do

  • Arduino interface/drawing commands (depending on demand).
  • Test external HDMI decoder with displays larger than 1080p.
  • Port Doom to run on the softcore CPU.

Hardware

The diagram below shows the main blocks of the design:

  • The FPGA: Xilinx Spartan-6-SLX9. Highlights: amateur-friendly TQFP144 package and built-in SerDes rated up to 1080 Mbits/s. The FPGA does pretty much everything in this project, hosting the MIPI DSI core, framebuffer controller with DDR memory, HDMI/DVI decoder. Everything is managed by an embedded Lattice Mico32 CPU.
  • DSI Level adapter: a bunch of resistors interfacing the FPGA's 1.8 V SSTL/LVCMOS I/O to DSI levels. More info in the FPGA section.
  • DSI connector: a standard 2x15pin 2mm pitch female connector with all DSI signals, power supplies and some GPIO pins for interfacing with the display. Since connector pinouts differ between displays the idea here is to use a tiny adapter board hosting the particular LCD's connector and its wiring.
  • DDR SDRAM, providing memory for the framebuffer, since most smartphone DSI displays don't have one.
  • HDMI input: slow version, using FPGA's ISERDES blocks (up to 1080p @ 48 Hz) or a fast one (1080p @ 60 Hz), based on Analog Devices' ADV7611 chip. The external HDMI decoder shares some pins with the SDRAM chip and the host interface, so the full HD - 60 Hz version can only work as a HDMI to DSI adapter.
  • Host interface: 12 pins wired to Arduino shield's IOH/IOL headers. Exact functions are not defined yet, I'm thinking about a 4-wire SPI interface and an 8-bit parallel bus.
  • USB UART a CP2102 chip providing USB UART, software bootloader and JTAG functionality for the FPGA.
  • Main power supply: integrated PMIC (TI/National LM26480). Voltages are: +3.3 V (HDMI input, USB, host I/F), +2.5 V (SDRAM and FPGA Vccaux), +1.8 V (DSI), +1.2 V (FPGA core).
  • LCD bias/backlight power suply: Most displays need some higher positive/negative votlage to operate. The board has a simple DC/DC converter for that purpose, producing symmetric voltage of up to +/- 6 V. The voltage can be adjusted for the particular panel by connecting a resistor between one of the DSI connector pins and ground. There is also a separate current driver for backlight LEDs, programmable by another resistor. Both DC/DC converters use a TPS61041 chip.

PCB Design

The DSI shield consists of two PCBs - the main board, where all the cool stuff is and a small adapter board, usually different for each display, connected through a 30 pin 2mm pinhead.

The main board is a typical Arduino shield. I routed the design on 4 layers, with the signals on the 2 outer layers, a contiguous ground plane and a split power plane. The DDR is placed right under the FPGA to simplify routing. SSTL to DSI level translator resistors are placed right next to the FPGA output pins to avoid stubs. All differential pairs are calculated for Z0=100 Ohm.

The adapter boards simply route the DSI lanes,...

Read more »

  • 1 × XC6SLX9-4TQ144 Spartan-6 FPGA
  • 1 × LM26480 Power Management ICs / Switching Regulators and Controllers
  • 1 × CP2103 Interface and IO ICs / USB
  • 1 × M25P80 Memory ICs / FLASH Memory
  • 1 × Molex 500254-1927 (or similar) HDMI SMD connector

View all 11 components

  • Announcement

    twl01/16/2018 at 19:54 7 comments


    As you've probably noticed, there hasn't been too many activity on the DSI Shield project during the past year. Many people were asking me where to buy the boards, how to set them up for a particular display and so on.

    Unfortunately, the amount of my spare time does not allow me to contribute to the DSI Shield enough to make it a viable product - that is manufacturing and shipping the boards, providing user support or adding new features. It's just too much for a single person doing this sort of stuff in free time (most of which is already devoted to KiCad development).

    If someone of you is interested in manufacturing these boards or firmware development, let me know.

    Tom

  • Rev 2.2a. KiCad PCB & Schematics published​

    twl08/24/2017 at 09:51 4 comments

    I've just pushed the full schematics/PCB design of the latest revision of the board to GitHub. It took a while to convert them to KiCad...

  • Rev2.0 prototypes arrived

    twl08/18/2015 at 16:10 27 comments

    I've received a couple of Rev 2.0 prototypes. Iphone4 display is working fine, still waiting for Optimus E980 connectors though...

  • Revision 2.0 & commercial availabilty of the boards.

    twl06/21/2015 at 23:08 26 comments

    Hi all,

    The prototype of Rev 2 PCB (see below) just went to production.


    Some news:

    - Boards will be manufactured and sold by Creotech. We are targeting $99 (+ taxes/shipping).

    - Rev 2 board will support resolutions up to 1080p/48 Hz and work by default with Iphone4 and LG Optimus E980 displays. For other screen types (AMOLED Galaxy S3/S4, Iphone 5) there will be adapters (available later).

    - New version will also come with a composite video input, foreseen for building FPV systems for drones/flying models.

    Note that the initial V2 release firmware WILL not work as a graphics card for Arduino. Writing a graphics accelerator is a serious task and my time resources are quite limited...

  • Commericial availability of the boards

    twl04/28/2015 at 08:43 17 comments

    Hi all,

    We've found an industrial partner to manufacture and ship the DSI shield boards. Before we start the production, we need to know how many people would be like to purchasing the boards and which display models should be supported out-of-the-box. Feel free to fill the Doodle below if you are interested:

    http://doodle.com/uv283rp366prppnt

    Cheers,

    Tom

  • Galaxy S4 AMOLED screen working

    twl04/14/2015 at 09:47 12 comments

    We have a working Galaxy S4 AMOLED screen, 1920 x 1080. A QHD screen from GS Note 4 is waiting to be tested soon!

  • First release

    twl08/16/2014 at 00:26 0 comments

    The PCB design, FPGA and software sources for the first release of the DSI shield are now available on Github.

    Enjoy!

  • HDMI to MIPI conversion working

    twl08/05/2014 at 17:37 2 comments

    HDMI to MIPI conversion is finally working, here's a video showing a Raspi driving an iPhone 4 screen.

    Freshest sources coming as soon as I've cleaned them up :)

View all 8 project logs

  • 1
    Step 1

    Build the hardware:

    - Make/order the DSI Shield PCB.

    - Solder it!

    - Check the BOM, as not all components should be mounted.

    - Make/order/design an adapter board for your screen.

    - Connect the two boards together with the LCD. Power the system through USB.

    - No smoke indicates probable success.

  • 2
    Step 2

    Clone the repository:

    git clone https://github.com/twlostow/dsi-shield

    Install an LM32 toolchain. You may find one on Lattice website. There's a pre-built version for Linux (IA32) available here.

    Download and install Xilinx ISE 14.7 Webpack from Xilinx website.

  • 3
    Step 3

    Build the software:

    - edit software/rev1/panels.h and set the panel type you wish to use.

    $ cd software
    $ make

    This will produce the boot.ram file that the synthesizer will embed in the FPGA bitstream. The file contains both the panel initialization/HDMI handling code and the bootloader, so the LM32 application can be re-loaded at any time via USB UART.

View all 5 instructions

Enjoy this project?

Share

Discussions

Ben E.D. wrote 08/08/2015 at 16:21 point

Release?

  Are you sure? yes | no

nerdsons.it wrote 07/31/2015 at 01:06 point

Does it work with the iphone 6 plus lcd?

  Are you sure? yes | no

Jason wrote 07/22/2015 at 13:24 point

Is it possible to support iPad / iPad mini LCDs ? 

Why not Kickstarter this project? So we can back you for volume production. 

  Are you sure? yes | no

sidhurta wrote 07/10/2015 at 19:17 point

How much for an assembled one?

  Are you sure? yes | no

Jarrett wrote 05/06/2015 at 21:34 point

I think you hit the SEO keyword bingo, dude. All of the "copy/paste hobbyists" are coming out of the woodwork.

  Are you sure? yes | no

romildo_escarpini wrote 05/06/2015 at 15:27 point

Hi TWL, the TC358779XBG has entries for the plugs of the Iphone 4 screen?
About your Shield, where we can buy?


thank you

  Are you sure? yes | no

Bheeshma Chary wrote 04/17/2015 at 09:03 point

is the board capable of driving 7 inch fhd LCD LD070WU2-SM01 ?

  Are you sure? yes | no

el.panzerito wrote 03/29/2015 at 08:47 point

>Components
>1. XC6SLX9-4TQ144

May be XC6SLX9-3TQ144? I don't found 4 speed grade in the spartan-6 specifications.

Would http://www.panelook.com/LH520WF1-SD01_LG%20Display_5.2_LCM_overview_21529.html (1920x1080x60Hz) work with XC6SLX9-2?

  Are you sure? yes | no

twl wrote 03/29/2015 at 21:06 point

Speed grade is even faster than 2 that I'm using, will work just fine.

  Are you sure? yes | no

Pip wrote 03/05/2015 at 00:04 point

twl did you ever make a projector with this? Would love to see it.

  Are you sure? yes | no

twl wrote 03/29/2015 at 21:06 point

Nope, but I know that some people are working to make such a projector already using the shield.

  Are you sure? yes | no

Matt wrote 02/13/2015 at 21:05 point

I have two questions: 

1. Are the board and schematic files available in their original format for modification? 

2. What's the best source for the pinouts for the phone display connectors?

  Are you sure? yes | no

Jarrett wrote 02/13/2015 at 23:14 point

Most display pinouts designed for phones will be proprietary information. You can often get clues from similar displays from the same manufacturers that were intended for public use, but they will often be subtly different. Finding ground planes, closely routed signal paths, etc can help, but this is not a simple task.

  Are you sure? yes | no

Matt wrote 02/17/2015 at 13:07 point

That's what I figured. I'm going to have to do some digging.

  Are you sure? yes | no

Gabriel wrote 02/10/2015 at 01:16 point

I am attempting to build a diy smartphone with the new v.2 raspberry pi. I plan to use this display adapter to interface connected to an around 5.5" lcd. Any suggestions?

  Are you sure? yes | no

shadowfaxgtg wrote 03/01/2015 at 01:01 point

I would also like to use this to interface with an around 5.5" lcd.  I would also appreciate any suggestions.

  Are you sure? yes | no

Pete wrote 08/05/2015 at 22:42 point

I want to hear more about this DIY smartphone!

  Are you sure? yes | no

Andre wrote 02/06/2015 at 13:31 point

Hello! Is anybody interested in joining me in having this PCB made? If 5-10 of us are interested it would only cost about 5$ each plus shipping to have this 4 layer bad ass board. contact me if interested. andrebri at gmail dot com

  Are you sure? yes | no

Jonatas wrote 02/07/2015 at 13:33 point

Estou interessado. 1

  Are you sure? yes | no

Jonatas wrote 01/21/2015 at 00:28 point

Hello. My name is Jonatas. I'm from Brazil. I do not speak English.

I'm building a projector and need a screen. I thought of using a mobile screen. From what I could understand is that it says to build the adapter. I can not do that.

And this adapter works with the Galaxy s4 I9505 screen?

Photo:

http://mlb-s1-p.mlstatic.com/tela-display-touch-screen-visor-vidro-galaxy-s4-i9500-i9505-22359-MLB20228167002_012015-F.jpg

You could build an adapter those with hdmi connector faster and of course, send to my home in Brazil? And what it would cost to do all this?

Update:

I noticed that the connector is a hdmi. Where would leave the audio? From what I know HDMI transmits image and sound.

  Are you sure? yes | no

Andre wrote 02/07/2015 at 11:39 point

Sim, funciona. Eu vou ligar um ecran do S3, so precisa de um adaptador. Posso fazer a board para ti tambem ja que vou fazer uma para mim. O meu email esta no post acima, se quiseres falar melhor.

  Are you sure? yes | no

jaksa_tomovic wrote 01/18/2015 at 00:05 point

Is this possible to connect with this LCD


http://www.aliexpress.com/item/1-63-inch-20PIN-HD-Color-OLED-Display-Screen-RM69032-Drive-IC-320-RGB-320-MIPI/32257522530.html

  Are you sure? yes | no

twl wrote 01/18/2015 at 23:31 point

Current firmware supports only 3/4 lane displays, but I'd say yes - after a bit of hacking.

  Are you sure? yes | no

hatmadder01 wrote 01/09/2015 at 09:27 point

Anyone knows any place to buy a pre-assembled unit that can run the HTC One 1080 x 1920 LCD?

  Are you sure? yes | no

达Da wrote 12/24/2014 at 16:46 point

I don't know whether should I ask but who can tell me where I can buy this board.Ummm,and my English is not good.

  Are you sure? yes | no

yonray wrote 12/05/2014 at 03:30 point
what wattage resistors are used and tolerance?

  Are you sure? yes | no

James wrote 11/12/2014 at 05:05 point
will this adapt to the iphone 5 displays ?

  Are you sure? yes | no

twl wrote 11/12/2014 at 19:31 point
Yep, it will. I have a salveged Iphone5 LCD, just no time to try it ;)

  Are you sure? yes | no

simulai wrote 11/06/2014 at 03:39 point
Why not use TC358779XBG

  Are you sure? yes | no

twl wrote 11/06/2014 at 08:34 point
Obviously, because TC3587somethingelse can't run Doom. My goal was not only to develop a HDMI to MIPI adapter, but to use a MIPI display with any FPGA-based system.

  Are you sure? yes | no

turbohawkv6 wrote 11/04/2014 at 06:02 point
I'm interested in the SPI/parallel connectivity. I have some uC based projects that I would like to use small screens with.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates