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.

[参考译文] DP83822HF:设置寄存器的 RMII 主时钟

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/848575/dp83822hf-setting-rmii-master-clock-from-registers

器件型号:DP83822HF

您好!

在我们的定制板上、我们意外省略了将 RX_DV 绑定到模式3以在 RD3/GPIO3上提供 RMII 主时钟、因此我尝试通过设置"RMII 主模式参考时钟:  IOCTRL1中的50MHz"和"根据位[14:12]"的时钟基准"以及 RCSR 中的"RMII 模式"。

我已经读过有关这一点的各种线程、并尝试遵循给出的建议、但在我的情况下、 我最终在 RD3/GPIO3上产生了138Mhz 正弦波。

如果我映射"MAC IF Clock"、如果我映射  "XI Clock"或"内部参考时钟:25MHz"、我会得到相同的结果、我得到25MHz。

如果我映射到我们板上有一个未连接测试点的 COL/GPIO2、那么我也会获得相同的结果。

我要遵循的步骤是:

软件复位 PHY、 关闭 IEEE 器件、设置寄存器、发出数字复位并为 PHY 上电。 输出如下所示。

有什么关于我做错的事情的想法吗?

此致、

Andy

PHY 完整性检查读取 ID 寄存器:

PHY_IDR1 (寄存器0x02)= 0x2000应为0x2000
PHY_IDR2 (寄存器0x03)= 0xA240应为0xA240

起始值
------------
PHY_MBCR  (寄存器0x00)= 0x3000
PHY_BMSR  (寄存器0x01)= 0x7849
PHY_IDR1  (寄存器0x02)= 0x2000应为0x2000
PHY_IDR2  (寄存器0x03)= 0xA240应为0xA240
PHY_ANAR  (寄存器0x04)= 0x00A1
PHY_CR1   (寄存器0x09)= 0x0000
PHY_CR2   (寄存器0x0A)= 0x0100
PHY_CR3   (寄存器0x0B)= 0x1000
PHY_STS   (寄存器0x10)= 0x0002
PHY_SCR   (寄存器0x11)= 0x0108
PHY_MISR1  (寄存器0x12)= 0x0000
PHY_MISR1  (寄存器0x13)= 0x0800
PHY_RCSR  (寄存器0x17)= 0x0041
PHY_CR   (寄存器0x19)= 0x8001
PHY_IOCTRL1 (寄存器0x0462)= 0x0001
PHY_IOCTRL2 (寄存器0x0463)= 0x0000
PHY_SOR1  (寄存器0x0467)= 0x0F4C
PHY_SOR2  (寄存器0x0468)= 0x0000
------------
复位 PHY
PHY_RCR (寄存器0x1F)= 0x0000
将位15置位
PHY_RCR (寄存器0x1F)= 0x8000
等待复位清零
PHY_RCR (寄存器0x1F)= 0x0000

关闭 PHY 电源
PHY_MBCR (寄存器0x00)= 0x3000

设置位11
PHY_MBCR (寄存器0x00)= 0x3800

复位和断电后
------------
PHY_MBCR  (寄存器0x00)= 0x3800
PHY_BMSR  (寄存器0x01)= 0x7849
PHY_IDR1  (寄存器0x02)= 0x2000应为0x2000
PHY_IDR2  (寄存器0x03)= 0xA240应为0xA240
PHY_ANAR  (寄存器0x04)= 0x00A1
PHY_CR1   (寄存器0x09)= 0x0000
PHY_CR2   (寄存器0x0A)= 0x0100
PHY_CR3   (寄存器0x0B)= 0x1000
PHY_STS   (寄存器0x10)= 0x0002
PHY_SCR   (寄存器0x11)= 0x0108
PHY_MISR1  (寄存器0x12)= 0x0000
PHY_MISR1  (寄存器0x13)= 0x0000
PHY_RCSR  (寄存器0x17)= 0x0041
PHY_CR   (寄存器0x19)= 0x8001
PHY_IOCTRL1 (寄存器0x0462)= 0x0001
PHY_IOCTRL2 (寄存器0x0463)= 0x0000
PHY_SOR1  (寄存器0x0467)= 0x0F4C
PHY_SOR2  (寄存器0x0468)= 0x0000
------------

设置 RMII 模式
PHY_RCSR (寄存器0x17)= 0x0041
强制 RMII、将位5置位
PHY_RCSR (寄存器0x17)= 0x0061

更改 RXD3/GPIO3分配
PHY_IOCTRL1 (寄存器0x0462)= 0x0001
强制 RXD3/GPIO 为0x4301
PHY_IOCTRL1 (寄存器0x0462)= 0x4301

数字复位 PHY
PHY_RCR (寄存器0x1F)= 0x4000
等待复位清零
PHY_RCR (寄存器0x1F)= 0x0000

为 PHY 加电
PHY_MBCR (寄存器0x00)= 0x3800
PHY_MBCR (寄存器0x00)= 0x3000

最终值
------------
PHY_MBCR  (寄存器0x00)= 0x3000
PHY_BMSR  (寄存器0x01)= 0x7849
PHY_IDR1  (寄存器0x02)= 0x2000应为0x2000
PHY_IDR2  (寄存器0x03)= 0xA240应为0xA240
PHY_ANAR  (寄存器0x04)= 0x00A1
PHY_CR1   (寄存器0x09)= 0x0000
PHY_CR2   (寄存器0x0A)= 0x0100
PHY_CR3   (寄存器0x0B)= 0x1000
PHY_STS   (寄存器0x10)= 0x0002
PHY_SCR   (寄存器0x11)= 0x0108
PHY_MISR1  (寄存器0x12)= 0x0000
PHY_MISR1  (寄存器0x13)= 0x0000
PHY_RCSR  (寄存器0x17)= 0x0061
PHY_CR   (寄存器0x19)= 0x8001
PHY_IOCTRL1 (寄存器0x0462)= 0x4301
PHY_IOCTRL2 (寄存器0x0463)= 0x0000
PHY_SOR1  (寄存器0x0467)= 0x0F4C
PHY_SOR2  (寄存器0x0468)= 0x0000
------------
初始化 PHY 完成

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

    尊敬的 Andy:

    不需要 IEEE 断电。 请尝试以下操作:软件复位、设置寄存器、数字复位。 确保也使用了25MHz 时钟。

    谢谢、

    Nikhil

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

    您好、 Nikhil、

    结果是复位问题。 我们在电路板上有一个非常混乱的复位信号(多个窄上升沿)、现在我们已经解决了这个问题、现在我们有50MHz。

    此致、

    Andy