Driving a DSI screen - Page 1
Forum section: electronics / projects

author: Moondeck
author_rank: Regular Contributor
timestamp: May 28, 2017, 02:38:15 pm
content: Hi everyone,I am working on a project where i want to drive a mobile display that uses the DSI interface (the Xperia Z screen). I want to be able to drive it with a PIC32MZ DA, and i know it has the graphics interface, but its parallel, and the display is serial, so, my question is: How can i drive it? Should i use an FPGA (kinda overkill?), or would this be enoughhttp://www.ti.com/product/sn65lvds315? Would i need 4 of these, since the display has 4 data lines and 1 clock?Thanks,moondeck

author: daveshah
author_rank: Unknown
timestamp: May 28, 2017, 03:03:31 pm
content: CSI and DSI aren't compatible, that TI chip won't work.FPGA is probably the best option, I'm currently working on a project to drive a similar panel from an FPGA (currently at the proof-of-concept working stage) -https://github.com/daveshah1/DSITx. There are also existing open source projects like this that would be more suitable such ashttps://github.com/twlostow/dsi-shield/. Lattice also have a free of charge IP available for their parts which would probably be the easiest out-of-the-box FPGA solution and probably no more expensive than a dedicated driver IC, if you could find one (I think some exist but are the kind of thing that are poorly documented and hard to source).

author: Moondeck
author_rank: Regular Contributor
timestamp: May 28, 2017, 03:07:06 pm
content: Alright, i will consider that. Its just that i lack any FPGA skills while i do have some system programming skills (small, but still). Does anyone know any display manufacturers where i could source a touch display that uses a parallel interface, at a decent (around 5 inch) size? Its not a commercial project so NDAs and stuff are not an option :/

author: daveshah
author_rank: Unknown
timestamp: May 28, 2017, 03:10:13 pm
content: http://www.buydisplay.com/default/5-tft-lcd-display-module-wvga-800x480-high-resolution-for-mp4-gpsIf 800x480 is enough, this is NDA-free, available in low quantities and has both resistive and capacitive touch options. I've bought from them before and haven't had any problems.

author: Moondeck
author_rank: Regular Contributor
timestamp: May 28, 2017, 03:12:23 pm
content: Yes, i know about that model, problem is that unlike the phone displays, it has a large frame, which is a no-go for my project. A display from an Xperia would be perfect as its cheap and very simple in terms of the shape.

author: amyk
author_rank: Super Contributor
timestamp: May 28, 2017, 03:39:18 pm
content: Smartphone screens, which are most likely to have the thin bezel you want, are also least likely to have a parallel interface.You may want to watch the videos here for a quick overview of DSI:http://www.electricstuff.co.uk/nanohack.htmlFPGA/CPLD would work, or you could try to bitbang it...

author: bktemp
author_rank: Super Contributor
timestamp: May 28, 2017, 03:45:45 pm
content: You could use this chip:http://www.solomon-systech.com/en/product/mobile-system/mipi-master-bridge-chip/ssd2828/It converts parallel RGB data into MIPI-DSI, exactly what you need.I haven't used it myself, but it seems to be quite easy to use.Before you start, you need to find answers for the following questions:Does the display work in video or command mode?Does it need an initialisation sequence? If yes, is it available?

author: Moondeck
author_rank: Regular Contributor
timestamp: May 28, 2017, 03:46:54 pm
content: Quote from: amyk on May 28, 2017, 03:39:18 pmThanks, so it is actually possible to bitbang? Is a CPLD fast enough to do that? The spec says that the minimum DSICLK frequency is 100MHz... I should probably reconsider the display choice

author: mikeselectricstuff
author_rank: Super Contributor
timestamp: May 28, 2017, 03:47:22 pm
content: You will need at least a CPLD to do the serialising at any sensible speed.before investigating further, check you can actually get the mating connector for the display.

author: Moondeck
author_rank: Regular Contributor
timestamp: May 28, 2017, 03:55:05 pm
content: The init sequence seems to be there, as code though :/https://github.com/CyanogenMod/android_kernel_sony_apq8064/blob/cm-10.2/drivers/video/msm/mipi_dsi_panel_r63311_sharp_ls050t3sx01.cAnyone got a better alternative to these displays?

author: david_geng
author_rank: Newbie
timestamp: May 31, 2017, 11:31:25 pm
content: Similar question, for certain DSI LCD with internal RAM and controller, is it possible to display slow picture, such as a weather station, via the LP command mode? For example, LS055R1SX03 has 8 lanes, would all these lanes support the command mode or only the D0 lane can be used for LP commands? thx

author: bktemp
author_rank: Super Contributor
timestamp: June 01, 2017, 05:04:20 am
content: The MIPI specs say: "Forward direction Low Power transmissions shall use Data Lane 0 only." So it only supports commands on the first lane in LP mode.It is also mandatory to support HS mode, but I couldn't find anything specific about transmitting image data in LP mode. It could work, but there are probably some displays supporting only image data in HS mode.

