Go Down

Topic: HDMI not working with specific LCD (Read 626 times) previous topic - next topic

Keola

Hi,

I'm trying to get an LCD working using the HDMI port but get no image using the VidorDrawLogo example.

When I connect the Vidor to a monitor everything works fine and the logo is displayed.

When I connect the LCD to my notebook it also works fine so there is no issue with the LCD.

Just the LCD with the Vidor is not working. Can anybody help me with troubleshooting this?

After reading this thread https://forum.arduino.cc/index.php?topic=561263.0 I tried doubletapping the reset button, disconnecting and reconnecting the HDMI cable and powered the Vidor and the LCD with an external power source, but nothing helped.

I'm new to Arduino so take it easy on me.


Keola

DarioPennisi

Hi Keola,
Vidor outputs 640x480@60Hz and it is possible your LCD does not support this resolution. if your laptop OS supports it try setting its output resolution to 640x480 so that you can doublecheck the monitor is working at that resolution.
thanks,

Dario

Keola

Hi Dario,

when I connect the LCD to the Notebook it does not let me change the resolution. The LCD resolution is 800 x 800.


Is this a dead end?



Keola


riccardo_giacomazzi

The LCD resolution is 800 x 800.
What a strange resolution. Is it a square lcd?

Do you have the model name or a link where you bought it?

DarioPennisi

Hi Keola,
i agree with Riccardo. likely your panel is only able to display that single resolution and is forcing PC to output it. at the moment Vidor does not check EDID (the memory which contains panel info) so it outputs a fixed resolution which by standard shall be supported by every display. apparently this is not the case for your panel... maybe you want to try with a different one?

Keola

Hi,

it is this one https://www.alibaba.com/product-detail/Raspberry-pi-3-model-b-HDMI_60779627341.html?spm=a2700.7724857.normalList.21.c36d221facIpph

Actually the pictures show the display, but the description is for the hdmi to mipi board which I am using to connect the display to the Vidor.
So I'm afraid you are right. Probably the panel only supports the native resolution. A different display is an option but I have not found another round display in a similar or slightly smaller size but lower resolution. So maybe I'll have to bite the bullet and go for a 2,1" with a 320 x 320. Do you think this one will work?

https://www.alibaba.com/product-detail/2-1-inch-HDMI-To-MIPI_60649306434.html?spm=a2700.details.pronpeci14.6.49871ba1rFsoqJ

Dario,

Hi Keola,
i agree with Riccardo. likely your panel is only able to display that single resolution and is forcing PC to output it. at the moment Vidor does not check EDID (the memory which contains panel info) so it outputs a fixed resolution which by standard shall be supported by every display. apparently this is not the case for your panel... maybe you want to try with a different one?
I'm not sure I understand this. Do you mean the display will always have to scale the Vidor output of 640 x 480 to its size? So if the 320 x 320 display could scale it, it would scale it to 320 x 240?

Keola




riccardo_giacomazzi

If the HDMI-MIPI conversion board supports the EDID protocol, the parameters can be obtained to generate the correct signal.

I did so to drive a 480x800 display: is sold as 800x480 but in reality it should be piloted as 480x800 otherwise it does not work.


Keola

#7
Sep 21, 2018, 06:15 pm Last Edit: Sep 21, 2018, 06:16 pm by Keola
Hi Riccardo,

that's interesting. How did you force the Vidor to output the correct signal?


Here is the EDID Information of the Panel:

Vendor/Product Identification:

   Monitor Name :    LS060R1SX01
   Monitor Serial Number :    00000000
   Manufacturer Name :    LZT
   Product Id :    1
   Serial Number :    0
   Week Of Manufacture :    12
   Year Of Manufacture :    2017
   EDIDVersion :    V1.3
   Number Of Extension Flag :    1

Display parameters:

   Video Input Definition :    Digital Signal
   DFP1X Compatible Interface :    False
   Max Horizontal Image Size :    0 mm
   Max Vertical Image Size :    0 mm
   Max Display Size :    0 Inches

Power Management and Features:

   Standby :    Not Supported
   Suspend :    Not Supported
   ActiveOff :    Not Supported
   Video Input :    1
   sRGB Default ColorSpace :    False
   Default GTF :    Not Supported
   Prefered Timing Mode :    True

Gamma/Color and Etablished Timings:

   Display Gamma :    2,2
   Red :    x = 0,602 - y = 0,336
   Green :    x = 0,306 - y = 0,526
   Blue :    x = 0,151 - y = 0,12
   White :    x = 0,313 - y = 0,329

   Etablished Timings :    

   Display Type :    RGB Color Display

Standard Timing:


