ericN 3 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба Доброго дня. Пытаюсь поднять PHY на linux5.10 Добил все настройки - но чип не отвечает. Встал осцилом на MDC/MDIO - есть запрос, ответа нет. Увидел обратную полярность MDC. Вроде по спецификации MDIO и на PHY, и в отрыве от PHY и от мастера полярность клоков однозначна - фиксация на переднем фронте. У меня на переднем смена состояния MDIO. Не могу поменять полярность клоков MDC. В даташите на imx6q в настройках MDIO полярность/фазы не настраиваются. В GPIO тоже не нашел. Такое чувство, что где-то в траве бит на GPIO стоит, который тупо инвертирует выход MDC. настройки портов в *.dts такие pinctrl_enet: enetgrp { fsl,pins = < MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 //ENET_MDC (pin 44) MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 //ENET_MDIO (pin 58) MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK 0x4001b0a8 //ENET_REF_CLK (pin 56) MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0 0x1b0b0 //ENET_RXD0 (pin 26) MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1 0x1b0b0 //ENET_RXD1 (pin 46) MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN 0x1b0b0 //ENET_CRS_DV (pin 48) MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER 0x1b0b0 //ENET_RX_ER (pin 79) MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0 0x1b0b0 //ENET_TXD0 (pin 197) MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1 0x1b0b0 //ENET_TXD1 (pin 214) MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0 //ENET_TX_EN (pin 47) MX6QDL_PAD_GPIO_19__ENET_TX_ER 0x1b0b0 //ENET_TX_ER (pin 157) >; }; Что может быть ещё не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба Адрес PHY точно правильный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ericN 3 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба да. по осциллографу 0x1. по схеме 1, в *.dts 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба В 30.06.2022 в 13:40, ericN сказал: Увидел обратную полярность MDC. Вроде по спецификации MDIO и на PHY, и в отрыве от PHY и от мастера полярность клоков однозначна - фиксация на переднем фронте. У меня на переднем смена состояния MDIO. точно на переднем фронте смена состояния? MDIO не должен меняться до восходящего клока на MDC минимум 10 нс, после восходящего клока 4 нс. растяните осциллограф. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 30 июня, 2022 Опубликовано 30 июня, 2022 (изменено) · Жалоба On 6/30/2022 at 11:40 AM, ericN said: MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK у вас тактирование PHY с процессора ? я не помню подробностей в чем разница, дело было почти 10 лет назад, но мы использовали gpio_16 MX6QDL_PAD_GPIO_16__ENET_REF_CLK после консультаций на форуме NXP, у них еще какой-то аппнот был по поводу подключения PHY. Грепнул исходники - не вижу чтобы кто-то использовал ваш пин, вы по какому примеру делали подключение ? Изменено 30 июня, 2022 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ericN 3 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба В 30.06.2022 в 15:09, juvf сказал: точно на переднем фронте смена состояния? растянул. действительно.... после переднего фронта данные не меняются 10-15 нс. В 30.06.2022 в 15:21, sasamy сказал: у вас тактирование PHY с процессора ? с процессора. физически не с MX6QDL_PAD_GPIO_16__ENET_REF_CLK, а с MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK. С аппнот и с тактирование разобрался. RMII. клоки в 50 МГц появляются на ENET_REF_CLK только на время инита fec/phy (т.е. во время обмена по MDIO клоки на ENET_REF_CLK есть, потом гаснут). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба On 6/30/2022 at 1:26 PM, ericN said: физически не с MX6QDL_PAD_GPIO_16__ENET_REF_CLK, а с MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK. С аппнот и с тактирование разобрался. не совсем 12.4 Generating the reference clock on chip There are two possible pins that can either source or sink the reference clock: GPIO_16 and RGMII_TX_CTL. The GPIO_16 pin is the preferred choice because it has the advantage of being in a high voltage IO domain, which means it can be used at the standard 3.3 V IO voltage levels. RGMII_TX_CTL should only be used if pin function loadings are such that GPIO_16 is unavailable. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ericN 3 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба В 30.06.2022 в 15:39, sasamy сказал: не совсем выход RGMII_TX_CTL уровня 1,5В. Стоит преобразователь уровня из 1,5 в 3,3 и заводиться на PHY. Клоки в 50 МГц на PHY в 3,3 приходят нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 30 июня, 2022 Опубликовано 30 июня, 2022 · Жалоба On 6/30/2022 at 1:47 PM, ericN said: Клоки в 50 МГц на PHY в 3,3 приходят нормально. тогда кроме того что адрес PHY неправильный у меня больше мыслей нет, попробуйте не указывать его в DTS, чтобы ядро само сканировало шину, тут пример от нашего модуля - поменяйте пины на свои Quote &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet_sodimm>; phy-mode = "rmii"; phy-reset-gpios = <&gpio1 23 0>; fsl,magic-packet; status = "okay"; }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться