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:PHY 不稳定、随机运行行为、锁存电压与0x467、0x468中的寄存器值不匹配

Guru**** 2487425 points
Other Parts Discussed in Thread: DP83822I

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/682354/dp83822i-phy-not-stable-random-operation-behavior-latch-in-voltages-do-not-match-register-values-in-0x467-0x468

器件型号:DP83822I

您好!

首先、我想说我是一家为特定公司工作的承包商、但我无法在 E2E 网站上使用与该公司关联的电子邮件地址。  我在2个不同的浏览器和2个不同的计算机上多次尝试登录以验证问题。  我能够将其缩小为 E2E 网站不接受我与该公司关联的电子邮件地址、因此我使用个人 TI 个人资料发布此问题。  这使得拥有与分配给我的电子邮件地址类似的电子邮件地址的用户完全无法访问 E2E 社区。  试图找到一种甚至发布问题的方法非常令人沮丧。  我以前在 E2E 上没有遇到过这个问题。  此问题还限制了我可以共享多少信息来帮助解决下面列出的问题。

返回 DP83822I 问题:

我正在与 XMC4800处理器和两个用于 EtherCAT 的 DP83822I PHY 合作进行一个项目、我是硬件工程师。  我们之前使用过不同的 PHY 芯片 KSZ8081、从未出现过任何问题。  由于空间方面的限制、我们迁移到了 DP83822I。  我们遇到了很多问题、试图让他们正常工作。  我已经更改并修复了设计中的几个错误、并最终使其正常工作、但它仅在偶尔(1/10次)工作、当它发生时、EtherCAT 运行似乎不会继续。  在具有8个 EtherCAT 从站的设计中、XMC4800是上游端口的第4个从站。  我已解决的一些问题如下:

答: 我将 RXD1和 RXD2交换到其中一个 PHY 上的处理器(固定)

b. 处理器 MII 上的链路输入连接到 LED1、然后我将其移至 LED0

c. 由于 焊料过多而删除了其中一个物理层上的2个焊接桥(引脚1短接至接地体焊盘、引脚17短接至引脚18)

d. 我已经多次更改了自举引脚配置、但在通信或 MDIO 寄存器状态中没有看到一致的性能。

我最近阅读了新版本的数据表(2018年4月)、并解释说有一些自举模式由数据表中的 LED 引脚自举电压控制。  我目前的想法是、我遇到了某种自举问题、即芯片甚至在正常情况下也不工作。  由于数据表中没有关于这一点的信息、除了检查0x0467和0x0468中的寄存器外、我无法验证是否正在发生这种情况。  它确实在0x0467和0x468中指定了寄存器位置 LED0、但不指定 LED1。  我遇到的一个关键问题是、上电时的自举电压与这些寄存器中的位表示的模式不对应、而是通过 MDIO 端口进行 PHY 数据转储。  我们还通过 MDIO 端口对 phy 进行复位、并在复位前后转储数据、但得到的结果与0x467和0x468相同。  我将在下面具体列出我们所获得的结果。

锁存电压:

LED0 = 3.3V

LED1 = 2.7V

RXD0=0V

RXD1=0V

RXD2=0V

RXD3=3.3V

RXER = 3.3V

RXDV=0V

COL = 0.12V

CRS=0.89V

 

0x467=2001

0x468=0000

据我所知、所有链路都在物理层(MDI)和 MII 总线上正常运行。  我已经检查了示波器上的所有时钟和数据线路、它们看起来可以连接到 PHY、也可以从 PHY 连接到 XMC。

此外、作为随机运行状态问题的一个示例、0x0019的地址位4:0对于 PHY0和 PHY1是正确的(分别为0、1)、但在复位之前和之后、数据转储中两个 phy 的0x467值完全相同。  PHY1上的 COL 引脚悬空、PHY0上的 COL 引脚具有1.96K 下拉电阻器。  我认为这是将地址位配置为0、1的正确自举、但它不会反映在寄存器的锁存中。  当您继续浏览上述列表时、0x467和0x468中的其他几个寄存器不会反映其锁存值(RXD0、LED0等)。