Preferred Detailed Timing:

   Pixel Clock :    44,74 Mhz

   Horizontal Active :    800 pixels
   Horizontal Blanking :    92 pixels
   Horizontal Sync Offset :    40 pixels
   Horizontal Sync Pulse Width :    12 pixels
   Horizontal Border :    0 pixels
   Horizontal Size :    90 mm

   Vertical Active :    800 lines
   Vertical Blanking :    36 lines
   Vertical Sync Offset :    12 lines
   Vertical Sync Pulse Width :    12 lines
   Vertical Border :    0 lines
   Vertical Size :    160 mm

   Input Type :    Digital Separate
   Interlaced :    False
   VerticalPolarity :    False
   HorizontalPolarity :    False

Monitor Range Limit:

   Maximum Vertical Frequency :    75 Hz
   Minimum Vertical Frequency :    23 Hz
   Maximum Horizontal Frequency :    240 KHz
   Minimum Horizontal Frequency :    15 KHz
   Maximum Pixel Clock :    300 MHz


Keola

riccardo_giacomazzi

In the FBST module the current parameters should be changed:

Code: [Select]
  parameter pHRES=1280,
  parameter pVRES=720,
  parameter pHTOTAL=1354,
  parameter pVTOTAL=910,
  parameter pHSS=1300,
  parameter pHSE=1340,
  parameter pVSS=778,
  parameter pVSE=782


adapting them to those of your display:

Code: [Select]
  parameter pHRES=800,
  parameter pVRES=800,
  parameter pHTOTAL=892,
  parameter pVTOTAL=836,
  parameter pHSS=840,
  parameter pHSE=852,
  parameter pVSS=812,
  parameter pVSE=824


Furthermore, in the SYSTEM_PLL module it is necessary to modify the multipliers and dividers for the outputs c0 and c1, so that c0 is as close as possible to 44.74MHz and c1 is exactly 5 times c0.

Once this is done, the output signal should be corrected, the remainder of the FBST module remains to be modified to adapt the RAM to the new resolution.

In my case I wrote a new DVI module where the signal content is generated automatically, without any video RAM, just to test the display.

I assume you need the display to work with the Graphics Library, so you will have to wait for the complete publication of the sources before you can use it; from the recent postings of Dario should be lacking little time.

DarioPennisi

Hi,
A few remarks...
1) LCD panels need to be fed with native resolution. You can slightly change frequencies and blanking but you can't absolutely drive them with a different resolution. Although you will see the LCD has a controller that is a tcon so it's only role is to generate low level LCD driving signals and doesn't do any scaling
2) format converters such as the HDMI to mipi converter you're using are just converting the "protocol" so they don't perform any scaling. Even if it's edid reports variable scan frequencies it's just due to laziness of the developer... I bet that if you feed it with 300mhz clock it won't work.
3) simple scaler boards don't have a frame buffer so they can scale image but vertical timing will stay the same. If for example you want to drive a panel with a 30 hz vertical frequency likely it won't work as panels usually accept vertical frequencies above 50hz.
4) complex scaler boards have frame buffers and can perform scan conversion. The most sophisticated ones even do motion compensation, generating intermediate frames when upconverting say from 30 to 60 hz by analyzing moving portions...

Now, getting back to your issue, probably next week I'll release the full flow so you can modify output resolution. Actually it's also possible that we'll release a version that allows changing resolution at run time but that will come later as it requires run time reconfiguration of the pll as Riccardo mentioned.


Keola

Thanks guys. I'm very grateful for your help although most of the information is over my head.


I somehow misinterpreted this comment:


…..

Vidor outputs 640x480@60Hz
…..
as "the maximum output is 640x480" so I thought all is lost with this display.


Now, getting back to your issue, probably next week I'll release the full flow so you can modify output resolution. Actually it's also possible that we'll release a version that allows changing resolution at run time but that will come later as it requires run time reconfiguration of the pll as Riccardo mentioned.

Good stuff! I'm excited to try to get it working.



Keola

DarioPennisi

Hi Keola,
Max resolution really depends on several parameters. In Vidor the limiting factor is sdram. It runs at 100Mhz (it could run faster but not if the fpga is so full as in graphics image) and this means that at 16bits per pixel and 60 MHz pixel clock ( to have 1080p30 with reduced blanking) you would be consuming 60% of the bandwidth not considering addressing overhead. If you want to write in the memory then you have realistically bit more than 20mpixel/sec or even less if you perform random accesses. In graphics image we have 2 write and 2 read clients (camera read/write and image read/write) plus one if you use also neopixel so in order to prevent issues I limited resolution to 640x480 which requires around 24mpixel/sec bandwidth per client... Having these considerations in mind will allow you to push the limits. For example if you reduce the amount of logic you can get timing closure with sdram running at over 130Mhz...


Keola

Hi Dario,

Do you have any updates on this?

Thanks.

Keola

philippe_at_sysemb

Hi Keola,

you can try this sketch : sketch_dvi_800x800

Regards
Philippe

Keola

Hi Phillipe,

thanks for sticking your head into this but also with this sketch I do not get an output on the screen.


Regards,

Markus

Go Up