author: david_geng
author_rank: Newbie
timestamp: June 01, 2017, 10:27:51 am
content: i c. However, the data rate on a single lane LP mode would be very slow. In the Renesas data sheet (R63419), it mentioned a 1/3 compression of the pixel data. Any idea how that works? is it standard 1/3 compression or Renesas proprietary ?

author: bktemp
author_rank: Super Contributor
timestamp: June 01, 2017, 12:01:25 pm
content: MIPI defined some data compression recently giving a 2-3x compression ratio. Maybe that is what the Renesas controller uses (is the datasheet available somewhere?)Unfortunately I don't have any recent version of the MIPI specs, only the old one available on some Chinese PDF sharing platforms.Some of the displays I have used followed the MIPI-DSI specs precisely. So even without any additional information I could use them by sending the basic display power on sequence described in the MIPI_DSI specs. Other displays used some additional functionality not defined in the basic MIPI specs. Without having the exact initialization sequence it is impossible to use those displays.Using LP mode for initialization and HS mode for driving the screen is the typical usage. Doing it differently does not always work. I had displays failing to work if the init sequence was sent in HS mode.

author: daveshah
author_rank: Unknown
timestamp: June 01, 2017, 12:12:39 pm
content: MIPI compression is a mess as far as I've seen. The "standard" way to do it, which many new panels and SoCs are now using is VESA DSC, which is somewhat open (pay $350 for the standard and a reference model).However there are at least four incompatible proprietary compression standards out there as well - Qualcomm FBC, Samsung MIC, Mediatek UFO and some Toshiba one, and different versions of them as well (at least FBC and MIC have 1/2 and 1/3 versions).Many panel DDICs support multiple compression standards - as they're all fundamentally similar DPCM derivatives, this probably isn't too area-expensive - but it's often difficult to know what standards they support, and what command to send to select the mode.

author: ebclr
author_rank: Super Contributor
timestamp: June 01, 2017, 06:51:31 pm
content: This ST discovery kit comes with DSI display, you may find some usefully information therehttp://www.st.com/en/evaluation-tools/32f769idiscovery.html

author: david_geng
author_rank: Newbie
timestamp: June 01, 2017, 09:35:19 pm
content: thanks for your inputs. I was about to ask if a panel could be initialized purely via the HS mode, and obviously bktemp has already answered it.Also, as I'm building my DPHY with FPGA, at the LP mode, after the escape mode entry, is it correct to send a display_on command like this sequence?0x87(LPDT), 0x05, 0x11, 0x00, 0x80also another long packet such as,0x87, 0x29, 0x02, 0x00, 0xC0, 0xb3, 0x18, 0xFF, 0xFFSince the panel does not appear to response to the commands I have no means to test if I'm sending the correct data.

author: david_geng
author_rank: Newbie
timestamp: June 01, 2017, 09:53:48 pm
content: Also, in some linux driver source code, such panels can have long complicated initialization process, including the detailed setting for the video timings.However, by the panel datasheet, it seems to only need a few simple steps, and I'm guessing there is default settings copied from a NV ram on power-up / reset.So, the question is, would the simple initialization steps normally be sufficient or I should go through the detailed settings like a linux driver does.cheers

author: david_geng
author_rank: Newbie
timestamp: June 01, 2017, 10:03:36 pm
content: regarding the compress, the R63419 datasheet says to generate 64bit compressed data on 8 pixels (4pixels 2 lines). so it's a kind of 2D compression.

author: Andrey_irk
author_rank: Regular Contributor
timestamp: June 02, 2017, 05:50:47 am
content: Quote from: ebclr on June 01, 2017, 06:51:31 pmThey also have F469 discovery board with 800x480 DSI display. Moreover, they provide schematics, pcb layouts, BOMs for their boards which is handy.I thought about buying one and building something. But...In order to justify using such thing you have to implement a nice GUI, but the GUI libraries they use aren't free and I couldn't find a good free one. The second problem is in finding a DSI display. There aren't many of them on ebay or aliexpress and if you try to use one from a smartphone - you'll have to figure out how to initialize it.Can someone suggest where to look for these displays? (with documentation and stuff)Any thoughts concerning GUI?

author: ebclr
author_rank: Super Contributor
timestamp: June 02, 2017, 06:07:31 am
content: I'm not sure about the legalities but apparently is freehttp://www.st.com/en/embedded-software/stemwin.html

author: Andrey_irk
author_rank: Regular Contributor
timestamp: June 02, 2017, 07:33:04 am
content: Quote from: ebclr on June 02, 2017, 06:07:31 amLooks like a rebranded SEGGER's GUI. Interesting. The original one cost a few thousand euros.