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.

DP83848M problem

Other Parts Discussed in Thread: AM3354, DP83848M

We're using DP83848M on AM3354.  When the LAN cable is plugged into the RJ45 port, the DP83848M is able to tell am3354 about this status change.  However, the DHCP client doesn't work !  No IP address can be obtained from the DHCP server (just a simple WiFi router).  Even I set a static IP address to the ethernet port, ping never succeeds, either !

We're using MII interface, PHY addr = 1, 10/100Mbps auto negotiation.  Schematic in pdf is as attached.

The followings are the registers dump :

1:phyreg[00] BMCR : 3100
1:phyreg[01] BMSR : 786d
1:phyreg[02] PHYIDR1 : 2000
1:phyreg[03] PHYIDR2 : 5c90
1:phyreg[04] ANAR : 01e1
1:phyreg[05] ANLPAR[NP] : cde1
1:phyreg[06] ANER : 000f
1:phyreg[07] ANNPTR : 2801
1:phyreg[08] RESREVED : 0000
1:phyreg[09] RESREVED : 0000
1:phyreg[0a] RESREVED : 0000
1:phyreg[0b] RESREVED : 0000
1:phyreg[0c] RESREVED : 0000
1:phyreg[0d] RESREVED : 0000
1:phyreg[0e] RESREVED : 0000
1:phyreg[0f] RESREVED : 0000
1:phyreg[10] PHYSTS : 0015
1:phyreg[11] RESREVED : 0000
1:phyreg[12] RESREVED : 2c00
1:phyreg[13] RESREVED : 0000
1:phyreg[14] FCSCR : 0000
1:phyreg[15] RECR : 0000
1:phyreg[16] PCSR : 0100
1:phyreg[17] RBR : 0001
1:phyreg[18] LEDCR : 0000
1:phyreg[19] PHYCR : 8001
1:phyreg[1a] 10BTSCR : 0804
1:phyreg[1b] CDCTRL1 : 0000
1:phyreg[1c] RESREVED : 0000
1:phyreg[1d] EDCR : 6011
1:phyreg[1e] RESREVED : 083e
1:phyreg[1f] RESREVED : 0000

Any possible cause of the problem ?

Looking forward to any advice !  Thanks !

