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.

[参考译文] DP83867E:通过自举引脚实现的 10Mbps 和 100Mbps 硬件自动协商。

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1512529/dp83867e-hardware-auto-negotiation-for-10-and-100-mbps-by-strap-pins

器件型号:DP83867E

工具/软件:

我无法 通过配置 (strap) 引脚为 10Mbps 和 100Mbps 配置自动协商。 请说明如何为 10Mbps 和 100Mbps RGMII 模式设置自动协商。

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

    您好、

    请使用随附的电子表格进行 DP83867E 自举配置。

    e2e.ti.com/.../slvrbn1a.zip

    谢谢

    David

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

    您好、David:

    1) 我已按照您给出的表格使用 strap 配置引脚为自动协商配置 phy。我需要为 10Mbps 和 100Mbps RGMII 模式配置 strap 配置、因为我在 phy IC 和连接器之间使用 2 线接口。

    2) 当我读取 phy 状态寄存器时, 它显示链路已断开。

    3) 所以我需要通过 MDIO 设置寄存器。 如果是、请给出配置寄存器以设置自动协商 10Mbps 和 100Mbps RGMII 模式的所有步骤。

    谢谢、

    Prasad

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

    drive.google.com/.../view

    您好、David:

    请检查所附的硬件原理图。 是否需要对 strap 配置进行任何更改、以便在 10Mbps 和 100Mbps RGMII 模式下进行自动协商。  

    谢谢、

    Prasad

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

    Prasad

    RX_CTRL 引脚上的 strap 配置控制自动协商启用和禁用。 必须将 RX_CTRL 引脚设置为模式 3 以禁用、并设置模式 4 以启用自动协商。

    若要启用自动协商、上拉为 5.76k、下拉为 2.49k。 我注意到在原理图中、您有一个 6.04k 上拉电阻、您能将其更改为 5.76k 吗?

    LED_1 在 10/100/1000 和 100/1000 之间选择自动协商广播。 对于 10/100/1000 广播、LED_1 搭接模式为模式 1(开路)。 有关 LED 模式 1 实现、请参阅下面的。 我在您的原理图中注意到 LED 二极管和 470 欧姆电阻器互换了、这需要修复。  

    再看看集成式变压器和 RJ45、中心抽头短接在一起、然后通过 0.01uF 电容器下拉至地。 我们建议保持连接到 PHY 一侧的每个中心抽头相互隔离、并通过去耦电容器(建议使用 0.1µF) 接)接地、如下所示。

    您是否还可以转储扩展寄存器 0x6E 和 0x6F? 这将验证 strap 配置是否正确完成。

    谢谢

    David

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

    尊敬的 David:

    请告诉我如何将 RX_CTRL 引脚设置为模式 3 以禁用、如何设置模式 4 以启用自动协商。 正如您之前提到的、我做了其他更改。

    谢谢、

    Prasad  

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

    尊敬的 David:

    1) 请告诉我如何 将 RX_CTRL 引脚设置为模式 3 以禁用、如何设置模式 4 以启用自动协商。 因为根据您 在该相同配置中建议的 DP83867E 自举配置的共享电子表格、即上拉电阻为 5.76k、下拉电阻为 2.49k。  我已经做过您之前提到的其他更改。  

    2) 除了由搭接引脚设置的自动协商之外、我还需要为 10Mbps 和 100Mbps RGMII 自动协商设置寄存器。 按软件 (MDIO)。如果是、请建议我需要为其设置哪些寄存器。

    谢谢、

    Prasad  

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

    Prasad

    要启用自动协商、请将 RX_CTRL 引脚配置为模式 3 ->  5.76k 上拉电阻和 2.49k 下拉电阻。

    要禁用自动协商、请将 RX_CTRL 引脚配置为模式 4 -> 2.49k 上拉和开路下拉。

    PHY 配置为启用自动协商后、一旦与其链路伙伴建立链路、它就会自动开始自动协商。 无需通过 MDIO 总线配置自动协商。

    谢谢

    David

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

    David、

    我的问题是如何启用模式 4 以及如何禁用模式 3、但您给出了反向答案、因为在前面的讨论中、您建议我需要将模式 4 设置为 10 Mbps 和 100 Mbps 自动协商。

    谢谢、

    Prasad  

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

    Prasad

    抱歉、我的回答中有一个拼写错误。 必须使用引脚配置 (strap) 来启用/禁用自动协商。  

    要启用自动协商、请将 RX_CTRL 引脚配置为模式 3 ->  5.76k 上拉电阻和 2.49k 下拉电阻。

    要禁用自动协商、请将 RX_CTRL 引脚配置为模式 4 -> 2.49k 上拉和开路下拉。

    如果通过 strap 配置选项禁用了自动协商功能、则 MDIO 无法重新启用自动协商功能。

    谢谢

    David

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

    您好、David:

    1) 我正在使用 sja1105Q 交换机 (MAC)、将其设置为 100Mbps RGMII 模式(静态配置)。

    2) 现在我已将 DP83867E (PHY) 设置为 启用自动协商、将 RX_CTRL 引脚配置为模式 3 ->  5.76k 上拉和 2.49k 下拉。

    我获得的输出为:                

    PHY_ADDR 0 BMSR (0x0001):0x7949

    PHY_ADDR 0 phy STS (0x0011):0x0302

    PHY_ADDR 3 BMSR (0x0001):0x7949

    PHY_ADDR 3 phy STS (0x0011):0x0302

    那么、可能的问题是什么。 请告知我我的自动协商是否已正确完成、或者我需要遵循哪些步骤来解决问题。

    谢谢你

    Prasad

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

    Prasad

    寄存器 0x0001 的值为 0x7949、因此启用了自动协商但未完成、PHY0 和 PHY3 未建立链路。  

    您可以将寄存器 0x0000 转储到 0x001F、0x006E 和 0x006F 吗?

    此外、您还可以读取寄存器 0x0031 第 0 位吗? 如果设置了位 0(启用了镜像模式)、您能否向其写入 0 并查看是否能够建立链路?

    谢谢

    David  

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

    您好、David:

    请检查 2 个端口的所有寄存器值。

    PHY_ADDR 0 寄存器 0x0000:0x1140

    PHY_ADDR 0 寄存器 0x0001:0x7949

    PHY_ADDR 0 寄存器 0x0002:0x2000

    PHY_ADDR 0 寄存器 0x0003:0xA231

    PHY_ADDR 0 寄存器 0x0004:0x0181

    PHY_ADDR 0 寄存器 0x0005:0x0000

    PHY_ADDR 0 寄存器 0x0006:0x0064

    PHY_ADDR 0 寄存器 0x0007:0x2001

    PHY_ADDR 0 寄存器 0x0008:0x0000

    PHY_ADDR 0 寄存器 0x0009:0x0300

    PHY_ADDR 0 寄存器 0x000A:0x0000

    PHY_ADDR 0 寄存器 0x000B:0x0000

    PHY_ADDR 0 寄存器 0x000C:0x0000

    PHY_ADDR 0 寄存器 0x000D:0x0000

    PHY_ADDR 0 寄存器 0x000E:0x0000

    PHY_ADDR 0 寄存器 0x000F:0x3000

    PHY_ADDR 0 寄存器 0x0010:0x5048

    PHY_ADDR 0 寄存器 0x0011:0x0002

    PHY_ADDR 0 寄存器 0x0012:0x0000

    PHY_ADDR 0 寄存器 0x0013:0x0000

    PHY_ADDR 0 寄存器 0x0014:0x29C7

    PHY_ADDR 0 寄存器 0x0015:0x0000

    PHY_ADDR 0 寄存器 0x0016:0x0000

    PHY_ADDR 0 寄存器 0x0017:0x0040

    PHY_ADDR 0 寄存器 0x0018:0x6150

    PHY_ADDR 0 寄存器 0x0019:0x4404

    PHY_ADDR 0 寄存器 0x001A:0x0002

    PHY_ADDR 0 寄存器 0x001B:0x0000

    PHY_ADDR 0 寄存器 0x001C:0x0000

    PHY_ADDR 0 寄存器 0x001d:0x0000

    PHY_ADDR 0 寄存器 0x001E:0x0002

    PHY_ADDR 0 寄存器 0x001F:0x0000

    PHY_ADDR 0 寄存器 0x006E:0x0000

    PHY_ADDR 0 寄存器 0x006F:0x3000

    PHY_ADDR 3 寄存器 0x0000:0x1140

    PHY_ADDR 3 寄存器 0x0001:0x7949

    PHY_ADDR 3 寄存器 0x0002:0x2000

    PHY_ADDR 3 寄存器 0x0003:0xA231

    PHY_ADDR 3 寄存器 0x0004:0x0181

    PHY_ADDR 3 寄存器 0x0005:0x0000

    PHY_ADDR 3 寄存器 0x0006:0x0064

    PHY_ADDR 3 寄存器 0x0007:0x2001

    PHY_ADDR 3 寄存器 0x0008:0x0000

    PHY_ADDR 3 寄存器 0x0009:0x0300

    PHY_ADDR 3 寄存器 0x000A:0x0000

    PHY_ADDR 3 寄存器 0x000B:0x0000

    PHY_ADDR 3 寄存器 0x000C:0x0000

    PHY_ADDR 3 寄存器 0x000D:0x0000

    PHY_ADDR 3 寄存器 0x000E:0x0000

    PHY_ADDR 3 寄存器 0x000F:0x3000

    PHY_ADDR 3 寄存器 0x0010:0x5048

    PHY_ADDR 3 寄存器 0x0011:0x0302

    PHY_ADDR 3 寄存器 0x0012:0x0000

    PHY_ADDR 3 寄存器 0x0013:0x0040

    PHY_ADDR 3 寄存器 0x0014:0x29C7

    PHY_ADDR 3 寄存器 0x0015:0x0000

    PHY_ADDR 3 寄存器 0x0016:0x0000

    PHY_ADDR 3 寄存器 0x0017:0x0040

    PHY_ADDR 3 寄存器 0x0018:0x6150

    PHY_ADDR 3 寄存器 0x0019:0x4404

    PHY_ADDR 3 寄存器 0x001A:0x0002

    PHY_ADDR 3 寄存器 0x001B:0x0000

    PHY_ADDR 3 寄存器 0x001C:0x0000

    PHY_ADDR 3 寄存器 0x001d:0x0000

    PHY_ADDR 3 寄存器 0x001E:0x0002

    PHY_ADDR 3 寄存器 0x001F:0x0000

    PHY_ADDR 3 寄存器 0x006E:0x0000

    PHY_ADDR 3 寄存器 0x006F:0x3000

    此外、我读取了寄存器 0x0031 获取值 0x302 表示不启用端口镜像。

    谢谢、

    Prasad

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

    您好 Prasad、  

    大卫目前在城外,所以我将接管这种情况。  

    根据寄存器转储、寄存器 05h 为 0x00。 这表明 PHY 无法识别 100BASE-TX 上链路伙伴的广播(位 7 和 8)。  

    您能否尝试启用 10/100/1000Mbps 自动协商、看看 PHY 是否可以与链路伙伴建立链路?

    此致、
    j

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

    尊敬的 J:

    正如之前与 David 讨论的、 我在 phy 和连接器之间使用 2 线对通信。 我想通过配置 (strap) 引脚实现 10Mbps 和 100Mbps 的自动协商功能。 根据转储寄存器 值、我是否需要更改硬件配置 (strap) 引脚以实现 100Mbps 和 10Mbps 自动协商。 因为 David 建议我如果配置 (strap) 引脚完成自动协商、那么无需通过 MDIO 配置 phy。

    我的问题也是根据数据表、PHY 使用 IEEE 802.3u、交换机 (SJA1105Q) 具有 IEEE 802.3 协议、但支持 10,100,1000Mbps 速度。协议差异是否会导致任何问题。   

    请帮助我解决这个问题、它现在对我们来说非常重要。

    谢谢、

    Prasad

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

    您好 Prasad、  

    此外、我的问题是根据数据表、PHY 使用 IEEE 802.3u、交换机 (SJA1105Q) 具有 IEEE 802.3 协议但支持 10,100,1000 Mbps 速度。是否由于协议差异而发生任何问题。   [/报价]

    802.3u 是 802.3 的子集、因此不会出现问题。  

    我为混淆而道歉、但我们的绑定选项支持 10/100/1000 或 100/1000 的自动协商。 我们没有仅用于 10/100 广播的 strap 配置选项。  

    若要仅支持 10 和 100、您必须在配置 (strap) 上启用 10/100/1000 并禁用寄存器 0x0009 的位 9 和 8。 目前、您的寄存器转储显示寄存器 0x0009 为 0x0300、这意味着这些位已开启。  

    此致、
    j

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

    尊敬的 J:

    我的电路板已经针对 2 线制接口而设计、因此能够启用  1000/100/10Mbps 的自动协商。 如果是、则说明如何。

    谢谢、

    Prasad

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

    您好 Prasad、  

    正如 David 说的、将 LED_1 引脚搭接至模式 1 或 2(具体取决于您偏好的 RGMII TX 时钟偏差)会选择自动协商广播为 10/100/1000。
    启用自动协商本身由 RX_CTRL 引脚控制、将其配置到模式 3 将启用自动协商。  
    您的寄存器转储已经显示已启用自动协商(寄存器 0x0000 的第 12 位为 1)。
    但似乎自动协商未完成、因此未建立链路。  
    请遵循下表以了解建议的电阻设置:


    此致、
    j

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

    尊敬的 J:

    现在、我的硬件工作正常、感谢您的帮助。  

    目前、我正在为 phy 执行环回测试(模拟,数字,PCS)、但其无法正常工作。

    我遵循 TI 给出的指南、如下所示:

    注:我同时测试了 10 和 100 Mbps 的代码。

    代码:

    mdio_write (phy_addr、0x001F、0x8000);

    HAL_delay (100);

    //步骤 2:禁用自动协商、强制 10 Mbps

    mdio_write (phy_addr、0x0000、0x0100);//(1) 速度选择

    //步骤 3:启用模拟环回(假定为默认值)

    MDIO_WRITE (phy_addr、0x0016、0x0003);//(2) 数字环回

    //步骤 4:强制 MDI 模式(对于 10/100Mbps)

    MDIO_WRITE (phy_addr、0x0010、0x5008);

    //步骤 5:配置环回寄存器

    MDIO_WRITE (phy_addr、0x00FE、0xE720);

    HAL_DELAY (10);

    //步骤 6:启用数据包生成、保留模拟环回

    MDIO_WRITE (phy_addr、0x0016、0x5003);//(3) 数据包生成器+数字环回

    HAL_delay (1000);//等待 PRBS 发送数据包

    //锁定字节计数

    MDIO_WRITE (phy_addr、0x0072、0x0201);

    //读取锁定状态、数据包计数和错误计数

    uint16_t LOCK_STATUS = mdio_read (phy_addr、0x0017);

    uint16_t packet_count_1 = mdio_read (phy_addr、0x0071);

    uint16_t ERROR_COUNT = mdio_read (phy_addr、0x0072);

    //启用连续计数

    MDIO_WRITE (phy_addr、0x0016、0xD004);

    //更新数据包计数器

    MDIO_WRITE (phy_addr、0x0072、0x0201);//(4)

    uint16_t packet_count_2 = mdio_read (phy_addr、0x0071);//(5)

    HAL_DELAY (1000);//可选:重复以观察计数器递增

    MDIO_WRITE (phy_addr、0x0072、0x0201);

    uint16_t packet_count_3 = mdio_read (phy_addr、0x0071);

    //可选软复位

    mdio_write (phy_addr、0x001F、0x4000);

    //显示结果

    printf(“PHY Addr:0x%02x\n“、phy_addr);

    printf(“PRBS 锁定状态:0x%04X\n“、LOCK_STATUS);

    printf(“初始数据包计数:%u\n“、packet_count_1);

    printf(“更新的数据包计数:%u\n“、packet_count_2);

    printf(“最终数据包计数:%u\n“、packet_count_3);

    printf(“错误计数:%u\n“、ERROR_COUNT);

    if (LOCK_STATUS &(1 << 11)){

    printf(“PRBS 测试成功。\n“)

    }其他{

    printf(“PRBS 测试失败。\n“)

    }

    输出:

    PHY 地址:0x00

    PRBS 锁定状态:0x0000

    初始数据包计数:2.

    更新了数据包计数:2.

    最终数据包计数:2.

    错误计数:513

    PRBS 测试失败。

    请让我知道我在哪里做了错误的步骤。

    谢谢、

    Prasad

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

    您好 Prasad、  

    此处的测试设置是什么?
    您是否将相同的 PHY 置于环回模式并生成 PRBS 数据包?

    请告诉我。  

    此致、
    j

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

    尊敬的 J:

    是的。。 我为回送测试 设置了相同的 phy、因为在故障排除文档中它不需要链路伙伴(模拟,数字,PCS 回送测试)。

    谢谢、

    Prasad  

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

    您好 Prasad、  

    内部环回模式不会测量片上 PRBS 数据包生成。  
    您所面临的必须执行环回模式的问题到底是什么?

    此致、
    j

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

    尊敬的 J:

    该环回测试的目的是、我需要编写 PHY 的测试报告。 因此、请建议我如何对 phy 执行环回测试。

    谢谢你。

    Prasad

      

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

    您好 Prasad、

    使用环回模式是正确的。  
    您可以让测试仪向 PHY 发送数据包、PHY 可以环回这些数据包。 您可以检查链路伙伴、以查看是否以这种方式存在任何数据包错误。

    如果您对此有任何疑问、敬请告知。

    此致、

    j