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.

[参考译文] DP83822IF:除非重新连接 RX 电缆或对交换机/介质转换器进行下电上电、否则链路永远不会接通

Guru**** 2465940 points
Other Parts Discussed in Thread: DP83822IF

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1472758/dp83822if-link-never-goes-up-unless-rx-cable-is-reconnected-or-switch-media-converter-is-power-cycled

器件型号:DP83822IF

工具与软件:

您好!

我正在使用 DP83822IF、我不明白为什么我总是必须重新连接 RX 光纤电缆或对交换机(伙伴)进行下电上电才能使链路正常运行。

重新连接后、FX 模式运行良好、没有任何问题、直到器件再次复位。

信号检测(SD)电平始终为高电平。

我读取寄存器值、它们表示链路有效、支持100Base 全双工/半双工和10BASE 全/半双工也启用、SOR1也显示正确的 strap 配置值。  

当链路未接通时(重新连接电缆之前)、我看到以下几点:

- 0x0001 = 0x784D; 自动协商未完成

- 0x0012 = 0x80FF;指示链路质量的更改

- 0x0010 = 0x0285;MII 中断挂起、自协商未结束

我尝试通过将0x3300写入寄存器0x0000来重新启动自动协商、但运气不好。

有任何建议或想法为什么会发生这种情况、如何解决? 为了建立链路、我应该驱动哪个寄存器?  

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

    尊敬的 Louis:

    是否存在任何通信问题? 我看到链路已通过0x1[2]='1'建立。

    DP83822不对100Base-FX 使用自动协商。 此自动协商标志与光纤模式下的通信无关。

    谢谢!

    Evan

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

    尊敬的 Evan:

    感谢您发送编修。 链路伙伴(交换机)仅使用100M 光纤模式。  

    实际上、我已尝试通过与您提到的相同的方式重置 PHY:

    0x0[15]='1'(PHY 软件复位)

    0x1f[15]='1'(PHY 硬件复位)

    但是、这一切都不会导致链路建立。  

    但是... 我最终找到了一种使链接接通的方法、即启动数字重启:

    0x1f[14]='1'(PHY 数字重启)

    您知道为何需要重新启动 PHY 吗?

    此外、如您所见、自0x1[2]='1'以来就没有通信问题。 一旦链路接通、一切就完美无缺;无错误载波计数器、无挂起中断等

    谢谢!

    Louis

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

    尊敬的 Louis:

    可能存在一些信号质量问题、导致触发光纤故障检测、从而在 PHY 的状态机重新启动之前阻止链路启动。

    请尝试此寄存器配置以在启动时测试链接:

    0x40[13、6、5]='111'

    谢谢!

    Evan

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

    尊敬的 Evan:

    看起来您是正确的、但您能帮助我理解吗?

    我将"11"写入0x40[6、5]、但没有发生任何事情。 但一旦我将"1"写入0x40[13]、它就会显示连续消息:  

     收到中断 FALSE_CARRER_HF。 MISR1 = 0x82FF。 FCSCR = 0xFF

    错误的载波事件计数器也已满。

    仔细看,早些时候,当我启动数字重置,显然消息显示链路是接通- 10Mbps/half -流量控制关闭

    当我将"0"写回0x40[13]时、中断消息停止、数字复位可以接通链路(但速度为10Mbps/半)。

    甚至可以使用100Base FX 模式吗? 光纤模式不应有自动协商、对吧?

    谢谢!

    Louis

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

    尊敬的 Louis:

    请分享工作和故障情况中的 PHY 寄存器转储。 自动协商发生意外-我想确认 PHY 是针对光纤设置的、并禁用了自动协商。

    寄存器转储允许我确认 PHY 配置和从链路伙伴端发送的任何自动协商广播。

    谢谢!

    Evan

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

    尊敬的 Louis:

    感谢您共享寄存器转储。 在工作和故障情况下都存在一个困惑、我在0x1[2]='1'中看到了 link up。
    能否分享有关故障观察的更多详情? 在任一种情况下是否观察到通信故障(ping /吞吐量)?  

    寄存器0x5指示链路伙伴已禁用自协商-请使用0x0 = 0x2100禁用自协商进行测试。

    谢谢!

    Evan

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

    尊敬的 Evan:

    是的、很抱歉您以前问过此问题、在链路断开期间出现通信故障、ping 从未通过。 但建立链路后、通信正常、ping 始终成功。

    在出现故障和正常工作的情况下、我都可以从 PHY 的 TX 差分线路看到62.5MHz 波形。 很奇怪、这意味着它已经在100Base 中工作、对吧?

    我尝试与固件工程师合作、以便在内核初始化期间更好地了解 PHY 初始化。

    我也尝试过:

    ${dir}/MDIO-TOOL 与$dev 0x1F 0x8000
    ${dir}/MDIO-TOOL 与$dev 0x00 0x8000
    ${dir}/MDIO-TOOL w $dev 0x00 0x2100
    ${dir}/MDIO-TOOL w $dev 0x04 0x0101
    ${dir}/MDIO-TOOL w $dev 0x00 0x0000
    ${dir}/MDIO-TOOL 与$dev 0x0A 0x4020
    ${dir}/MDIO-TOOL w $dev 0x12 0x00FF
    ${dir}/MDIO-TOOL 与$dev 0x13 0x00BF


    但它不会建立该链路。  

    您能给我一个程序/步骤列表、说明哪些寄存器是使光纤模式正常工作必不可少的?

    谢谢!

    Louis

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

    尊敬的 Louis:

    感谢您的确认。 对于光纤模式、启用 FX_EN、SD_EN 并通过搭接或寄存器禁用自动协商就足够了。

    TX 是以62.5M 还是125M 的速度发射? 在强制100M 光纤模式下、我预计 TX 线在125m 处传输。

    关于初始化脚本、请在最后一步添加0x1F = 0x4000、因为您已验证数字复位以启动链路。

    假设这个修改后的脚本对于链路建立和通信而言是可靠的、这对于您的最终应用是否可以接受?

    谢谢!

    Evan

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

    尊敬的 Evan:

    我的缺点是、我忘记100Base-FX 使用 NRZI、所以 TX 线路在125MHz 上运行、因为我可以在62.5MHz 上看到连续的类似于方形的波形。 这意味着 NRZI 中的125MHz 数据信令。 如果我错了、请更正我。 我无法在此处附加图片。

    另外、我设法使它能够以100Mbps/全双工工作。 我获取了您的输入并调整了我的脚本 、只是禁用自动协商 、因为 FX_EN、SD_EN 已经捆绑了。 我甚至不包含数字复位0x1F = 0x4000。 因此、我所做的是:  

    我将这些写入到了寄存器中:

    ${dir}/MDIO-TOOL 与$dev 0x1F 0x8000
    ${dir}/MDIO-TOOL 与$dev 0x00 0x8000
    ${dir}/MDIO-TOOL w $dev 0x00 0x2100

    然后通过发出 ifconfig eth# down and up 来重新启动接口、即可。 工作正常! 我想 PHY 是使用非 FX 模式的错误配置初始化的。

    谢谢!

    Louis

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

    尊敬的 Louis:

    关于125m NRZI 波形、您是正确的。

    感谢您确认此光纤配置适用于链路! 如果您发现任何其他功能问题、请告知我、否则您会认为该问题已解决。

    此致、

    Evan