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.

Got CRC of DP83TC814S-Q1

Part Number: DP83TC814S-Q1
Other Parts Discussed in Thread: DP83TC811

I got the CRC error from register 63e/63b, and 63e  sometimes is not 0, Is it right just access 63e to get the RX CRC error counter? 

if it not equals 0, Is there any way to locate the problem?

  • Hi Yang,

    63e is the right register to get the RX CRC error counter.

    if it not equals 0, Is there any way to locate the problem?

    It can be due to multiple reasons (for example: ppm mismatch between the system and link partner).

    Can you please describe more details about your application and the issue being noticed?

    Regards,
    Rahul

  • we using the DP83TC814S-Q1 in Tbox which installed in car, it is seems no CRC error when we tasted it in office ,but reported RX CRC error when runs wthin car.

    we init the registers follow the steps

    {0x523, 0x0001},
    {0x81C, 0x0fe2},
    {0x872, 0x0300},
    {0x879, 0x0f00},
    {0x806, 0x2952},
    {0x807, 0x3361},
    {0x808, 0x3D7B},
    {0x83E, 0x045F},
    {0x834, 0x8000},
    {0x862, 0x00E8},
    {0x896, 0x32CB},
    {0x03E, 0x0009},
    {0x01f, 0x4000},
    {0x523, 0x0000},

  • we local initial codes

    indirect_write(phydev,0x523,0x0001);//disable link-up start until configuration is complete

    mdio_data = indirect_read_mmd1(phydev,0x0834);

    BIT_SET(mdio_data,14);
    BIT_SET(mdio_data,0);
    indirect_write_mmd1(phydev,0x0834,mdio_data);//configure PHY Master

    indirect_write(phydev,0x81c,0x0fe2);
    indirect_write(phydev,0x872, 0x0300);
    indirect_write(phydev,0x879, 0x0f00);
    indirect_write(phydev,0x806, 0x2952);
    indirect_write(phydev,0x807, 0x3361);
    indirect_write(phydev,0x808, 0x3d7b);
    indirect_write(phydev,0x83e, 0x045f);
    indirect_write(phydev,0x834, 0x8000);
    indirect_write(phydev,0x862, 0x00e8);
    indirect_write(phydev,0x896, 0x32cb);
    indirect_write(phydev,0x03e, 0x0009);
    indirect_write(phydev,0x01f, 0x4000);
    indirect_write(phydev,0x523, 0x0000);

    ti81x_soft_reset(phydev,false);

  • Is the Link partner the same when used in the office as well as in the car?

    Can you also please share the register dump from 0 to 1E when working in the car? Please read the registers multiples times and share the values.

    Thanks,
    Rahul

  • Hi Rahul

    register map dump is below:

    getRegister 0000, value 2100
    getRegister 0001, value 0065
    getRegister 0002, value 2000
    getRegister 0003, value a261
    getRegister 0004, value 0001
    getRegister 0005, value 0000
    getRegister 0006, value 0000
    getRegister 0007, value 2001
    getRegister 0008, value 0000
    getRegister 0009, value 0000
    getRegister 000a, value 0100
    getRegister 000b, value 0000
    getRegister 000c, value 0000
    getRegister 000d, value 401f
    getRegister 000e, value 0000
    getRegister 000f, value 0000
    getRegister 0010, value 0605
    getRegister 0011, value 010b
    getRegister 0012, value 8000
    getRegister 0013, value 0000
    getRegister 0014, value 0000
    getRegister 0015, value 0000
    getRegister 0016, value 0100
    getRegister 0017, value 0000
    getRegister 0018, value 0025
    getRegister 0019, value 0c00
    getRegister 001a, value 0000
    getRegister 001b, value 0000
    getRegister 001c, value 0000
    getRegister 001d, value 0000
    getRegister 001e, value 0000

  • I could reproduce the issue in office now , when I connect with a HUT(Head Unit of car) in office.

  • Hi Yang,

    Thank you for sharing the registers, let me have a look at them and get back to you.

    Regards,
    Rahul

  • Thanks Rahul

    and I have 2 questions also want to know at first.

    1:Is the CRC error inevitable or not? if it is, how much  is normal?

    2:we previous using DP83TC811S, is it not support CRC check in normal mode? how could us detect the error packet in DP83TC811S?

  • Yang,

    Regarding the initial CRC query, are you noticing this CRC error with just the Head Unit of the Car? Did you try another link  partner and notice this issue?

    What type of cable and length of the cable are you using? Does changing these metrics help resolve the issue?

    On DP83TC811 RECR register 0x0015 can track the receive error count.


    Regards,
    Rahul

  • Rahul

    It should connect to gate way  directly, then the gate way link to the HUT, and we have tried in different  gate way with different HUT. they linked with different cable also. But still have the problem.

    So I want to know.

    1:Is the CRC error inevitable or not? if it is, how much  is normal?

    2:Is the registers  initialize ok? And Is any problem from register 0 to 1e?

  • Hi Yang Ming,

    It should connect to gate way  directly, then the gate way link to the HUT, and we have tried in different  gate way with different HUT. they linked with different cable also. But still have the problem.

    CRC errors are you noticing with different link partners and gateways?

    1:Is the CRC error inevitable or not? if it is, how much  is normal?

    They can be mitigated, you should be able to see no CRC errors.

    2:Is the registers  initialize ok? And Is any problem from register 0 to 1e?

    Registers 0 to 1e looks good, I noticed the link is up.

    What is the value being noticed on register 63e?

    Your initialization scrip looks similar to the one mentioned in the following appnote, section 3:

    https://www.ti.com/lit/an/snla389a/snla389a.pdf?ts=1676302520662&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FDP83TC814S-Q1

    Regards,
    Rahul

  • Thanks

    And I have seen the register(63e  rx_err_pkt_cnt) could be cleared by

    Rx packet w error (CRC error) counter Note : Register is cleared
    when 0x612, 0x613, 0x614 are read in sequence

    but I read these registers sequence like below,register 63e seems not cleared.

    mdiobus_write(addr=0, regnum=0x0d, val=0x001f)=0
    mdiobus_write(addr=0, regnum=0x0e, val=0x0612)=0
    mdiobus_write(addr=0, regnum=0x0d, val=0x401f)=0
    mdiobus_read(addr=0, regnum=0x0e)=0x0000
    mdiobus_write(addr=0, regnum=0x0d, val=0x001f)=0
    mdiobus_write(addr=0, regnum=0x0e, val=0x0613)=0
    mdiobus_write(addr=0, regnum=0x0d, val=0x401f)=0
    mdiobus_read(addr=0, regnum=0x0e)=0x0000
    mdiobus_write(addr=0, regnum=0x0d, val=0x001f)=0
    mdiobus_write(addr=0, regnum=0x0e, val=0x0614)=0
    mdiobus_write(addr=0, regnum=0x0d, val=0x401f)=0mdiobus_read(addr=0, regnum=0x0e)=0x0000
    mdiobus_read(addr=0, regnum=0x0e)=0x0000

  • Yang,

    Let me check this in the lab and update you.

    Regards,
    Rahul

  • Rahul

    it seems 63E become  0 when I read 63C,63D in sequence ,Is it also will clear register 63E? 

  • Hi Yang Ming,

    Rx packet w error (CRC error) counter Note : Register is cleared
    when 0x612, 0x613, 0x614 are read in sequence

    This is a typo in DP83TC814 datasheet, the correct statement is Register is cleared when 0x63C, 0x63D, 0x63E are read in sequence. I have noted in our internal system to edit this in the future revision of the datasheet.

    To narrow down the test cases, can you please have a setup with your board, hub, cable length and link partner where no RX crc errors are noticed.

    If we have a working setup, then we can try to change one parameter at a time (for example: changing link partner or changing cable length) to narrow down the root cause of the issue.

    Please share the setup in which no RX CRC errors are noticed (your initial bench setup).

    Regards,
    Rahul

  • Hi Rahul

    what the difference between RX_ER in 0x0015 of TC811 and RX_ERR_PKT_CNT in 63e of TC814? or these define the same error,  just means receive an error frame?

  • or more specifically, the counter RX_ER in 0x0015 TC811 equals the RX_ERR_PKT_CNT in 63e of TC814? RX_ER just means the CRC error?

  • Hi Rahul

    Our purpose is to check whether there are error packets in the communication with the opponent(for example,like the gateway). Is it correct to read 63E?

  • Hi Yang Ming,

    Register 0x0015 of TC811 and register 63E TC814 provide the receive error packet count.

    After sending how many packets are you noticing the RX error packets counter ? is the counter triggering after sending 100k packets?

    Thanks,
    Rahul

  • Not reach 100k, sometimes just 300~1000 packets,we will got error

  • Hi Rahul

    I see 814 also have rx_err_cnt in 0x0015 register ,but I check it still 0 when 63E shows 1 CRC error?

    Is it have different between rx_err_cn in 0x0015 and rx_err_pkt_cnt in 63E? what is the different?

  • Hi Yang Ming,

    I have reached out to the internal team to get more details on the difference between 15h and 63Eh, will update you soon.

    Thanks,
    Rahul

  • Hi Rahul

    Any update?

  • Hi Yang Ming,

    I haven't heard back any response yet. I have followed up again, will update you soon.

    Regards,
    Rahul

  • Hi Yang Ming,

    The counter in register 0x15 is incremented by for every cycle RX_ER is high during the packet (i.e. RX_DV and RX_ER both are high)

    Register 0x63E gives the packet count with CRC errors.

    Regards,
    Rahul