| |--- for_each_available_child_of_node(np, child) //自动扫描具有空"reg"属性的PHY | |--- if (of_find_property(child, "reg", NULL)) //跳过具有reg属性集的PHY | | |--- continue | | | |--- for (addr = 0; addr < PHY_MAX_ADDR; addr++) //循环遍历扫描 | |--- if (m...
SEND PREAMBLE状态 在本状态时,本模块通过MDIO接口发送32bit的MDIO通信前缀“1”,若mdio_top拉高是的读寄存器使能信号,则进入READ REG状态,若为写寄存器使能信号则进入WRITE REG状态。 READ REG状态 在本状态时,本模块根据mdio_top模块输入的PHY芯片地址phy_address和寄存器地址register_address,按照MDIO通信协议从PHY芯...
同样mdio中读取的reg只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个 PHY 芯片寄存器地址空间为 5 位,地址 0-31 共 32 个寄存器, IEEE 定义了 0-15 这 16 个寄存器的功能, 16~31 这 16 个寄存器由厂商自行实现。也就是说不管你用的哪个厂家的 PHY 芯片,其中 0~15 这 16 个寄存器是...
左右滑动查看完整内容 //configuration for phy0write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS),0x1e,0x40C0);// EXT 40C0write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CFG_PHY_OFFSET_ADDRESS),0x1f,0x0030);write_phyreg((ECAT_CFG_CH0_PHY_ADDRESS - ECAT_CF...
而DVDD这个电,一般是核电,主要给PHY内部核供电,典型电压1.0/1.1/1.4等,这部分注意一点就是,PHY一般都会提供一个内部LDO或DC-DC,将3V3转成DVDD需要的电压,例如上面的AVDD_LDO就是输入电压,REG_OUT就是输出电压,典型应用电路如下: 图8‑21 DVDD供电电路 ...
ethernet-phy@0{ reg= <0x00>;--PHY芯片地址。phandle= <0x6a>; }; }; }; 5.2 网络驱动源码解析 如下是stm32 gmac驱动涉及到的文件,相关的驱动模块有: stm32_dwmac: phy_module:注册struct phy_driver,在GMAC驱动里面根据读取到的ID匹配。
->if(addr <0) scanphys =true;continue;// 如果未获得子节点的"reg"属性,则在后面再启用扫描可能存在的PHY的,然后注册 -> of_mdiobus_register_phy(mdio, child, addr) }// 创建并注册PHY设备 -> is_c45 = of_device_is_compatible(child,"ethernet-phy-ieee802.3-c45")//判断设备树中的PHY的属性是...
vio_0u_vio(.clk(clk),// input wire clk.probe_out0(req),// output wire [0 : 0] probe_out1.probe_out1(phy_addr),// output wire [4 : 0] probe_out2.probe_out2(reg_addr),// output wire [4 : 0] probe_out3.probe_out3(data_phy)// output wire [15 : 0] probe_out4);...
因为mdio中读取的phy只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个,但这是从读取的方式判断的,而mdio读取是依照phy芯片本身地址空间就5为。 为什么说reg地址最多32个 同样mdio中读取的reg只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个 ...
使用mii dump命令可以查看phy的0~5的6个寄存器(使用mii read命令不存在这个说法,所有寄存器都能看 )。因为我们的PHY地址是0x04,所以mii dump里的addr我们填0x04,reg部分我们从0填到5就能看全所有的寄存器了。现在是插着网线的,所以可以看到“(0004:0004) 1. 2 = 1 link status”表示link成功了,拔掉网线这里...