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.

DP83849C: Speed selection bit cannot be unset

Part Number: DP83849C
Other Parts Discussed in Thread: DP83849IVS-EVK

Dear DP83849C Experts,

I am using the DP83849C phy. After reset the speed selection bit (bit 13 of the BMCR register) is set to 1, indicating a speed selection of 100 Mbits/s.

Auto-negotiation is disabled. When I attempt to set the speed selection bit to 0, I am unable to do so, despite being able to set and unset adjacent bits.

Can I expect to unset the speed selection bit at any time by writing a 32 bit word to the BMCR register with the speed selection bit unset, or must this

setting/unsetting be done in conjunction with other settings and dependencies ?

Kind Regards,

Rocco

  • Hi,

    Only condition to set this bit is ensure Auto Negotiation shall be disabled.

    Can you share what you are reading at register 0x0000, 0x0001 at boot up and post your change ?

    Regards,

    Geet

  • Hi Geet,

    Thanks for  your reply.

    Here are all the registers before and after initialisation, with the requested

    data highlighted in bold font.

     <Phy Registers Before Initilisation>:  
    0x2100  0x7849  0x2000  0x5ca2  0x0101  0x0000  0x0004  0x2001
    0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000
    0x0805  0x0000  0x2000  0x0000  0x0001  0x0000  0x014b  0x0421
    0x0000  0x003e  0x0904  0x0000  0x0000  0x6011
    <Phy Registers After Initilisation>:  
    0x2100  0x7849  0x2000  0x5ca2  0x0de1  0x0000  0x0004  0x2001
    0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000  0x0000
    0x0805  0x0000  0x2000  0x0000  0x0001  0x0000  0x014b  0x8000
    0x0000  0x001e  0x0804  0x0000  0x0000  0x6011

    As you can see, the Auto-negotiation bit is 0, configuring it to be disabled. I am bringing up board and am commencing tests with Auto-negotiation disabled, as to keep things simple.

    After initialization, I do the following:

    1) read address 0, which is equal to 0x2100

    2) write 0x4100 to address 0. I do so to prove that I can set bit the adjacent bit

    3)read the address 0, which is now equal to 0x6100,

    4) and then mask out bit 14 to  prove that I can unset the adjacent bit

    After 2, I expect that the setting of bit 14, and the unsetting of bit 13, to be atomic.

    At 3 I see that although the setting of bit 14 has been set, the unsetting of bit 13 has not taken place. The problem is visible here.

    Kind regards,

    Rocco

  • Hi Rocco,

    Are you able to find the root cause ? Sorry, I was out last week hence could not respond.

    Regards,

    Geet

  • Hi Geet,

    Thanks for getting back to me.

    No. I now have DP83849IVS-EVK and am trying to get MII loopback going. I have yet to revisit the issue with speed selection to see if it also happens on that board.

    Kind regards,

    Rocco

  • Hi Geet,

    I have just repeated this test, and it seems the problem does not occur with the TI EVK board.

    Thanks,

    Rocco