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:链路失败

Guru**** 2931100 points

Other Parts Discussed in Thread: DP83822I

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1271211/dp83822i-link-fail

器件型号:DP83822I

客户发现 DP83822I 链路异常。  

此处的图可能是客户系统架构。

问题说明:  

在 OUT1 EtherCAT 通道中、DP83822/DP83849/KSZ8051/KSZ8081/LAN9252是链路传递函数。

在 OUT2 EtherCAT 通道中、DP83822为链路故障、另一个像  DP83849/KSZ8051/KSZ8081/LAN9252这样的 PHY 为 链路通过。

主 EtherCAT 模块中有3个 VSC8541 (x 3pcs)。  

请找到 DP83822链路失败的寄存器值。  

输出2寄存器(83822、链路失败)

       READ_PHY0_Data[18] uint16_t 0xe600 (十六       进制)//错误载波计数器半满中断:1 =错误载波 HF 中断挂起

       READ_PHY0_Data[23] uint16_t 0x4d (十六进制)           //RX FIFO 下溢状态:1 =检测到下溢

此致

布赖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brian、

    感谢您分享这个图表。 我想提出一些进一步澄清的问题:

    • OUT1和 OUT2之间的区别是什么?
    • 您在系统中使用的电缆是什么?
    • DP83822在 ESC 中的位置? ESC1的输入侧或 ESC1的输出侧
    • 您是否发现系统中存在任何 CRC 错误?
    • 您还可以读取寄存器0x000A 和0x000B 吗?

    --

    此致、

    林希尔曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在中、Out1和 Out2具有相同的设置:RGMII、100Mbps、全双工、MDIO 类型为 GMAC、自动协商开启、PHY IC 为 VSC8541

    电缆:CAT.5E

    我已读取83822寄存器

    输出1寄存器(83822)-连接 正常:

           REG[0]  = 0x3100 (十六进制)        

           REG[1]  = 0x7849 (十六进制)        

           REG[2]  = 0x2000 (十六进制)        

           REG[3]  = 0xa240 (十六进制)        

           REG[4]  = 0x1E1 (十六进制)  

           REG[5]  = 0x0 (十六进制)       

           REG[6]  = 0x6 (十六进制)       

           REG[7]  = 0x2001 (十六进制)        

           REG[8]=0x0  (十六进制)       

           REG[9]  = 0x0 (十六进制)       

           REG[10]= 0x100 (十六进制)  

           REG[11]= 0x1000 (十六进制)        

           REG[12]= 0x0 (十六进制)       

           REG[13]= 0x0 (十六进制)       

           REG[14]= 0x0 (十六进制)       

           REG[15]= 0x0 (十六进制)       

           REG[16]= 0x5812 (十六进制)        

           REG[17]= 0x108 (十六进制)  

           REG[18]= 0xe400 (十六进制)        

           REG[19]= 0x2A00 (十六进制)        

           REG[20]= 0x0 (十六进制)       

           REG[21]= 0x0 (十六进制)       

           REG[22]= 0x100 (十六进制)  

           REG[23]= 0x49 (十六进制)    

           REG[24]= 0x400 (十六进制)  

           REG[25]= 0x8020 (十六进制)        

           REG[26]= 0x10 (十六进制)    

           REG[27]= 0x7d (十六进制)    

           REG[28]= 0x5ee (十六进制)  

           REG[29]= 0x0 (十六进制)       

           REG[30]= 0x102 (十六进制)  

           REG[31]= 0x0 (十六进制)       

           REG[32]= 0x3100 (十六进制)        

           REG[33]= 0x7849 (十六进制)        

           REG[34]= 0x2000 (十六进制)        

           REG[35]= 0xa240 (十六进制)        

           REG[36]= 0x1e1 (十六进制)  

           REG[37]= 0x0 (十六进制)       

           REG[38]= 0x4 (十六进制)       

           REG[39]= 0x2001 (十六进制)        

           REG[40]= 0x0 (十六进制)       

           REG[41]= 0x0 (十六进制)       

           REG[42]= 0x100 (十六进制)  

           REG[43]= 0x1000 (十六进制)        

           REG[44]= 0x0 (十六进制)       

           REG[45]=0x0 (十六进制)       

           REG[46]=0x0 (十六进制)       

           REG[47]= 0x0 (十六进制)       

           REG[48]= 0x4002 (十六进制)        

           REG[49]= 0x108 (十六进制)  

           REG[50]= 0x0 (十六进制)       

           REG[51]= 0x0 (十六进制)       

           REG[52]= 0x0 (十六进制)       

           REG[53]= 0x0 (十六进制)       

           REG[54]= 0x100 (十六进制)  

           REG[55]= 0x41 (十六进制)    

           REG[56]= 0x400 (十六进制)  

           REG[57]= 0x8020 (十六进制)        

           REG[58]= 0x0 (十六进制)       

           REG[59]= 0x7d (十六进制)    

           REG[60]= 0x5ee (十六进制)  

           REG[61]= 0x0 (十六进制)       

           REG[62]= 0x102 (十六进制)  

           REG[63]= 0x0 (十六进制)       

           REG[64]= 0x3100 (十六进制)        

           REG[65]= 0x7849 (十六进制)

     

     

    输出2寄存器(83822)-连接失败:

           REG[0]  = 0x3100 (十六进制)        

           REG[1]  = 0x7849 (十六进制)        

           REG[2]  = 0x2000 (十六进制)        

           REG[3]  = 0xa240 (十六进制)        

           REG[4]  = 0x1E1 (十六进制)  

           REG[5]  = 0x0 (十六进制)       

           REG[6]  = 0x6 (十六进制)       

           REG[7]  = 0x2001 (十六进制)        

           REG[8]=0x0  (十六进制)       

           REG[9]  = 0x0 (十六进制)       

           REG[10]= 0x100 (十六进制)  

           REG[11]= 0x1000 (十六进制)        

           REG[12]= 0x0 (十六进制)       

           REG[13]= 0x0 (十六进制)       

           REG[14]= 0x0 (十六进制)       

           REG[15]= 0x0 (十六进制)       

           REG[16]= 0x5812 (十六进制)        

           REG[17]= 0x108 (十六进制)  

           REG[18]= 0xe600 (十六进制)       //错误载波计数器半满中断:1 =错误载波 HF 中断挂起

           REG[19]= 0x2A00 (十六进制)        

           REG[20]= 0x0 (十六进制)       

           REG[21]= 0x0 (十六进制)       

           REG[22]= 0x100 (十六进制)  

           REG[23]= 0x4d (十六进制)           //RX FIFO 下溢状态:1 =检测到下溢

           REG[24]= 0x400 (十六进制)  

           REG[25]= 0x8020 (十六进制)        

           REG[26]= 0x10 (十六进制)    

           REG[27]= 0x7d (十六进制)    

           REG[28]= 0x5ee (十六进制)  

           REG[29]= 0x0 (十六进制)       

           REG[30]= 0x102 (十六进制)  

           REG[31]= 0x0 (十六进制)       

           REG[32]= 0x3100 (十六进制)        

           REG[33]= 0x7849 (十六进制)        

           REG[34]= 0x2000 (十六进制)        

           REG[35]= 0xa240 (十六进制)        

           REG[36]= 0x1e1 (十六进制)  

           REG[37]= 0x0 (十六进制)       

           REG[38]= 0x4 (十六进制)       

           REG[39]= 0x2001 (十六进制)        

           REG[40]= 0x0 (十六进制)       

           REG[41]= 0x0 (十六进制)       

           REG[42]= 0x100 (十六进制)  

           REG[43]= 0x1000 (十六进制)        

           REG[44]= 0x0 (十六进制)       

           REG[45]=0x0 (十六进制)       

           REG[46]=0x0 (十六进制)       

           REG[47]= 0x0 (十六进制)       

           REG[48]= 0x4002 (十六进制)

           REG[49]= 0x108 (十六进制)  

           REG[50]= 0x0 (十六进制)       

           REG[51]= 0x0 (十六进制)       

           REG[52]= 0x0 (十六进制)       

           REG[53]= 0x0 (十六进制)       

           REG[54]= 0x100 (十六进制)  

           REG[55]= 0x45 (十六进制)                   //无信息

           REG[56]= 0x400 (十六进制)  

           REG[57]= 0x8020 (十六进制)        

           REG[58]= 0x0 (十六进制)       

           REG[59]= 0x7d (十六进制)    

           REG[60]= 0x5ee (十六进制)  

           REG[61]= 0x0 (十六进制)       

           REG[62]= 0x102 (十六进制)  

           REG[63]= 0x0 (十六进制)       

           REG[64]= 0x3100 (十六进制)        

           REG[65]= 0x7849 (十六进制)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chen:

    感谢您分享详细描述。 我可能有几个我想澄清的问题。

    从 OUT1可以看到、您提供的寄存器0x0001[2]处于链路断开状态。 这意味着 PHY 未建立链路或您未在 OUT1中看到与您之前所做声明相矛盾的链路传递。

    • 我可以问一下您是如何读取寄存器的吗?
    • 您是在 EtherCAT 运行时还是 在 EtherCAT 关闭时读取寄存器? 如果可能、您可以在 EterCAT 运行时读取寄存器吗?
    • 你还可以多次读取寄存器(主要是0x0001)并确保所有寄存器状态保持不变吗?

    您能否自行执行上述测试以确保我们位于同一页面?

    --

    谢谢!

    林希尔曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在使用在调试模式下运行的 OUT1和 OUT2模块、在 EtherCAT 连接成功或失败后、重新启动 MCU 并读取寄存器。

    我将在 EtheCAT 运行时尝试多次读取寄存器、  请确保所有寄存器状态保持不变。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    输出1寄存器(83822)- EtherCAT 连接 正常:

    REG[0]= 0x3100 (十六进制)
    REG[1]= 0x786d (十六进制)
    REG[2]= 0x2000 (十六进制)
    REG[3]= 0xa240 (十六进制)
    REG[4]= 0x1E1 (十六进制)
    REG[5]= 0x4181 (十六进制)
    REG[6]= 0x5 (十六进制)
    REG[7]= 0x2001 (十六进制)
    REG[8]=0x0 (十六进制)
    REG[9]= 0x0 (十六进制)
    REG[10]= 0x100 (十六进制)
    REG[11]= 0x1000 (十六进制)
    REG[12]= 0x0 (十六进制)
    REG[13]= 0x0 (十六进制)
    REG[14]= 0x0 (十六进制)
    REG[15]= 0x0 (十六进制)
    REG[16]= 0x4615 (十六进制)
    REG[17]= 0x108 (十六进制)
    REG[18]=0x0 (十六进制)
    REG[19]= 0x0 (十六进制)
    REG[20]= 0x0 (十六进制)
    REG[21]= 0x0 (十六进制)
    REG[22]= 0x100 (十六进制)
    REG[23]= 0x49 (十六进制)
    REG[24]= 0x400 (十六进制)
    REG[25]= 0x800c20 (十六进制)
    REG[26]= 0x0 (十六进制)
    REG[27]= 0x7d (十六进制)
    REG[28]= 0x5ee (十六进制)
    REG[29]= 0x0 (十六进制)
    REG[30]= 0x102 (十六进制)
    REG[31]= 0x0 (十六进制)
    REG[32]= 0x3100 (十六进制)
    REG[33]= 0x786d (十六进制)
    REG[34]= 0x2000 (十六进制)
    REG[35]= 0xa240 (十六进制)
    REG[36]= 0x1e1 (十六进制)
    REG[37]= 0x4181 (十六进制)
    REG[38]= 0x5 (十六进制)
    REG[39]= 0x2001 (十六进制)
    REG[40]= 0x0 (十六进制)
    REG[41]= 0x0 (十六进制)
    REG[42]= 0x100 (十六进制)
    REG[43]= 0x1000 (十六进制)
    REG[44]= 0x0 (十六进制)
    REG[45]=0x0 (十六进制)
    REG[46]=0x0 (十六进制)
    REG[47]= 0x0 (十六进制)
    REG[48]= 0x4615 (十六进制)
    REG[49]= 0x108 (十六进制)
    REG[50]= 0x0 (十六进制)
    REG[51]= 0x0 (十六进制)
    REG[52]= 0x0 (十六进制)
    REG[53]= 0x0 (十六进制)
    REG[54]= 0x100 (十六进制)
    REG[55]= 0x49 (十六进制)
    REG[56]= 0x400 (十六进制)
    REG[57]= 0x800c20 (十六进制)
    REG[58]= 0x0 (十六进制)
    REG[59]= 0x7d (十六进制)
    REG[60]= 0x5ee (十六进制)
    REG[61]= 0x0 (十六进制)
    REG[62]= 0x102 (十六进制)
    REG[63]= 0x0 (十六进制)
    REG[64]= 0x3100 (十六进制)
    REG[65]= 0x786d (十六进制)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    输出2寄存器(83822)- EtherCAT 连接失败:

    我多次读取寄存器、寄存器[16]和寄存器[48] 为0x615或0x4615。

    REG[0]= 0x3100 (十六进制)
    REG[1]= 0x786d (十六进制)
    REG[2]= 0x2000 (十六进制)
    REG[3]= 0xa240 (十六进制)
    REG[4]= 0x1E1 (十六进制)
    REG[5]= 0x4181 (十六进制)
    REG[6]= 0x5 (十六进制)
    REG[7]= 0x2001 (十六进制)
    REG[8]=0x0 (十六进制)
    REG[9]= 0x0 (十六进制)
    REG[10]= 0x100 (十六进制)
    REG[11]= 0x1000 (十六进制)
    REG[12]= 0x0 (十六进制)
    REG[13]= 0x0 (十六进制)
    REG[14]= 0x0 (十六进制)
    REG[15]= 0x0 (十六进制)
    REG[16]= 0x615 (十六进制)   或0x4615、与 REG[48]相同
    REG[17]= 0x108 (十六进制)
    REG[18]=0x0 (十六进制)
    REG[19]= 0x0 (十六进制)
    REG[20]= 0x0 (十六进制)
    REG[21]= 0x0 (十六进制)
    REG[22]= 0x100 (十六进制)
    REG[23]= 0x49 (十六进制)
    REG[24]= 0x400 (十六进制)
    REG[25]= 0x800c20 (十六进制)
    REG[26]= 0x0 (十六进制)
    REG[27]= 0x7d (十六进制)
    REG[28]= 0x5ee (十六进制)
    REG[29]= 0x0 (十六进制)
    REG[30]= 0x102 (十六进制)
    REG[31]= 0x0 (十六进制)
    REG[32]= 0x3100 (十六进制)
    REG[33]= 0x786d (十六进制)
    REG[34]= 0x2000 (十六进制)
    REG[35]= 0xa240 (十六进制)
    REG[36]= 0x1e1 (十六进制)
    REG[37]= 0x4181 (十六进制)
    REG[38]= 0x5 (十六进制)
    REG[39]= 0x2001 (十六进制)
    REG[40]= 0x0 (十六进制)
    REG[41]= 0x0 (十六进制)
    REG[42]= 0x100 (十六进制)
    REG[43]= 0x1000 (十六进制)
    REG[44]= 0x0 (十六进制)
    REG[45]=0x0 (十六进制)
    REG[46]=0x0 (十六进制)
    REG[47]= 0x0 (十六进制)
    REG[48]= 0x615 (十六进制)   或0x4615、与 REG[16]相同
    REG[49]= 0x108 (十六进制)
    REG[50]= 0x0 (十六进制)
    REG[51]= 0x0 (十六进制)
    REG[52]= 0x0 (十六进制)
    REG[53]= 0x0 (十六进制)
    REG[54]= 0x100 (十六进制)
    REG[55]= 0x49 (十六进制)
    REG[56]= 0x400 (十六进制)
    REG[57]= 0x800c20 (十六进制)
    REG[58]= 0x0 (十六进制)
    REG[59]= 0x7d (十六进制)
    REG[60]= 0x5ee (十六进制)
    REG[61]= 0x0 (十六进制)
    REG[62]= 0x102 (十六进制)
    REG[63]= 0x0 (十六进制)
    REG[64]= 0x3100 (十六进制)
    REG[65]= 0x786d (十六进制)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    存在一种特殊现象。

    如果我在 主 EtherCAT 模块(VSC8541)和 OUT 2 (DP83822)之间使用以太网集线器、则 EtherCAT 连接成功。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chen:

    我看到 OUT1和 OUT2的822链路从上面提供的寄存器转储建立了链路。 但我在您的案例中查看寄存器0x000A 寄存器或 Reg[10]、而不是0x0102。 这表明奇半字节检测未关闭。 如果可能的话、你可以向0x0102写入0x000A 寄存器或 Reg[10]来看看这是否解决了问题?

    --

    此致、

    林希尔曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将0x000A 寄存器写入0x0102、运行正常。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chen:

    很高兴它成功了。

    --

    此致、

    林希尔曼