This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x display PLL configuration problem - TFT flickering

Hello,

I am having a problem with a custom board based on BeagleBone schematics and TI's Linux. We detect the problem because sometimes, when we boot the system, we see the TFT screen flickering.

The Pixel Clock, which is configured to 30MHz, is just 10MHz (looked with an oscilloscope). We check the registers values (peripheral and pll registers), and they are as expected (look at the values):

REG VALUE AT 0x4830E004 (LCD-->CTRL register) => 0x00000901
REG VALUE AT 0x44E00448 (CM_WKUP-->CM_IDLEST_DPLL_DISP register) => 0x00000001
REG VALUE AT 0x44E00454 (CM_WKUP-->CM_CLKSEL_DPLL_DISP register) => 0x00000C00
REG VALUE AT 0x44E00498 (CM_WKUP-->CM_CLKMODE_DPLL_DISP register) => 0x00000007
REG VALUE AT 0x44E004A4 (CM_WKUP-->CM_DIV_M2_DPLL_DISP register) => 0x00000201

Other peripherals (UART, I2C, Core...) work as expected, with good timings (also the master oscillator, 25MHz crystal, is working fine).  We reconfigure the LCD peripheral registers, with no result, but if we reconfigure the PLL (with the microcontroller's reference manual sequence, in page 899, chapter 8.1.6.10.1), the PLL relocks to the good 30MHz frecuency with no problem.

I have traced the PLL configuration in the kernel to dpll3xxx.c, and everything seems to be OK.

My question is why sometimes the PLL locks to a bad frequency during booting, even if the registers are correct, and how can I solve this problem.

Thank you,

Mikel

  • Hi Mikel,
     
    If this is happening at random, I would recommend that you check the AM335X power supplies, especially the PLL supplies, for noise. See the AM335X Datasheet, Rev.F, section 4.1.4 for details.
  • Hello again,

    It seems to be that: due to a ground bounce, our power supplies also bounce, and we have some 200mVpp noise now and then in 1V8.

    We already had noticed and solved the problem of the ground bounce, but the flickering problems appears in our "old" circuits. Now we are doing some tests on "old" circuits to check if eliminating this problem also eliminates the flickering problem.

    When we have the tests done we will post the results (and mark your answer as a solving answer for my problem)..

    Thank you very much and best regards!

  • A new Advisory for the AM335x Silicon Errata will be published soon that changes our original recommendation for crystal circuit grounds to only be connected to the VSS_OSC terminal.  We have found this connection topology makes it easier for noise to couple into the crystal circuit than the more traditional connection topology where the crystal circuit grounds are connected directly to the PCB digital ground.  It is possible for the oscillator to generate glitches on internal clocks if the crystal circuits have too much noise coupled into them.  So we are changing our recommendation to connect the crystal circuit grounds directly to the nearest PCB digital ground.  Try this, to see if it helps resolve your problem.

    Regards,
    Paul

  • Hello,

    We have eliminated the ground bounce problem, and so the 1V8 noise (mainly), but we still have the flickering problem. We are doing some tests in order to reduce even more the noise in this 1V8 which supplies the PLL.

    It seems to me that the noise is coming from the main crystal, as the crystal is 25MHz and I am seeing noise of 125MHz (the 5th harmonic). I think this noise is going to ground (maybe through the Kelvin union inside the microcontroller from VSS_OSC to GND), and as DC/DCs are not so fast, we are seeing the noise in 1V8 with a 180º phase drift.

    I will try the new connection you suggest for the crystal circuit. Just to be clear, I should connect the load capacitors to the PCB digital ground (not the side which is united to crystal, the side which is connected to VSS_OSC), but I am not sure if I should maintaint the connection to the VSS_OSC pin or if I should cut this track (to avoid loops), can you clarify it to me please?

    I would also like to have the new sillicon errata document, even if it is a draft and not an official version, as I am doing some changes in PCB and, due to customer's planning, we should buy these PCBs in a short time.

    Kind regards,

    Mikel

  • Just leave the load capacitor grounds connected to VSS_OSC and connect a short wire from either load capacitor ground to the nearest PCB digital ground.

    The following Advisory is the only update waiting to be added to the AM335x Silicon Errata.

    Advisory 1.0.TBD          OSC0 and OSC1: Noise Immunity is improved when Crystal Circuit is connected directly to PCB Digital Ground

    Revision(s) Affected:     2.1, 2.0, 1.0

    Details:                         AM335x Data Sheet revisions F and earlier has specified OSC0 crystal circuit grounds only be connected to VSS_OSC in both ZCE and ZCZ packages, and OSC1 crystal circuit grounds only be connected to VSS_RTC in the ZCZ package.  The VSS_OSC and VSS_RTC terminals are connected to the VSS terminals inside AM335x which connects the crystal circuit to the PCB digital ground, but this ground connection is a higher impedance connection than a direct connection to the PCB digital ground.

    The higher impedance connection through AM335x to the PCB digital ground makes it easier for electrical noise to couple into the crystal circuit.  If the noise is large enough, it is possible the oscillator output may produce clock glitches to various internal logic circuits.  These clock glitches may cause unexpected behavior.

    Workaround:                 Connect the VSS_OSC and VSS_RTC terminals and respective crystal circuit component grounds directly to the nearest PCB digital ground, making it harder for noise to couple into the crystal circuit.

    Regards,
    Paul

  • Thank you very much for the information.

    I made more tests yesterday with the most problematic circuit (the one which I have seen that the problem appears more often), and I discovered that, in our test environment (using the real power supply, other elements connected to this power supply, a "real" scenario), there was one circuit emitting huge noise through the wires (conducted EMIs) to the power supply, and from then to my circuit, which was causing a lot of noise in my 1V8.

    We are going to do some tests without this element in the test environment (as without that the noise is quite low), in order we can confirm we have no more flickering problems.

    I will keep you updated. Regards,

    Mikel