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.

DP83869HM: Lock issue in RGMII to 1000BASE-X mode

Part Number: DP83869HM
Other Parts Discussed in Thread: DP83869

Hi,

 

I’m trying to use the DP83869HM in RGMII to 1000BASE-X mode. When placing a SFP-Copper module, a valid link and data transfer is possible.

When placing a 1000Mbit fiber module, the switch states link-down, but the PHY gives a link-up (reg 0xC01). No data is received.

When placing a fiber-loopback, the PHY gives a link-up (reg 0xC01). The RXdata LED is flash (I cannot verify the data).

I've read and implemented SNLA305 1000Base-X Link Detection 

The ID (reg 0x02 + 0x03) is 0x2000A0F3

The initialization routine is:

               phyWriteRegister(mdioEthId, deviceAddress, 0x01DF, 0x41);

               phyWriteRegister(mdioEthId, deviceAddress, 0x0, 0x1140);

               phyWriteRegister(mdioEthId, deviceAddress, 0xC00, 0x1140);

               // restart

               phyWriteRegister(mdioEthId, deviceAddress, 0x1F, 0x4000);

               for (uint16_t  i = 1; i !=  0; i++); // small sleep

               phyWriteRegister(mdioEthId, deviceAddress, MDIO_REG_LEDS_CFG1, 0xCC32);

               phyWriteRegister(mdioEthId, deviceAddress, MDIO_REG_RGMII_CTRL, 0x00D0);

               phyWriteRegister(mdioEthId, deviceAddress, 0xC00, 0x0340); // Start Auto neg.

Anny suggestions?


Thanks in advance,

Jacob

  • Hi Jacob,

    You are trying to configure DP83869 in RGMII to 1000BASE-X mode using the register writes, is my understanding correct?

    In your initialization routine are you restarting the PHY after configuring the registers?

    Regards,

    Rahul

  • Hi Rahul,

    Yes, the device is restarting after writing these registers. But the bootmode is also 1000Base-X. Without writing these registers, the behavior is the same. (After reset, I read 0x0204 on register 0x6E, strapping seems be OK.)
     
    Best regards,
    Jacob 
  • The problem seems to be solved. 
    In the Fiber status register (0xC01), the STTS_LINK_STATUS bit can be 1, but the STTS_ANEG_COMPLETE bit is 0. 
    After restarting the autonegotiation (register 0xC00, bit CTRL0_RESTART_AN), the STTS_ANEG_COMPLETE and STTS_LINK_STATUS bits are 1.

    The solution is follow SNLA305 "1000Base-X Link Detection", but check STTS_LINK_STATUS and STTS_ANEG_COMPLETE

    Thanks for the support.

    Jacob