AM3354_DP83848M.pdf
  • Eric,

    Could you confirm the PHYSTS register value?  A normal value for PHYSTS when linked in 100M mode would be 0x0615.  Please read this register multiple times to see if the value of 0x0015 is consistent.

    Patrick

  • Patrick,

    Thanks to your advice.  But, we never see PHYSTS showing 0x0615 when we connect the device with DP83848M to a gigabit switching hub.

    We also tried to connect the device to 10Mbps old hub.  But, there is still no luck.  No ip address ever obtained from the router, and no ping is successful when we assigned static IP address.

    We set the LED mode to mode 2, ie link + activity.  I see that the LED will blink after I connect the RJ45 Lan cable to it.

    Do you see any hw problem based on the schematic pdf file ?

    Do you think that could be the problem on the PMD side or on MII side ?

    I want to execute the BIST test.  There are several loopback test modes available in the chip.  What settings are suitable for testing the MII and PMD interfaces ?  When should I plug in the RJ45 loopback cable ?

  • Patrick,

    In our board layout, the length of tracks between EMAC and PHY is less than 2 inches.  They're 1.1 ~ 1.2 in.  Do you have PCB layout guide for DP83848M ?

  • Eric,

    There are a couple posts with additional information on testing with BIST.  Please see:

    http://e2e.ti.com/support/interface/industrial_interface/f/142/p/225948/805414.aspx

    http://e2e.ti.com/support/interface/ethernet/f/903/p/264848/925823.aspx#925823

    A distance of 1.1 - 1.2 inches between the EMAC and the PHY is not too long.  We do have a design and layout guide at:

    http://www.ti.com/lit/pdf/snla079

    Patrick

  • Patrick,

    We checked that our PCB layout meets the requirements in the guide line.

    We measured the voltage on PFBOUT (which is shorted to PFBIN1 and PFBIN2), it is 1.73V.  The voltage of those TXD_0 ~ 3 is 0V (under no traffic), and RXD_0 ~ 3 is 3.3V (under no traffic).  Are these normal ?

    BTW, we carried out BIST test on the DP83848M.  Here are the results.

    We set BIST_START.  The PHYCR = 0x8501.  We leave RJ45 connector open, let it run for over 5 minutes. We kept polling PHYCR throughout the whole period.  But, the value of PHYCR remained 0x8501 without any change.

    We then, connected a loopback RJ45 cable (pin 1 -> pin 3, pin 2 -> pin 6), power cycle the unit, let it run for 5 minutes.  The PHYCR still remains 0x8501 without change.

    We observed that during the BIST test, when we left the RJ45 open, the LED remained on.  When we plugged in the RJ45 loopback cable, the LED would blink.  This behaviour is different when we boot the system with normal sw (ie no PHYCR polling).  In normal sw, the LED doesn't light up when there the RJ45 is open.  The LED lights up for some seconds when we connect the RJ45 to a 100Mbps switching hub, then, the LED starts blinking irregularly.

    We tried the tests on 2 different boards, and they produced the same result.

    What indications do these test results provide ?  Any possible hw fault ?

    We'll be in trouble if this problem cannot be solved.

    Looking forward to your reply.

    Thanks !

  • Patrick,

    The BIST test failed indicates that it cannot recognise the psuedo random data stream sent from itself on the PMD ?  But, we tried probing TD-, TD+, RD-, and RD+ (with RJ45 loopback cable plugged in), there is data sending there.  Does it mean that there should be problem on the PMD side ?

  • Eric,

    The RXD[3:0] pins should not be 3.3V with no packet traffic.  Could these being getting pulled high by straps in the MAC?

    Could you probe the PFBIN1 and PFBIN2 voltages at the pins?  These pins are 1.8V supply inputs.  We want to make sure that they are properly supplied.

    What is the voltage of the RBIAS pin when the device is powered?  What is the resistance across the RBIAS resistor when the board is powered down?

    Patrick

  • Patrick,

    The pinmux settings on the am3354 side (MAC) for RXD[3:0] are all internal pull low.  No any external pull up nor pull down resistors are connected to the MII bus.  We observed that the RXD pins are initially low on power up.  After some seconds, all the 4 RXD[3:0] will be turned high.  After some further tens of seconds, the RXD0 and RXD3 will go low, but they don't change states at the same time.  After some seconds, they will go high again.  We don't see any fixed pattern.

    On MAC side, is setting RXD[3:0] to internally pull low correct ?

    We probed PFBOUT, PFBIN1 and PFBIN2 again.  Their voltages are all the same : 1.741V.

    Voltage at RBIAS is 1.188V.  Resistance across the RBIAS resistor is 4.85k when the board is powered down.

    What other suggestions do you recommend to us ?

    I have a question about BIST test.  Is it testing the MII interface, or PMD interface ?

    Thanks !

    Eric

  • Patrick,

    Forgot to mention.  We left the RJ45 open in the above measurements.

    We did more measurements on the DP83848m.

    In BIST test (we didn't change BMCR value), we left the RJ45 open.  We observed that there were data sent out from TD+/TD-, but no signal change on RD+/RD-. RXD[3:0] were all low.  After I plugged in RJ45 loop back cable, I saw there were data appeared on RD+/RD-.  At the same time, we observed there were data appearing on RXD[3:0].

    Does this behaviour normal ?

    When the DP83848m is in normal mode and we connected the RJ45 to our office LAN switching hub. We saw there were data appeared on RX+/RD-.  However, we didn't see any frequent signal change on RXD[3:0].  There were some occasional changes as mentioned in my last post shown above.

    I'm going to conduct BIST test but with BMCR set to 0x6100, as I saw what you suggested other user in http://e2e.ti.com/support/interface/ethernet/f/903/t/225948.aspx

    Eric

  • Patrick,

    When I set BMCR=0x6100, and start BIST test, we saw no signal change on TD+/- and RD+/-.  But, we saw data sent out on RXD[3:0] from the PHY.  But, PHYCR is still 0x8501 after running the BIST for minutes.

    What problem could these result indicate ?

    Eric

  • Patrick,

    I guess with BIST_START=1 and LOOPBACK=0, the DP83848m should be testing the PMD interface.  BIST_STATUS should be turned to 1 when we connect RJ45 loopback cable.  Is my understanding correct ?  How long does it need to produce BIST_STATUS=1 if the interface is good ?

    On the MII interface, I need to use BIST_START=0 and LOOPBACK=1, and rely on the MAC to transmit test pattern data and read the data on RXD[3:0].  Is this correct ?

    However, currently, I have no way to test the MII because the cpsw of the am3354 Linux forbids test mode on the MII.  The development progress got stuck here.

    Eric

  • Eric,

    A few quick notes:

    Internal loopback is a digital loopback.  Data is looped back in the digital and does not test the analog front end.  No data should be sent out to the RJ-45 when internal loopback is enabled.

    When internal loopback is enabled, data from the internal BIST engine should be looped back to the RXD pins.  When internal loopback  is enabled and internal BIST is disabled, data from the MAC that is driven to the TXD pins should be looped back to the RXD pins. 

    Let's try some simple sequences of register accesses after powering up the board:

    1. Assert software reset (BMCR:  8000).
    2. Enable 100M full duplex (BMCR:  2100).
    3. Enable internal loopback (BMCR:  6100)
    4. Enable BIST (PHYCR:  0101)
    5. Poll PHYCR for BIST status (PHYCR[8] = 1)
    6. Monitor RX MII bus to the MAC.

    Repeat the process in 10M mode:

    1. Assert software reset (BMCR:  8000).
    2. Enable 10M full duplex (BMCR:  0100).
    3. Enable internal loopback (BMCR:  4100)
    4. Enable BIST (PHYCR:  0101)
    5. Poll PHYCR for BIST status (PHYCR[8] = 1)
    6. Monitor RX MII bus to the MAC.

    Patrick

  • Patrick,

    Thanks to your advice !

    However, to make BIST pass, do I need to run sw on my MAC to loop back data received from RXD of DP83848 to TXD ?

    Eric