1. 锁存电压为什么与数据表指定的0x467和0x468读取的值相关的模式不匹配?

2. 当 LATCH IN 值不正确时、为什么地址位是正确的?

3、 如何判断芯片是否在自举模式下?

4、 LED1的哪些模式与自举相关(未在数据表中列出)?

5. LED0的模式2和3是否与自举相关(数据表中模糊引用)?   

6. 为什么 LED0在3.3V 时锁存并在0x0467 (模式2)中上升为01?

7 、为什么这两个 PHY 芯片都有问题?

我已经解决这个问题大约2周了。  一些帮助会非常有帮助!  谢谢你。

Kevin

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

    e2e.ti.com/.../phy_5F00_reg_5F00_dump.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TXT 中的数据:
    左列是 PHY0、右列是 PHY1
    第二个数据集是在通过 MDIO 端口切换复位位位后进行的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:

    很遗憾听到您登录时出现的问题。 您是否就此问题联系过我们的 TI 论坛支持小组?

    关于 DP83822I、您不断看到寄存器0x467和0x468相同值的原因是、您正在执行基本寄存器读取、而应该执行扩展寄存器读取。 您遇到这个问题令人困惑、很抱歉。
    下面是如何读取寄存器0x467:
    1.写入寄存器0xD 值0x1F
    2.写入寄存器0xE 值0x467
    3.写入寄存器0xD 值0x401F
    4、读取寄存器0xE (0xE 中的值为0x467)、就像指针一样

    是否可以同时为0x467和0x468执行此操作? 然后、我们可以看到 PHY 采用的模式。
    此外、您是否可以通过任何方式向我们发送您的原理图?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:

    我想这一切都是因为您没有正确执行扩展寄存器空间的读取/写入。 这可以通过查看您对地址0x1f 以上寄存器的读取来证明。 如果忽略位[4]以上的寄存器地址位、您可以看到寄存器值重复。 这是因为额外的寄存器地址位被忽略。

    IE。
    [d]./main.c:379 - id 0x0002 - 2000年
    [d]./main.c:379 - ID 0x0022 - 2000年
    [d]./main.c:379 - ID 0x0042 - 2000年


    [d]./main.c:379 - id 0x0007 - 2001年
    [d]./main.c:379 - ID 0x0027 - 2001年
    [d]./main.c:391 - id 0x0467 - 2001年


    所有这些寄存器读取操作的共同点是寄存器地址位[4:0]是相同的、并且得到的值是相同的。 这是预期的。 为了正确访问扩展寄存器空间、请执行数据表中描述的访问方法:8.4.2.5读取(无后增量)操作和8.4.2.6写入(后增量)操作

    因为有这么多问题、您能否运用这些知识、重新评估您的系统、并向我提出您可能遇到的任何问题? 此解释回答了您的主题中的问题1和2。

    对于问题3、PHY 在 POR 或器件复位期间锁存自举。 数据表时序图将其称为闩锁。 当发生锁存时、在引脚上对电压进行采样。 然后将捆绑选项加载到 PHY 中并视为默认选项。 在正常运行期间、除了 PHY 地址外、可以更改捆绑的值。 如果您使用 MDIO 复位 PHY、则自举值将返回到其初始采样状态。 如果您选通 RESET 引脚、则将完全重新采样自举。

    4.和5. LED_0的模式2和3是用于器件测试的内部保留模式。 如果您绑定到它们、它们将导致无法正常工作的器件。

    6.和7. 您的寄存器访问方法不正确。 请使用正确的检修方法重新测试。

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

    尊敬的 Rob:

    这是非常好的信息。  我们将审查所有这些内容、并根据大家的建议重新评估寄存器信息。  我认为这是合理的、并将为我们提供正确诊断问题所需的正确信息!  我们很快就会返回良好的数据。

    感谢大家帮助我们解决这个问题!

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Ross! 我们非常感谢您的帮助。 如下所述、我们正在努力修复读取/写入操作。 关于电子邮件地址的登录问题、我通过网站反馈表提交了申请。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../PHY0-PHY1-new_5F00_dump.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们从 phy 获得了一个新的数据转储、但不幸的是、现在我们在设置寄存器0x467 0x468中得到了全0。 我不确定是否正确。
    此外、为了确保我正确理解0x467和0x468中的数据、如果我得到一个用于 RXD0的00、例如在0x467 (13:12)中、这是否对应于(表11中)与这些自举值 AN_1_0和 PHY_AD1=0相关的位(实际上是模式2、而不是模式0)? 从我读取的结果中、不是00=模式1、01=模式2、10=模式3、11=模式4。 对于所有引脚、自举位值和模式编号完全相互独立?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin、

    您的寄存器访问似乎仍然存在问题。 至少 PHY0仍然为您提供看起来仅为标准寄存器的内容。

    [d]./main.c:414 - id 0x0040 - 3100 c11d
    [d]./main.c:414 - id 0x0041 - 7849 0000
    [d]./main.c:414 - id 0x0042 - 2000 0000

    这里的信号灯是寄存器0x2、始终返回0x2000。

    PHY1看上去做得更好、但仍然报告0x467为0x0000、0x468为0x0000、即使您正确捆绑了 PHY 地址、也报告了0x0000。 因此、我相信您仍会遇到问题。 如图所示、如果您对 PHY1的访问是有效的、并且您使用的是 PHY 地址= 0x1、那么在0x467位[11]= 1的最小值处

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们将继续查看固件、以确保其得到解决。 我将在明天通过电子邮件与大家分享这部分原理图。 我们还在考虑使用新 IC 很快更换其中一个 phy、如果有可能损坏它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../PHY0-PHY1-dump-4_2D00_25-11am.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们确实发现了另一个错误、其中一个部分未使用新的读取进行更新。 这是我们最新的数据转储。 我们仍然得到467 468中的所有零。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:

    在您的寄存器转储中有一些显然相互冲突的信息正在被破坏。 例如、LED_0极性设置为低电平有效。 这是因为低电平有效 LED 极性意味着您已在模式4中捆绑了 LED 引脚。 正如我从测得的 TAP 电压中看到的、模式4就是您所要实现的目标。

    然而寄存器0x467显示 LED_0自举处于模式1、这是不正确的。 这应该在 PHY 上发生。

    您能帮个忙、逐行读取寄存器0x467吗?

    如果可能、使用4访问方法手动执行读取。

    0xD = 0x001f
    0xe = 0x0462
    0xD = 0x401f //无后增量选项!
    读取0xe

    如果这不起作用、则 PHY 的初始化或其他一些因素存在很大的错误。

    如果您也可以共享原理图、可能会有所帮助。 我知道您说您分享的内容有限、但从现在开始、我只能为您提供一般性指导。

    例如与 MAC 的浮点连接。 移除所有铁氧体磁珠并替换为0欧姆电阻器、测量参考时钟。 确保加电时序有效。

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

    感谢 Rob 的反馈。  我想我们在转储代码中发现了另一个错误。  我们将再次前往查看我们发现的内容。  我将 phy 和 XMC 原理图部分的副本发送给 Ruben Perez 和 Andrey Volynets (分配给我们公司的工程师)。

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

    e2e.ti.com/.../pelvis_5F00_new_5F00_dump-4_2D00_26_2D00_2018.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们相信、我们现在正在从扩展寄存器中正确读取数据。 这是我们所得到的结果的转储。 我很快就会发布更多信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../PHY0-PHY1-Strap-data.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    pdf 显示了0x467和0x468读取的黑色圆圈模式中的自举。 红色圆圈内的自举模式是所需的自举模式。 黑色中的右列显示了以下内容:示波器上测得的实际自举电压、以及芯片引脚上实际的硬件自举配置。 通过比较红色和黑色的所需/实际信息、我可以看到测量的自举电压与我们正在寻找的配置中所需的自举相匹配、但芯片上的许多引脚在完全不同的自举模式下出现。

    我相信这可以识别出所需操作和实际操作之间的差异、但不能解释芯片是如何实现的。

    我们还在考虑芯片损坏的可能性。 我们已经对电源进行了研究、认为可能是上电时发生过压事件、但对此并不完全确定、因为示波器上的瞬变非常快、并且可能与接地探针布线中的电感有关。 此外、许多其他器件、例如 XMC 处理器、2x LAN925和 EEPROMS、都能正常工作。 如果出现过压问题、我希望其他器件也会出现故障、这使我对这种理论有一定的怀疑。

    此时、我想尝试更换两个 PHY、看看这是否可以解决问题。 我们将选通连接到物理层的 GPIO 引脚、然后再将芯片拉离以验证到 BGA 的迹线连接。 当我们更换它们时,我们将使用外部3.3V 电源。 如果是电源过压事件、我可以通过在更换板载电源后重新连接板载电源来重现问题。 如果我更换它们,它们仍然很坏,它们要么被损坏,要么首先到达坏的地方。

    如果你们有任何其他想法或解释、可能是导致这种情况的问题、那会很好。

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

    e2e.ti.com/.../phy0-phy1-strap-data-re_2D00_evaluated.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我重新评估了如何转换0x467和0x468中的数据。 我第一次使用467和468中的数据填充表11中的自举功能位。 这次我将467和468中的位与模式编号相关联。 这似乎符合我的要求。 但是、这仍然不能解释芯片为什么不工作。 我仍在考虑是否可能损坏这些部件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    重新评估代码后、我们将从 MDIO 中获得良好的数据。  修复了将467和468与模式值关联的方式后、我们在捆绑中只发现了一个错误。  我们修复了该问题、现在得到了正确的自举值。  我们现在在两个 PHY 上都有恒定链路和100Mbps。  尽管如此、我们仍在使用 EtherCAT 数据报实现间歇性性能。  有时我们得到全部8个从器件、有时没有。  如果我们绕过 PHYS/XMC、它将持续运行、而不会出现任何问题。  很难确定问题是什么、因为它可以在短时间内工作、并且通常需要一个循环通电才能再次工作。

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

    我很高兴听到您在捆绑 PHY 和读取寄存器方面正在取得进展。

    您能不能描述 EtherCAT 数据报的含义有什么问题? 您是否接收到错误且被丢弃的帧? 您是否完全没有接收到以太网帧?

    什么是为 PHY 提供参考时钟? 对于大量 EtherCAT 控制器、参考时钟由控制器提供给 PHY。 该基准上是否存在高抖动?

    数据报之间的 IPG 对链路的可靠性有何影响?

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    XMC 为 PHY 提供25MHz 参考时钟、并在探测 PHY 上的引脚时在示波器上以25MHz 的频率运行。 我在示波器上看到了+/- 150ps 的脉宽变化。 对于数据报问题、我必须让我们的固件工程师在该问题上发出蜂鸣音。 我也不知道中间包间隙问题的答案。 我必须找到该测量值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在固件工程师研究上述问题时、我们还将执行一些回送测试。  由于 PHY 能够始终保持链路、因此在 MII 端似乎存在硬件问题。  通过在 PHY 中运行 MII 回送至 XMC、我们可以尝试验证这些连接。

    对于测试模式、测试模式是否来自 MDI 物理介质的 MII 端口?  我们正在考虑运行该测试、但在数据表中没有看到有关其广播到何处的大量信息。

    我们还将尝试在具有几个低级半字节的评估板上驱动外部 Phy、并将其推入 phy 中有问题、然后查看我们是否可以将其读入 XMC 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rob、您是否有机会从 Ruben Perez 那里获得了原理图部分的副本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最终需要解决2个问题才能启动该系统:必须更正扩展寄存器空间访问、并且需要为 DP83822的 A 类操作设置寄存器。

    如需更多信息、在使用电容耦合和 DP83822时、必须将寄存器0x404设置为值0x0024以实现可靠通信。

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

    在 PHY 内的电子邮件切换寄存器0x0404至0x0024中建议使用 Rob。 这就将 MDI 接口上的驱动器级切换为 A 类、而不是 AB 类、这对于我们设计中的电容耦合是必需的。 这使得 phy 的工作得以完成、并使整个 EtherCAT 链变为现实! 感谢 Rob 和帮助解决此问题的所有人。 这似乎是导致我们问题的最大因素、因为为什么 PHY 根本不做太多工作。 不过、自举寄存器对于分类也非常重要。