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.

[参考译文] DP83822H:自动协商始终失败

Guru**** 2535750 points
Other Parts Discussed in Thread: DP83822H

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/951135/dp83822h-auto-negotiation-always-failed

器件型号:DP83822H

大家好、

我在设计的电路板中使用 DP83822H。 自举引脚(RX_D3、RX_D1、RX_D0、CRS_DV)直接连接到 MCU、无需外部上拉或下拉电阻器。 LED_0引脚连接到外部上拉电阻器(2.49K 欧姆)。 其他则保持未连接状态。  

我想在 RMII 主模式下使用它、所以我将寄存器 IOCTRL1 (0x462)的值设置为0x4301、将 CR2 (0x0A)的值设置为0x0104、将 RCSR (0x17)的值设置为0x0021。

在值0x01E1中设置自协商 ANAR (0x04)、在值0x3100中设置 BMCR (0x00)、在值0x8001中设置 PHYCR (0x19)。

我们发现 BMSR (0x01)自协商结束(位5)一直为0、链路状态(位2)读为0。  

下面是我读取的寄存器:

BMCR (0x00) 0x3100

BMSR (0x01) 0x7849

Anar (0x04) 0x01E1

ANLPAR (0x05) 0x0000

CR1 (0x09) 0x0000

PHYSTS (0x10) 0x0002

PHYSCR (0x11) 0x0108

MISR1 (0x12) 0x0000

MISR2 (0x13) 0x0800

RCSR (0x17) 0x0021

PHYCR (0x19) 0x8001

SOR1 (0x467) 0x5FCF

SOR2 (0x468) 0x0004

为什么自动协商过程无法完成并进行连接? 我是否错过了任何内容或设置错误?

谢谢。

桑迪

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

    您好、Sandy、

    我正在检查此问题、应该在一天或两天内回答。 同时,您能否执行以下操作:

    1.检查 Rx_D3处是否存在50MHz 时钟?

    2.配置完成后,写入:寄存器<0x001F>= 0x4000并检查是否显示链接。

    --

    此致、

    Vikram

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

    您好、Vikram、

    感谢您的回复。

    没有通过 RX_D3的50MHz 时钟输出。

    添加数字重新启动(寄存器0x1F)=0x4000、我仍然无法连接、或者没有50MHz 时钟输出。

    谢谢。

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

    您好、Sandy、

    看起来 Phy 没有编程到 RMII 主模式。 请分享寄存器0x0467和0x0468的值。

    --

    此致、

    Vikram

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

    您好、Vikram、

    我测试了第二块电路板、并进行了与第一块电路板完全相同的配置。 这两个板的情况相同、即自动协商无法完成并链接。  

    当读取寄存器 SOR1 (0x467)和 SOR2 (0x468)时、它具有不同的值。 电路板1在 SOR1中具有0x5FCF、在 SOR2中具有0x0004、而电路板2在 SOR1中具有0x5FCF、在 SOR2中具有0x0000。

    电路板1  

    0x467 (SOR1) 0x5FCF

    0x468 (SOR2) 0x0004

    电路板2

    0x467 (SOR1) 0x5FCF

    0x468 (SOR2) 0x0000

    --更新----

    我在 RX_DV 引脚上放置了一个上拉和一个下拉电阻器来使模式3中的自举。

    读取寄存器 SOR1 (0x467)、SOR2 (0x468)并获取0x5FEF、0x0004。

    RX_DV 处于模式3、这是 RMII 主控模式。 但在寄存器配置之前或之后、RX_D3仍然没有50MHz 时钟输出。

    谢谢。

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

    您好、Sandy、

    您能否还检查 Rbias 引脚和引脚8的电压?

    --

    此致、

    Vikram

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

    您好、Vikram、

    RBIAS 的电压为0.96V、引脚8 (INT/PWDN_N)为3.27V。

    RBIAS 和 GND 之间有一个4.87K 欧姆1%的电阻器、引脚8 (INT/PWDN_N)上有一个10K 欧姆的上拉电阻器。

    --更新----

    我禁用 MCU 中的所有内部上拉和下拉电阻器。 再次读取0x467、0x468、然后得到0x0FEF、0x0000、这是我的预期值。

    RX_D3仍然没有50MHz 时钟输出、相反、我在其上测量到一个61MHz 信号。  

    谢谢。

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

    您好、Sandy、

    我怀疑加电期间出现了问题。 请分享以下内容:

    AVDD 和 VDDIO 的电压电平

    2.寄存器0x0421的值。

    --

    此致、

    Vikram

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

    您好、Vikram、

    AVDD 的电压为3.31V、VDDIO 的电压为3.32V。

    我注意到数据表中没有描述寄存器0x421、因此我读取了0x421和与功率模式相关的其他寄存器。

    BMCR<0x00>= 0x3100

    PHYSCR<0x11>= 0x0108

    BOSCH = 0x0100

    DPDWN<0x428>= 0x0000

    0x421>= 0x0000

    希望这些会有所帮助。

    谢谢。

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

    您好、Sandy、

    寄存器0x0421是内部调试寄存器、其值为0x0000表示 PHY 正在检测到 AVDD 和 VDDIO 为1.8V。 您能否在配置中添加以下寄存器并查看您是否获得50MHz 时钟:

    REG<0x041F>= 0x1C00。

    --

    此致、

    Vikram

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

    您好、Vikram、

    我在配置中添加了寄存器0x041F、RX_D3开始具有50MHz 时钟输出。

    现在、我再次读取寄存器0x0421并获取0x0007。 自协商和链路状态都正常。

    但我想知道 PHY 为什么会检测到不同的电压?

    这是否意味着我们的硬件存在严重的噪声干扰?

    寄存器0x041F 的设置是否会改变检测到的电压结果、以便50MHz 时钟开始输出?

    感谢你的帮助。