A20 + 7" LCD with flickering

Started by dudo, April 09, 2014, 02:44:19 PM

Previous topic - Next topic

dave-at-axon

Thanks Marc,

Actually thinking more about it, it might be a good idea to build an LVDS interface for the system. Although the A20 can output LVDS I am thinking that a board that plugs into the 40 way header and then converts the existing RGB into LVDS. This then runs over the FPC (or other cable) and is converted back to RGB on the LCD board.

I think this would offer a far better solution to the EMC requirements and at the same time remove the issue of flickering that is being seen.

Coupled to this we could add a touch driver to the board that communicates via I2C for those with resistive touch panels.

I'll look into this over the next few weeks and see about building a prototype.

Marc Coussement

@deskwizard,

Yes indeed this is correct, but don't use a ATA133 cable. This cable and connector or special designed for the ATA pinning.
But the idea is correct, to use flat-cable for high speed one needs a flat-cable layout having
"signal-gnd-signal-gnd" layout, and correct impedance matching of the driver to the cable impedance.

So in short,
Higher resolution LCD will be less stable.
For 10 inch LCD the dotclk is typical 51 Mhz
For 7 inch LCD the dotclk is typical 33 Mhz

The main issue with the Olimex LCD pinning is "Dotclk not surrounded by Gnd signals"!

One has two options.
1/ use a very short cable
2/ make a LVDS interface (see dave-at-axon post)


Marc,

martinayotte

Is that means that software solution mentionned by LubOlimex is not true ?

Marc Coussement

@martinayotte,

I don't know if the solution mention by LubOlimex is true or not.

My problem was with 10 inch display and the cause was hardware,dotclk signal was interfering with Vertical signal.

Marc,

dave-at-axon

Hi Marc,

I've chosen the DS90C383MTDX and DS90CF384MTDX because I can get those easily here and they are cheap. I had thought about FPD-LINK III but that is a lot more complex to design in and some devices require I2C to configure them. The chipset I have chosen will work up to 45Mhz and needs no drivers.

They are simple to use and will make it quick to create a prototype. I'll re-engineer my LCD PCB to use a 40 way FPC. It's more ways than I need but I have stock of them along with the FPC connectors so makes sense to re-use them in this design. I also use the 40 way in another design so it means less stock to hold.

I'll create the board for the A20 side and I may design a receiver board for the LCD end that can plug into the existing A13-LCD from Olimex, although I don't need this as I have a custom LCD anyway, it could be offered to those wishing to sort out issues with the Olimex design.

It should mean that it will work with the 10" display too???

dlombardo

So, for piggyback setup the simplest and effective solution would be to interconnect the boards with PCB
with signal lines on one side, and GND plane on the other side?

Quote
2/ The best solution is connecting the LCD direct to the CPU board with a solid ground plane.

Marc Coussement

@dlombardo

Yes, this will do the job,

Quote from: dlombardo on June 30, 2014, 12:04:27 PM
So, for piggyback setup the simplest and effective solution would be to interconnect the boards with PCB
with signal lines on one side, and GND plane on the other side?

Quote
2/ The best solution is connecting the LCD direct to the CPU board with a solid ground plane.


Marc Coussement

@dave-at-axon

Regarding your LVDS PCB design, look for PCB design rules, application notes, evaluation board layout examples from the chip manufacturer.
I expect one should route the LVDS signals with respect to the correct signal impedance, route them as pair, respect equal length for all pairs, have a solid ground plane, correct placed decoupling capacitors ...

This LVDS signals run at > 400 Mhz signal speed. This is normal no problem if you respect all design constrains.

Good luck with your PCB design,
Marc,

dave-at-axon

Thanks Marc.

I use Altium Designer and I have setup the rules to route the LVDS as differential pairs with impedance and length matching as per the design documents.

I'll post back here in a few weeks when I have the PCB and tested it.

dlombardo

For all the newbies like me 8)

See *PROPER SOLUTION* at the end if starting from clean Debian release 7 image on default HDMI :)

Some explanation ...

I did find the Olimex Debian release 2 image, downloaded, dd to a card, boot and voila ... the image was still :)
So, I decided not to do any HW change before I get the same picture quality in Debian release 7.

Indeed I got it, comparing script.bin from those these releases. Like many did before :)
Did those 4 changes in script.bin.
Ok, I was :o, because after I got still picture I could not find the problematic one by elimination i.e. changing back parameters one by one.
But, since my system was not clean Debian release 7 any more, specially the script.bin, I used a clean image and ...

QUICK SOLUTION:
- install Debian release 7 (current wiki linked) image on a card
- boot A20 with HDMI monitor (and USB keyboard /w mouse for convenience)
- open terminal execute sudo /root/change_display_a20_OlinuXino.sh and select LCD -> 10", reboot
-> system starts on LCD with flickering and tearing issues
- fix the lcd_io_cfg0 from 0 to 268435456 in script.bin on a setup partition (there are 2 partitions on the card ;) )
* on boot this partition is mounted in /media/[ID]
* script.bin in /opt/sunxi-tools/ does not seem to matter

umount /dev/mmcblk0p1
mount /dev/mmcblk0p1 /mnt/mmc
cp -a /mnt/mmc/script.bin /mnt/mmc/back_up/script_r7_LCD10.bin
/opt/sunxi-tools/bin2fex /mnt/mmc/back_up/script_r7_LCD10.bin /mnt/mmc/back_up/script_r7_LCD10.fex
vi /mnt/mmc/back_up/script_r7_LCD10.fex
-> EDIT lcd_io_cfg0 for the LCD display 0
/opt/sunxi-tools/fex2bin /mnt/mmc/back_up/script_r7_LCD10.fex /mnt/mmc/back_up/script_r7_LCD10_fixed.bin
cp /mnt/mmc/back_up/script_r7_LCD10_fixed.bin /mnt/mmc/script.bin
sudo reboot



PROPER SOLUTION: (maybe even quicker then the solution above :) )
Boot A20 Debian release 7 (current wiki linked) image on a card with HDMI monitor (and USB keyboard /w mouse for convenience)
Change the lcd_io_cfg0 from 0 to 268435456 setting for the LCD 10" in /root/change_display_a20_OlinuXino.sh
(I find it cleanly writen using switch/case syntax  8))
and rerun /root/change_display_a20_OlinuXino.sh

sudo vi /root/change_display_a20_OlinuXino.sh
sudo /root/change_display_a20_OlinuXino.sh


Can someone please describe this settings value and include proper value in the official Debian image change_display_a20_OlinuXino.sh :)

Maybe the HW issue is to be solved ASAP, but please, start from using *lcd_io_cfg0 = 268435456*.