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.

[参考译文] DP83TC812R-Q1:DP83TC812R SQI 监控

Guru**** 1640390 points
Other Parts Discussed in Thread: DP83TC812R-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1135920/dp83tc812r-q1-dp83tc812r-sqi-monitoring

器件型号:DP83TC812R-Q1

你(们)好

我使用以下命令来监控 DP83TC812R-Q1 PHY 的 SQI 值

从扩展寄存器0x871总线读取,我将 SQI 值读取为0x7

但是、如果 我拔下/插入电缆、SQI 值不一致、SQI 从0变为0、而不是更改为0x7、是否缺少任何步骤

我的测试程序是否正确? 或者我没有执行任何步骤?

示例:读取 MMD1F 域中没有后增量的寄存器0x17
步骤1)将0x1F 写入寄存器0xD

步骤2)将0x871写入寄存器0xE

步骤3)将0x401F 写入寄存器0xD

步骤4)读取寄存器0xE

此致

Annamalai

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

    您好、Annamalai、

    电缆插拔前的 SQI 非常好。 在插入和插入后、看起来链路已断开。 您可以执行软复位0x001F = 0x4000并重新启动链路。 之后、您可以监控 SQI。

    --
    此致、
    Gokul。

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

    你好、Gokul、

    1)在我的硬件之一中、SQI 始终为0、原因可能是什么(不过这是一个不同的问题)?

    2)只需对 PHY 进行软复位就足够了,或者我需要执行完整的寄存器初始化序列(它还会修改一些其他寄存器)?

    此致、

    Annamalai

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

    您好、Annamalai、

    您可以检查该硬件上的链接状态、并检查器件是否已链接。  如果不是、我们可以研究它为什么没有连接。

    由于寄存器未复位、因此在软复位后无需执行寄存器初始化序列。

    --
    此致、
    Gokul。

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

    你好、Gokul、

    感谢您的快速回答、回答了我的第2点、  

    我仍然需要对第一点作出答复。 PHY 工作正常、ping 等的位置。 但 SQI 仍然为0

    此致

    Annamalai

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

    1)如果您知道并能提供一些指示、请告知我

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

    您好、Annamalai、

    您能否提供寄存器0x0001、0x0871、0x0A85、0x0A88的读取值?

    如上所述、您可以使用间接寄存器访问来读取这些寄存器。

    --
    此致、
    Gokul。

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

    所有通过扩展访问(0x1F)读取

    0x0871:0x0

    0x0001:0x61

    0x0A85:0x3e

    0x0A88:0x2d22

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

    在我读取这3个寄存器后、很奇怪、现在 SQI 是好的!

    不确定为什么我只是在没有扩展读取的情况下读取0x01。

    因此、您建议读取所有3个寄存器以进行链路状态检查? 现在、它看起来 SQI 寄存器恢复稳定并从某种锁定中恢复。

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

    为什么要使用扩展读取来读取0x01?这2个寄存器0x0A85、0x0A88是什么?

    我是否必须在每次获取 SQI 时或链路启动时读取它们?

    我是否应该始终使用扩展读取/写入?

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

    为了实现稳定的操作、我是否需要始终为此 PHY 使用扩展读取/写入? 即使在直接加电之后?

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

    你好、Gokul、

    请在上面回答吗?

    此致

    Annamalai

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

    您好、Annamalai、

    寄存器0x0A85、0xA88是内部信号处理寄存器。 我已要求您阅读它们以获取有关链路稳定性的一些信息、并检查扩展读取/写入是否正常。

    您不需要每次都读取这些寄存器。

    您可以多次读取寄存器0x871并让我知道这些值吗? 我不确定为什么第一次读取时该值不符合预期。

    寄存器0x0001可通过直接方法读取、而不能使用间接方法读取。 应使用间接方法读取0x871。

    --
    此致、
    Gokul。

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

    是(上面给出了这些值)、但奇怪的是、在第一次读取您提到的 SQI 读取后、它恢复了、并提供了一个正确的值。 (不确定)它是如何恢复的!

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

    现在读取0x0871是正确的、它给出了0xcc

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

    这不是第一次进行提示工作、它在某个点停止工作、从未恢复。 但现在、在读取寄存器之后、您提到它可以正常工作。

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

    您好、Annamalai、

    请告诉我您是否能够重新创建问题。 值0xcc 表示 SQI 是6、这真的很好。

    --
    此致、
    Gokul。

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

    你(们)好,Gokul

    我再也不能再现这一问题了,但我担心的是,在扩展模式下读取这些寄存器后,我不知道如何恢复这一问题

    此致

    Annamalai

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

    您好、Annamalai、

    寄存器读取与 SQI 恢复无关、它们是状态寄存器、不会影响任何功能。

    重新创建问题时、不需要再次读取这些寄存器。 请关闭电路板的电源并在链接后尝试读取 SQI 寄存器。

    我猜可能是第一次扩展寄存器读取没有正常进行、但您会更好地猜测值第一次不同的原因。

    --
    此致、
    Gokul。

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

    你(们)好,Gokul

    我无法重现此问题、但当我执行软复位时、SQI 为0xCC、否则现在我在同一电路板中看到的是0xAA、

    但软复位会产生副作用、导致链路断开连接、然后链路断开、我不希望发生这种情况。 如何避免这种情况?

    此致

    Annamalai

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

    你(们)好,Gokul

    您最初提到、当链路断开并再次建立链路时、将执行软复位。  在手动拔下电缆并重新插回电缆时、会发生什么情况?

    如果我拔下电缆,则链路断开,连接电缆时,链路将再次打开,因此我应在何处进行软重置(在链路断开期间)?

    仅当电缆右后连接时、链路才会打开

    BTW 这是我根据基准驱动程序执行的初始化序列:

    /* TI DP83TC812_CS1_0_PHY_ID PHY 的初始化值*
    #define DP83TC812_CS1_0_PHY_ID 0x2000a270
    静态常量 uint16_t dp83812_master_CS1_0_init[][2]={
    0x5230x0001}、
    0x8000xf864}、
    0x8030x1552}、
    0x8040x1a66}、
    0x8050x1f7b}、
    0x81f0x2a88}、
    0x8250x40e5}、
    0x82b0x7f3f}、
    0x8300x0543}、
    0x8360x5008}、
    0x83a0x08e0}、
    0x83b0x0845}、
    0x83e0x0445}、
    0x8550x9b9a}、
    0x85f0x2010}、
    0x8600x6040}、
    0x86c0x1333}、
    0x86b0x3e10}、
    0x8720x88c0}、
    0x8730x0003}、
    0x8790x000f}、
    0x87b0x0070}、
    0x87c0x003F}、
    0x89e0x00aa}、
    0x5230x0000}、
    };

    /* TI DP83TC812_CS1_1_PHY_ID PHY 的初始化值*
    #define DP83TC812_CS2_0_PHY_ID 0x2000a271
    静态常量 uint16_t dp83812_master_CS2_0_init[][2]={
    0x5230x0001}、
    0x81C0x0fe2}、
    0x8720x0300}、
    0x8790x0f00}、
    0x8060x2952}、
    0x8070x3361}、
    0x8080x3D7B}、
    0x83E0x045F}、
    0x8340x8000}、
    0x8620x00E8}、
    0x8960x32CB}、
    0x03E0x0009}、
    0x01f0x4000}、
    0x5230x0000}、
    };



    mx6q_MII_write (mx6qphy_addr0x001f0x8000);//硬复位
    NIC_DELAY (100);
    MMD_WRITE_reg (mx6q0x1f0x08340xc001);//主控模式
    /*写入来自预定义数组的所有寄存器
    *写入结束*/
    mx6q_MII_WRITE (mx6qphy_addr0x001f0x4000);//软复位
    NIC_DELAY (100);

    此致

    Annamalai

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

    你(们)好,Gokul

    由于您最初怀疑扩展读取不起作用、实际上 SQI 返回0、但其他使用扩展读取的测试实际上是可以的。

    现在、我还得到了一个动摇的 SQI、例如0xAA、0xcc、0xee、每次我在其中一个目标上循环通电或热插拔 eth 电缆、但在其他设置中、它工作正常。

    此致

    Annamalai

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

    您好、Annamalai、

    您可以将初始化设置与以下应用手册 https://www.ti.com/lit/an/snla389a/snla389a.pdf 中的设置进行交叉关联

    SQI 值在5、6、7之间切换、这是我们通常看到的情况。 我看不到这方面的任何风险。

    关于电缆插拔和插拔、在连接电缆后进行软复位是很好的。 通常、当热插拔完成时、PHY 接收到的信号由于信号弹跳和其他影响通常是不确定的。 软复位会重新启动培训、并确保器件以可靠的方式连接。

    软复位会导致链路断开、然后产生链路断开。 这方面没有解决方法。

    如果您需要更多详细信息、请告诉我。

    --
    此致、
    Gokul。

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

    由于我们在 BMSR (寄存器0x1)中轮询链路状态、这可能会在一段时间内引起循环链路断开和断开。 当热插拔电缆时(不进行重置),BMSR 会更新一次,因此即使 BMSR 显示链接,我们仍需要进行软重置,并在设计中对此进行处理?

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

    您好、Annamalai、

    如果寄存器0x1将链路状态显示为向上、并且 SQI 良好(>=3)、则无需执行软复位。

    --
    此致、
    Gokul。

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

    你(们)好,Gokul

    因此,如果链路已打开,SQI 小于3,我需要执行软重置?,我需要继续执行软重置,直到 SQI >=3,对不起,您的陈述令我感到困惑

    我仍然不明白何时/在哪里需要执行软复位、第一次您告诉我在链路启动时执行软复位、现在您说如果 SQI 也小于3、则执行软复位。

    此致

    Annamalai

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

    我们只是使用链路连接、通过轮询 BMSR 寄存器来确定电缆是插入还是插入

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

    您好、Annamalai、

    根据我看到的情况、电缆插拔和插拔测试是手动完成的、正如 TC8中指定的那样。
    因此、您将知道电缆是否已插入。

    当您拔出电缆并重新插入时、如果链路已打开且 SQI >=3、则无需执行软重置。 如果链路断开或在电缆热插拔完成后 SQI 小于3、建议执行软重置。

    我希望我这次能够清楚地看到。

    --
    此致、
    Gokul。