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.

DP83849IF: DP83849IF Register configuration - MAC A to PHY A and MAC A to PHY B

Part Number: DP83849IF

Hi All,

I am hoping someone might be able to point me in the right direction.

We are using a DP83849IF device on a new design to interface the product to either Copper twisted pair (UTP) or Fiber.

We have the hardware designed so that the coper interface is using PHY A and the Fiber interface using PHY B. On the MAC side we have MAC PORT A connected to our microcontroller's MAC and MAC port B is disconnected.

The default operating mode is to be MAC PORT A connected to PHY PORT B (optical). However, if a dip switch is changed and the unit recycled, it is to use MAC PORT A connected to PHY PORT A (Copper).

I am struggling to understand what registers I need to program. In order to change between the two configurations, I believe I need to re-program the RBR (0x17) register. Again I assume that is for both PHYs (A & B). And set bits 9..12 accordingly.

Am on on the right track, has anyone else implemented this sort of thing?

Thanks in advance.

  • Hello Clive,

    There is a section in datasheet for the mode programmability : "Register Configuration for Operational Modes". This should help you out here.

  • Hi Vikram, 

    Thanks for the reply. 

    I can't see a section in the DP83849IF data sheet that details  "Register Configuration for Operational Modes". 

    Could I be a pain and ask you to give me the Paragraph numbers.

    Am I looking in the correct document?  I am using DP83849IF.pdf.  (SNOSAX8D –JUNE 2009–REVISED To Revision D in APRIL 2013).

    Many thanks


  • Hello Clive,

    I am sorry it was my fault. I misread the part as another part : DP83869.

    Have a look at this app note for 849 :

    Section 2.2 explains the concept and table 5 in this app note has the configuration for port swapping.




  • Hi Vikram,

    Many thanks for the reply. I am making progress now...

    I am currently just trying to get communications to work via our copper (UTP) interface.  PORT A to PORT A.

    My product announces itself on the network every few seconds so that users that do not know its IP configuration can find it.

    This is done using UDP. I am receiving those messages on my computer now. However, I am unable to ping the unit or open a socket. It seems communications from the product works, but communications from the computer to the product do not.

    I must have something configured incorrectly.

    Do you have any clues as to what that might be?

    Thanks again for you help.


  • Hi Vikram,

    I am afraid I am still having trouble.  As stated in my last port, I can transmit from my microcontroller which is connected to to RMII interface A to PHY port A (UTP) interface. However, I am unable to receive data from the Computer to the embedded micro.

    In time I need to switch between my micro port (RMII A) PHY ports A and B. However, right now I just want to use Port A to PHY A. As below.

    I hope the sketch below is clear.

                                RMII          PHY

                                port          port


    (Micro-contoller/MAC) A     | ------------>  |  A (Copper UTP)

                                | <------------  |

                                |                |

    (Not connected)       B     |                | B (Fibre)


    My register configuration is below.  Could you have a look at them and see if you can see any obvious mistakes please.

    Please see register 23 (0x17) RBR bits. highlighted below.  I believe I have them set so that both sets of ports are set as 'Normal' which is 'Port A assigned to Port A, Port B assigned to Port B'

    Register Address PHY A (Copper UTP) PHY B (Optical)
    0 0x0  0x1000  0x3900
    1 0x1  0x786D  0x7849
    2 0x2  0x2000  0x2000
    3 0x3  0x5CA2  0x5CA2
    4 0x4  0x0DE1  0x01E1
    5 0x5  0xCDE1  0x0000
    6 0x6  0x000D  0x0004
    7 0x7  0x0000  0x0000
    16 0x10  0x0615  0x0000
    17 0x11  0x0000  0x0000
    18 0x12  0x0000  0x0000
    19 0x13  0x0000  0x0000
    20 0x14  0x0000  0x0000
    21 0x15  0x0000  0x0000
    22 0x16  0x0100  0x0100
    23 0x17  0x0021  0x0001
    24 0x18  0x0000  0x0000
    25 0x19  0xB020  0x8021
    26 0x1A  0x0904  0x0804
    27 0x1B  0x0000  0x0000
    28 0x1C  0x0000  0x0000
    29 0x1D  0x6011  0x6011
  • Hi All,

    Just to let you all know I solved the problem. It was not software but hardware.

    We have some PCB layout issues and managed to fox the problem by changing some passive components and adding some additional decoupling caps.