您好!
在我们的定制板上、我们意外省略了将 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 完成