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.

DP83822I: DP83822IR with RMII mode

Part Number: DP83822I

Tool/software:

In our custom board we are not able to detect the ethernet Base-T (DP83822): Below i have added our observation and test cases. Kindly check and provide your feedback.

  • From the ifconfig that TX Packets are generated but RX side we do not see any packets, to verify this we have probed TX and RX part of PHY to the Connector and observed that TX part wave form amplitude is higher when compared to RX part.
  • Using PHY tool we validated the register address 0x01.
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x01
    (LAN cable connected)
    0x786d
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x01
    (LAN cable not connected)
    0x7849
  • We probed clock and getting 50MHz as expected.
  • Reset is always high.
  • TX and RX from PHY to MAC observed only TX data was getting , RX data was not observed data line from oscilloscope.
  • We did the following loopback test in the DP83822 interface,
    1. Connect PC to Board Ethernet (Enable the external loopback on the Phy)
    Ping from PC--->Board ethernet connector ---> PHY <Loop back to Ethernet port) ---> Board ethernet Connector ---> PC
    2. Enable to the internal loopback in the Phy
    Ping from board ---> PHY ---> receive packet in the board.
    Above two cases are not working. When we plug the cable and reading "Table 8-29. 0x0010 PHY Status Register (PHYSTS)" register, we are getting the below error
    False Carrier Sense Latch
  • Hello,

    The above data indicates that the PHY is alive and linking up properly. This shortens the debug knowing these facts. I would like to rule out that ping is not working due to packet errors. Could you please provide a full register dump of Reg 0x0 - 0x1F, as well as Reg 0x467, 0x468 after trying to ping? Please note the last two registers are extended registers and thus require extended access.

    It is tricky to ping the same MAC, as there is potential that MAC will never send packets if it recognizes itself as the destination.

    Could you also please provide a schematic?

    Sincerely,

    Gerome

  • Hello Gerome Cacho, Thanks for your quick response,

    Please review the full register tested log provided below and kindly check and provide your suggestions:

    root@imx93Oraclemain:~# ifconfig

    eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 169.254.188.108  netmask 255.255.0.0  broadcast 169.254.255.255
            inet6 fe80::28e4:63ff:fe06:a7d9  prefixlen 64  scopeid 0x20<link>
            ether 2a:e4:63:06:a7:d9  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 47  bytes 9757 (9.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 250  bytes 17464 (17.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 250  bytes 17464 (17.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@imx93Oraclemain:~# 
    root@imx93Oraclemain:~# 
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x00                                                                                                                                                           
    0x3100
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x01
    0x786d
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x02
    0x2000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x03
    0x2240
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x04
    0x05e1
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x05
    0x4de1
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x06
    0x0007
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x07
    0x2001
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x08
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x09
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x0A
    0x0100
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x0B
    0x1000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x0D
    0x4007
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x0E
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x0F
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x10
    0x5815
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x11
    0x0108
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x12
    0x6600
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x13
    0x2a00
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x14
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x15
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x16
    0x0100
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x17
    0x00ed
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x18     
    0x0400
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x19
    0x3c21
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1A
    0x0010
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1B
    0x007d
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1C
    0x05ee
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1D
    0000
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1E
    0x0102
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x1F
    0000
    root@imx93Oraclemain:~# ifconfig eth0   
    eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 169.254.188.108  netmask 255.255.0.0  broadcast 169.254.255.255
            inet6 fe80::28e4:63ff:fe06:a7d9  prefixlen 64  scopeid 0x20<link>
            ether 2a:e4:63:06:a7:d9  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 265  bytes 124638 (121.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@imx93Oraclemain:~# ifconfig eth0 172.16.0.199 up
    root@imx93Oraclemain:~# ifconfig
    eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 172.16.0.199  netmask 255.255.0.0  broadcast 172.16.255.255
            inet6 fe80::28e4:63ff:fe06:a7d9  prefixlen 64  scopeid 0x20<link>
            ether 2a:e4:63:06:a7:d9  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 294  bytes 138294 (135.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 15450  bytes 944664 (922.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 15450  bytes 944664 (922.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@imx93Oraclemain:~# ping 172.16.0.199
    PING 172.16.0.199 (172.16.0.199) 56(84) bytes of data.
    64 bytes from 172.16.0.199: icmp_seq=1 ttl=64 time=0.067 ms
    64 bytes from 172.16.0.199: icmp_seq=2 ttl=64 time=0.076 ms
    64 bytes from 172.16.0.199: icmp_seq=3 ttl=64 time=0.077 ms
    64 bytes from 172.16.0.199: icmp_seq=4 ttl=64 time=0.075 ms
    64 bytes from 172.16.0.199: icmp_seq=5 ttl=64 time=0.077 ms
    64 bytes from 172.16.0.199: icmp_seq=6 ttl=64 time=0.075 ms
    64 bytes from 172.16.0.199: icmp_seq=7 ttl=64 time=0.078 ms
    64 bytes from 172.16.0.199: icmp_seq=8 ttl=64 time=0.072 ms
    ^C
    --- 172.16.0.199 ping statistics ---
    8 packets transmitted, 8 received, 0% packet loss, time 7148ms
    rtt min/avg/max/mdev = 0.067/0.074/0.078/0.003 ms
    root@imx93Oraclemain:~# ping 172.16.0.138
    PING 172.16.0.138 (172.16.0.138) 56(84) bytes of data.
    From 172.16.0.199 icmp_seq=1 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=2 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=3 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=4 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=5 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=6 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=7 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=8 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=9 Destination Host Unreachable
    ^C
    --- 172.16.0.138 ping statistics ---
    11 packets transmitted, 0 received, +9 errors, 100% packet loss, time 10225ms
    pipe 3
    root@imx93Oraclemain:~# ifconfig
    eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 172.16.0.199  netmask 255.255.0.0  broadcast 172.16.255.255
            inet6 fe80::28e4:63ff:fe06:a7d9  prefixlen 64  scopeid 0x20<link>
            ether 2a:e4:63:06:a7:d9  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 310  bytes 140458 (137.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 15637  bytes 957000 (934.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 15637  bytes 957000 (934.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@imx93Oraclemain:~# phytool write eth0/1/0xD  0x001F
    root@imx93Oraclemain:~# phytool write eth0/1/0xE  0x0467
    root@imx93Oraclemain:~# phytool write eth0/1/0xD  0x401F 
    root@imx93Oraclemain:~# phytool read  eth0/1/0xE  
    0x0fbf
    root@imx93Oraclemain:~# ping 172.16.0.138
    PING 172.16.0.138 (172.16.0.138) 56(84) bytes of data.
    From 172.16.0.199 icmp_seq=1 Destination Host Unreachable
    ping: sendmsg: No route to host
    From 172.16.0.199 icmp_seq=2 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=3 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=5 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=6 Destination Host Unreachable
    From 172.16.0.199 icmp_seq=7 Destination Host Unreachable
    ^C
    --- 172.16.0.138 ping statistics ---
    8 packets transmitted, 0 received, +6 errors, 100% packet loss, time 7165ms
    pipe 3
    root@imx93Oraclemain:~# ping 172.16.0.199                                    
    PING 172.16.0.199 (172.16.0.199) 56(84) bytes of data.
    64 bytes from 172.16.0.199: icmp_seq=1 ttl=64 time=0.072 ms
    64 bytes from 172.16.0.199: icmp_seq=2 ttl=64 time=0.076 ms
    64 bytes from 172.16.0.199: icmp_seq=3 ttl=64 time=0.075 ms
    ^C
    --- 172.16.0.199 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2053ms
    rtt min/avg/max/mdev = 0.072/0.074/0.076/0.001 ms
    root@imx93Oraclemain:~# ifconfig
    eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC>  mtu 1500
            inet 172.16.0.199  netmask 255.255.0.0  broadcast 172.16.255.255
            inet6 fe80::28e4:63ff:fe06:a7d9  prefixlen 64  scopeid 0x20<link>
            ether 2a:e4:63:06:a7:d9  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 357  bytes 161184 (157.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 18210  bytes 1114448 (1.0 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 18210  bytes 1114448 (1.0 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    root@imx93Oraclemain:~# 
    root@imx93Oraclemain:~# 
    root@imx93Oraclemain:~# phytool write eth0/1/0xD 0x001F
    root@imx93Oraclemain:~# phytool write eth0/1/0xE 0x0467
    root@imx93Oraclemain:~# phytool write eth0/1/0xD 0x401F
    root@imx93Oraclemain:~# phytool read  eth0/1/0xE 
    0x0fbf
    Regards,
    Ramesha S P
  • Hello,

    Thank you for the log. The register dump indicates to me that the device is alive and linked up (Reg 0x1), and is not detecting errors on the MDI (Reg 0x15). This leads me to believe the issue is on the MAC side. Reg 0x17 indicates that PHY is in RMII slave. I would advise checking setup and hold time on the board as this is typically why MAC interfaces fail. Please ensure that MAC's setup and hold time are met on the RX bus compared to the 50MHz XI, as well as if the PHY's setup and hold times are met on the TX bus probing on the lines compared to 50MHz XI.

    What is the difference between pinging .138 vs .199? What devices are these as I see .199 working.

    Sincerely,

    Gerome

  • Hello Gerome Cacho, Thanks for your quick response,

    We are doubting in the Phy issue, Since When we read the below register, we got the value 0x5815.
    root@imx93Oraclemain:~# phytool read eth0/0x01/0x10
    0x5815
    Here 11th bit is set "False Carrier Sense Latch"
    And also We did the external phy loop back test using the below command,
    Here whatever we are sending the ARP broadcast packet from the PC, we are not getting the same packet to the PC (Connection diagram PC ---> DP83822 PHY(our custom board) ---> PC). I think, because of the above "False Carrier Sense Latch" issue the external loopback is not working.
    Need your support for solving this issue.


    What is the difference between pinging .138 vs .199? What devices are these as I see .199 working.

    .199 is Board's Ip address which is board pinging itself based on self ping it cannot be determined if ping is working, and .138 is the local machine IP address where the ping is not working
  • Hello,

    It is uncertain why False Carrier Sense Latch is flagging high with the current variables given. However, I would still like to proceed with debugging the MAC interface as the MDI looks to be okay. Could you please conduct the setup and hold time analysis as suggested in my previous post? In addition, could you please share your schematics? 

    Could you also please provide a diagram of the difference between .139 and .199 locations on the signal chain? I believe the self ping could be a false positive statement as the ping may never be observed electrically if the source is the same as the destination.

    Sincerely,

    Gerome