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.

DP83848J: 10 MB/s works, but not 100 MB/s

Part Number: DP83848J

I am using the DP83848J in conjunction with STM32F407VGT6.

The 10 MB/s works and I can read data from the controller. If I want to use the 100 MB/s, this does not work. The LED on the RJ45 socket shows me that 100 MB/s has been selected and sometimes the other LED flashes slowly (assumption: when data is arriving).

However, no connection is possible. I don't know whether there is still a fault with the hardware or the software. I have already looked around the forum, but no solution has helped.


The PC supports 100 Mb/s, which I had previously tested with another device.

  • Layout 

  • Structure

  • Register

  • Oszi – Laptop -> Auto, Chip -> 10 Mb/s Full no-Auto

  • Oszi – Laptop -> Auto, Chip -> 100 Mb/s Full no-Auto

  • Hi Ina,

    Thank you for providing this wealth of information, please allow me another day to review and get back to you.

    Regards,

    Alvaro

  • Hi Ina,

    The goal is to achieve 100Mbps communication between our DP83848 and your PC correct? You labeled one of your pictures: 100 Mb/s Full no-Auto. This implies forced speed and for forced speed to work, both parties need to be forced (848 & PC). Can we enable auto-negotiation on both our DP83848 and the PC?

    If you have register access, this can be done in Reg 0x0 of the DP83848. 

    Regards,

    Alvaro 

  • Hey Alvaro,

    thank you for your reply. Yes, it´s right. My goal is a 100Mbps communication between DP83848 and my PC. When I enable auto-negotiation then I have this pictures (0x00 -> 0x1000). 

    Regards, 

    Ina

  • Hi Ina,

    Can the graphs be labeled? What exactly am I looking at?

    When enabling Auto-negotiation, can we first read the default value of Reg 0x0, and only flip Bit 12. Right now, Reg 0x0 = 1000 configures the 848 for half-duplex communication. 

    Regards,

    Alvaro

  • Hey Alvaro,

    As I understand it, Bit12 is for Auto-Negotiation Enable. I have to write a 0x1000 in register 0x00 for this. (0x100 would be for duplex mode).


    I have now proceeded as follows:
    1. read register 0x00 ->0x1000
    2. write register 0x00 -> 0x8000 (reset device)
    3. read register 0x00 -> 0x3100 (this should be because of the hardware, right? AN1=1 and AN0 = 1 -> 100MB Full (*little picture below))
    4. write register 0x00 -> 0x1000 (enable auto-negotiation)
    5. read register 0x00 -> 0x1000

    Was that correct? I took the pictures of the oscilloscope after step 5

    this picture shows RX of 848 (blue RD+, green RD-, neon-green difference of RD+ and RD- )

    this picture shows TX of 848 (yellow TD+, red TD-, purple difference of TD+ and TD-)

     

    *

    I don't like the RX signal, the oscilloscope can't evaluate it either. I think that if the levels were clearer, the signal could be read out better.

    Regards, 

    Ina

  • Hi Ina,

    After you performed the reset (Reg 0x1F = 8000), Reg 0x0 = 3100, let's keep this value. This has auto-negotiation and full duplex enabled. 

    The scope shots in your most recent message look good, it seems like those are Link Pulses. What is the link partner we are trying to connect to?

    • Register

    In this register dump, there are several cases where the PHY links up at 100Mbps. If Reg 0x1 = xxxD, then the PHY has linked up. Is link detected via the PC that is being used as the link partner? If so, then the MDI (connector side) portion of the DP83848 is okay. The problem is either in the MAC interface (between the PHY and processor) or in the software.

    Regards,

    Alvaro