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.

DP83848C: BMSR - Link Status Flag never set when connect two device together

Part Number: DP83848C

Hello,

I'm trying to implement the ethernet module (FEC) using MPC5777c chips with official MPC57xx motherboard for RJ45 hardware interface, but I couldn't get the DP83848C working correctly.

Firstly, I'm using an external RJ45 loopback tester with TX and RX connect together and plug it in. The module works fine and the receiver can receive what the transmitter sends correctly. The activity LED blinking but the link LED never turn on. So I think the module is working at some extent. 

Then, I connected 2 motherboards together with an Ethernet cable, both of chips program with the same code. But they are not communicate with each other, both stuck at check the "Link Status" bit on register BMSR (It returns the value 0x7849). Since that bit is never set, so my connection couldn't established.

I tried to search on forum and I checked all the voltage across PFBOUT (pin 23) and PFBIN1/PFBIN2 (pins 18 and 37), they all are about 1.8V. 

In conclude, my connection established and send/receive data well when I simply plug an external loopback tester on RJ45 port, but it cannot establish when I use 2 same boards with same program, and connect RJ45 ports with an Ethernet cable. The reading return from BMSR is always 0x7849.

Could anyone help me out?

Thanks,

Luke

  • Hi Luke,

    Can you provide register dump for the PHY after programming? There could be a condition that the link cannot be established if both sides have the same setting. For example, both sides are forced into MDI or MDIX mode.

    Regards,

    Hung Nguyen
  • Hi Hung,

    Thank you for your reply. The PHYCR register is 0x8001. I enable the auto-mdix and auto-negotation during the initialization process.

    Regards,
    Luke
  • Hi Luke,

    1. Can you provide values for all the registers if possible?

    2. How long the cable did you try? Have you tried to get the link in 10Base-T speed?

    3. Please share the schematic of the PHY portion.

    Regards,

    Hung Nguyen
  • Hi Hung,

    Thank you for your reply.

    1. Registers reading when the link status couldn't established:

    BMCR 0x1100
    BMSR 0x7849
    PHYIDR1 0x2000
    PHYIDR2 0x5c90
    ANAR 0x01e1
    ANLPAR 0x0000
    PHYCR 0x8001
    PHYSR 0x4100
    10TBase_SR 0x0804

    2. The cable length is about 1.5 meters, and it connects 2 exactly same boards (MPC57xx motherboard from NXP). When I use the external loopback RJ45 tester with auto-neg and auto-mdix on. It's in the auto-negation mode so I'm not sure how to check whether it is in Base10T mode or not (said bit 8 and 13 in BMCR are ignored when in auto-neg mode). But the receiver can receive what transmitter sends. 

    I tried to disable auto-mdix and auto-neg, and set to 10BaseTmode for the two boards, the link status is still not working.

    3. Schematics for the FEC module:

    Thank you very much for your help.

    Regards,

    Luke

  • Hi Hung,

    I found the problem. The problem is simply switching a hardware jumper to put pin 39 high to choose RMII mode. Now the link status works. Thank you.

    Regards,
    Luke