周立功LPC1700开发板 以太网 MAC初始化部分代码:
1 /* 侦测PHY 地址 */
2 for (i = 0; i < 32; i++)
3 {
4 PHYID = Read_PHY(i, 2);
5 if (PHYID == 0x0181)
6 break;
7 }
8
9 if (i >= 32)
10 while (1);
11
12 PHYID = i;
问题:
1、 第4行 Read_PHY(i, 2) 应该是读 PHY 寄存器的数据, i 应该就是 PHY ADDR, 2 应该是PHY 芯片内部寄存器地址。
那么, 为什么 PHY 芯片内部寄存器地址 是 2 呢? 与硬件有关?
2、 第5行 if (PHYID == 0x0181) 应该是指 MAC_MRDD == 0x0181,而 MAC_MRDD 是读取 PHY寄存器的内容。
那么,这个 0x0181 是怎么来的?为什么是 0x0181?
3、 第9行 if (i >= 32) while (1); 应该是在 0-31 PHY中 没寻到“目标” 停留于此。
那么,程序如何跳出这重循环。初始化不成功?
自己对 PHY芯片了解比较少,对整个 Ethernet 也了解比较少,片段式的分析可能有些局限,期望了解的给解解惑,不胜感激。
|