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:DP83867E 配置

Guru**** 2535450 points
Other Parts Discussed in Thread: DP83867E

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1395306/dp83867e-dp83867e-configuration

器件型号:DP83867E

工具与软件:

我的当前电路板具有一个 DP83867E 10-100-1000以太网 PHY、该 PHY 由 AMD MicroBlaze 处理器(嵌入在 FPGA 中)控制。 我正在为电路板开发上电、自检内置测试。 到目前为止、我可以配置 PHY 并将其置于内部环回模式 (通过向 地址0x0000的基本模式控制寄存器写入0x6100)中来验证发送和接收数据包是相同的。 就检查 PHY 而言、这已经足够好(现在)。

接下来我要做的就是使 PHY 脱离回送模式(通过向 基本模式控制寄存器写入0x2100)、继续测试电路板的其它功能。 问题是第二次写入 基本模式控制寄存器会导致我的 BareMetal MicroBlaze 代码挂起(就像 MDIO 写入函数卡在循环中、等待 MDIO 接口可用一样)。 我曾尝试过在重写 基本模式控制寄存器前重写芯片、但没有什么区别。

我的问题是改变 基本模式控制寄存器中的值是否有一个技巧。 除了 MDIO 写入、它还涉及什么? 我试着等待几秒钟、以便 基本模式控制寄存器的第二次写入完成、但是这并没有产生任何影响。

我感谢任何人可能提供的任何帮助。

 

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

    您好、Morris:

    您可以向我发送有关如何配置 BIST 和环回的脚本吗?

    ——

    谢谢!

    Hillman Lin

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

    尊敬的 Hillman:

    我的代码是全部 BareMetal MicroBlaze (Xilinx)代码。 我有 Mido_read 和 MDIO_write 函数。 为了执行回送测试、我执行以下操作:

    1-读取 PHY ID 寄存器2、以验证 MDIO 接口是否已启动并正在运行。 读取的0xA231是正确值。

    2-配置 PHY:内部环回、100Mbps、无自动协商、全双工:MDIO_WRITE 0x6100到基本模式控制寄存器(地址0x00)中。

    我发送一个数据包、然后正确接收它。 即使在 RJ45连接器上有外部环回时也能正常工作(且 BMCR = 0x2100)

    4-我尝试使 PHY 脱离环回模式: MDIO_WRITE 0x2100到 基本模式控制寄存器。

    ...这是它被挂起的地方,就像第二次写入 基本模式控制寄存器混乱的 MDIO 接口。 如果您有任何其他问题、敬请告知。 谢谢!

    Morris

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

    P.S.芯片的配置引脚均未绑定(在电路板上。

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

    您好、Morris:

    感谢您分享这些信息。

    我想我现在有一个更好的画面。 如果我的理解有误、请更正我。

    • 目前、  当您通过寄存器0x0000启用 MII 环回时、可以看到 SoC 侧的通信
    • 禁用 MII 环回后、将无法看到通信

    如果我的理解是正确的、我想查看以下测试设置:

    • 您的当前设置是什么? 您使用的链路伙伴和电缆长度是多少? 方框图将会很有帮助
    • 如果可能、您能否在没有和通信的情况下进行检查、是否能够看到建立的链路?
    • 您能否还提供从寄存器0x0000到0x001F 的寄存器日志而不出现环回情况?

    ——

    此致、

    Hillman Lin

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

    尊敬的 Hillman:

    我发现出了什么问题:

    我按此顺序配置了 AXI-Stream FIFO、TEMAC IP 内核和 DP83867E (通过 TEMAC)。 AXI-Stream FIFO 的配置包括完全复位、而完全复位又会复位 TEMAC (我不知道 TEMAC 通过 AXI-Stream FIFO 实现复位)。 昨天、我稍微重新排列了代码、AXI-Stream FIFO 的配置在配置 TEMAC 并执行回送之后转移到、 环回完成后、AXI-Stream FIFO 的配置会使 TEMAC 复位并停止 MDIO 时钟、导致 MDIO 接口停止运行、使  DP83867E 无法 退出环回模式。 我将 AXI-Stream FIFO 的配置移回 TEMAC 配置前、然后问题得以解决。 感谢您的参与。

    Morris

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

    尊敬的 Hillman:

    看起来我说得太快了。 MDIO 接口不再挂起、但是当我尝试让芯片脱离环回模式时、通过 向基本模式控制寄存器(地址0x00)写入0x2100、该寄存器的值仍然不变。 仍然显示0x6100。 请提供建议。 谢谢!

    Morris

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

    我不使用间接寻址。 将0x6100写入 基本模式控制寄存器(地址0x00)后、寄存器内容为:

    注册|内容

     0x0000:6100
     0x0001:7949
     0x0002:2000
     0x0003:A231
     0x0004:01E1
     0x0005:0000
     0x0006:0064
     0x0007:2001
     0x0008:0000
     0x0009:0300
     0x000A:0000

     0x000D:0000
     0x000E:0000
     0x000F:3000
     0x0010:5048
     0x0011:6B02
     0x0012:0000
     0x0013:0040
     0x0014:29C7
     0x0015:0000
     0x0016:0000
     0x0017:0040
     0x0018:6150
     0x0019:4444
     0x001A:0002.

     0x001E:0002
     0x001F:0000

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

    您好、Morris:

    如果将0x0000配置为3100、它是否仍会在寄存器0x0000上为6100。

    我想问一下您是如何配置寄存器的吗? 您的软件是否在每次尝试配置寄存器时以某种方式覆盖了写入?

    如果您将寄存器0x0004写入0181、是否仍看到01E1或0181?

    ——
    此致、

    Hillman Lin

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

    尊敬的 Hillman:

    您的直觉是正确的。 我在 MDIO_Write 函数中有一个未初始化的变量。 一旦我在声明中对其进行了初始化、问题就消失了。 谢谢!

    Morris