Ура! Заработало!
Были обнаружены две ошибки.
1. Программная. При проверке взаимодействия по интерфейсу MDIO, я обнаружил, что при обращении к PHY забывал устанавливать правильный физический адрес PHY - он был нулевым, а мне надо было ставить адрес = 1 (он задан аппаратно через strap-pin). А я задавал только адреса регистров. Как только я выставил правильный адрес, то регистры PHY стали читаться/записываться.
2. Аппаратная. При "прозвонке" соединения между выводами разъёма кабеля и выводами трансформатора Ethernet выяснилось, что у меня перепутан порядок нумерации разъёма Ethernet - первый вывод должен был быть с другой стороны (ошибка была сделана при вводе разъёма в программу разводки плат с чертежа). Т.е. на схеме правильно, а физически сигналы выведены не на те выводы разъёма что надо. Пришлось сделать специальный кабель, после чего при соединении с гигабитным портом компьютера произошёл процесс auto-negotiation и загорелись светодиоды 1000/full duplex/link good. Т.е. всё заработало нормально.
Жаль что всё это я не обнаружил раньше, был уверен, что всё правильно. Так что зря перепаивали микросхемы PHY.
Удачи всем.
|