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.

DP83640 sometimes can receive data but sometimes not

Other Parts Discussed in Thread: DP83640

I just use the TMS570LS3137-PGE with the DP83640 to realize the EMAC function.

But when uses the Init function which TI supported on the TMS570 EMAC WIKI,the board itself can send packets  all the time , but sometimes it seems it cannot receive data properly(I just load the program into the chip and push the reset button, sometimes the Ethernet can be connected but sometimes not ). 

When it cannot receive data from the PC, the RXD0 is low, RXD1,2,3 are always high. And the RD+,- pins seems also different when the board can receive data or not. When everything is ok(can receive and send packets), the RD+,and RD- pins' mean value is about 3.1v, the frequency is about 29Mhz, amplitude is about 2.6v. While, when the board cannot receive packets, the mean value is 3.1v too, but the frequency is about 33MHz, the amplitude is about 3.6v. 

http://e2e.ti.com/support/microcontrollers/hercules/f/312/p/287332/1007075.aspx#1007075

the  link above has some more information and the project file.

Hope you can help me with the problem.

Regards,

yong

  • Yong,

    Could you share the register configuration of the DP83640 base page (registers 0x00 - 0x1F on page 0x0)?  Could you also share some scope shots of the signaling you are seeing on the TD+/- and RD+/- pins? 

    Patrick

  • Hi, Patrick

    I don't know which base register is the one you need, I just found some base address of the registers(the connect is not ok),

    the hdkif->emac_base is 4EC0020D 

    the hdkif->emac_ctrl_base is 4EC80100

    the hdkif->mdio_base is 00070105

    the hdkif->emac_ctrl_ram is FC520000

    When the connect is ok, the registers' value is below:

    the hdkif->emac_base is 4EC0020D 

    the hdkif->emac_ctrl_base is 4EC80100

    the hdkif->mdio_base is 00070105

    the hdkif->emac_ctrl_ram is FC520014

    It seems they are just the same except the emac_ctrl_ram.

    the attach file is the snapshot of the RD+/- and TD+/- pins.

    If it's connected, it will always ok(I send a packet per second lasts more than 12 hours, and the packet count is correct). If not connect at the beginning, it will always a bad connect. So I think it something wrong with the software? If so, how to reinitialize the Ethernet connect when it's a failure?

    Regards,

    yong

    Regards,

    yong

  • Yong,

    The base page to which I was referring is the base page in the DP83640.  Register 0x13 in the DP83640 allows access to additional register pages.  What I am looking for is a dump of the DP83640 registers (0x00 - 0x1F) while register 0x13 is set to 0x0000. 

    I do not believe the snapshot of the RD+/- and TD+/- pins was attached.  Could you please post the attachment again?

    The condition that you described in your original post ("RXD0 is low, RXD1,2,3 are always high") may indicate a bad SSD detection (see section 7.2.12 of the DP83640 datasheet).  When this condition occurs, we should be able to see data in the False Carrier Sense Counter register (FCSCR) and you should also see the RX_ER signal being asserted. 

    Patrick

  • Sorry to forget the attachment, here it is:

    7181.rd td+- pictrue.rar

    I'm not so much clear about what you said,how can I get the register value of the DP83640 in my CCS project? I noticed that the RX_ER pins may asserted to high(just a flash, it disappers very quick) when it has a failure.When it's connected, it will always low.

    It seems like the bad SSD occurs, how to fix it?

    I just use the probe of the oscilloscope to test at the circuit between the RD+(pin of DP83640) and the RXD+(one pin of the RJ45), it seems the bad connect not happen any more(I tried about 30 times). Is it make any sense?

    Regards,

    yong