大家好、
在我们的新定制板上、我们决定使用 DP83TD510E 芯片。
多次尝试建立通信后、我无法集成该芯片。 请注意、我们仅在第二个接口的 RMII 中使用此芯片(因此仅使用 RMII2。)
他就是我试过的:
- 保留 DTS 文件与 ICEV2相同、希望 RMII1会失败、但 RMII2会成功。
- 我将使用 NRST 对 PHY 芯片进行电源循环、持续30us
- 我尝试 使用命令"MII Read 0-1F 0"尝试读取所有可用的 MDIO 器件(无应答)
在探测 MDIO_CLK 时、我在使用 MII 读取函数时看不到时钟、但在引导 Linux 时可以看到1MHz 尝试的一些时钟。
下面是我与 PHY 相关的最新 DTS:
cpsw_pins: cpsw_pins {
pinctrl-single,pins = <
/* Slave 1, RMII mode */
/*AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT_PULLUP, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLUP, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLUP, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_INPUT_PULLUP, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE1)*/
/* Slave 2, RMII mode */
AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLUP, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_INPUT_PULLUP, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLUP, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLUP, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_INPUT_PULLUP, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
>;
};
mdio_pins: mdio_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLUP | SLEWCTRL_FAST, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MDC, PIN_OUTPUT_PULLUP, MUX_MODE0)
AM33XX_IOPAD(0x88c, PIN_INPUT | MUX_MODE7) /* (V12) gpmc_clk.pr1_mdio_mdclk */
AM33XX_IOPAD(0x888, PIN_INPUT | MUX_MODE7) /* (T13) gpmc_csn3.pr1_mdio_data */
>;
};
&mac {
pinctrl-names = "default";
pinctrl-0 = <&cpsw_pins>;
active_slave = <1>;
status = "okay";
//dual_emac;
};
/*&cpsw_emac0 {
phy-handle = <ðphy0>;
phy-mode = "rmii";
//dual_emac_res_vlan = <1>;
};*/
&cpsw_emac1 {
phy-id = <&davinci_mdio>, <1>;
phy-mode = "rmii";
//dual_emac_res_vlan = <2>;
};
&davinci_mdio {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mdio_pins>;
reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
reset-delay-us = <30>; /* PHY datasheet states 20uS min */
/*ethphy0: ethernet-phy@0 {
reg = <0>;
};*/
/*ethphy1: ethernet-phy@3 {
reg = <3>;
};*/
};
如果我理解正确、CPSW_EMAC1会指定正在使用哪个接口(RMII1或 RMII2)。
许多问题都会想到:
- uBoot 的通用 phy 驱动程序是否支持 DP83TD510?
- 是否有 DP83TD510可在 TI 的最新 Linux 内核版本中编译?
我对 MDIO/MII 的理解非常有限、我的所有尝试都没有结果、这并不会有所帮助。
如果能提供有关如何调试该器件的一些指导、我将不胜感激。
谢谢!