Нашел на форуме достаточно информации, вопросов, советов по по этой теме, но не помогло.
ARM AT90RM9200 + PHY RTL8201BL + транс с разъемом LU1T516-43. PHY подключил по схемке, которая валяется здесь на форуме: ANE (37 нога), DUPLEX (38), SPEED (39), LDPS (41), MII (44) подтянуты к питанию (без резисторов). RPTR (40), ISOLATE (43) - к земле. Светодиодные выходы, которыми еще и задается адрес вначале подтянул все к 0. По поводу схемы подключения PHY к трансу. Тут на форуме много написано, как правильно подключать центральный выход обмотки... короче я его оставил висящим, как здесь и рекомендовали. На отладочной плате, которую мы купили у аргуссофта, этот выход подтянут к питанию через бусинку, но там PHY DM9161 стоит. Да еще у них перемычкой, напаянной сверху, средние точки Rx и Tx закорочены...
Теперь о траблах. Запитываю плату. Вначале, когда адресные концы на нулях были, ничего не светилось (это правильно?). Когда подтянул PHYADR0 к единице, светодиодики заморгали. Я так понимаю, PHY работает: втыкаю 10Мбит - светится один светодиод, 100Мбит - другой. Регистры его читаю нормально. Запускаю прогу, которую написали для Аргусовой платы под DM9161 (только обнулив AT91C_EMAC_RMII в EMAC_CF, тк сейчас не reduce MII). Принимать пакеты - принимает, отправлять не хочет... В чем может быть дело? Может у кого похожие проблемы были... как локализовать, где неработоспособность конкретно...
Не должен софт под DM работать с RTL, там другие регистры внутрях. Поэтому надо взять ETH драйвер от Линукса и посличать. Отличий там немного, но они существенны для инициализации PHY. Желаю успехов.
Цитата(d__ @ May 23 2007, 20:41)

Не должен софт под DM работать с RTL, там другие регистры внутрях. Поэтому надо взять ETH драйвер от Линукса и посличать. Отличий там немного, но они существенны для инициализации PHY. Желаю успехов.
Спасибо за пожелание.
Мы не используем пока ни Линукс, ни другую ОС. Может подскажете, неправильная настройка каких параметров может привести к таким симптомам. Когда стоял DM, мы не меняли ничего в нем - все значения по умолчанию были и все работало. Единственное - читали скорость и дуплекс, это требуется для настройки регистров АРМа.
И самое неприятное - то, что я не пойму, где ошибка. Неверная настройка регистров АРМа? Регистров PHY? Подключение К трансу? Плохая разводка (хотя не должно - четырехслойка, отдельная аналоговая земля, отдельное питание - все на бусинках висит).
IgorKossak
May 23 2007, 18:27
Цитата(Gemm @ May 23 2007, 20:38)

...Плохая разводка (хотя не должно - четырехслойка, отдельная аналоговая земля, отдельное питание - все на бусинках висит).
Это врядли. У меня связка ATmega32+W3150+RTL8201BL+LU1T516-43 и на двух слоях прекрасно на 100М работает.
Хотя такая связка может и не аргумент.
Цитата(IgorKossak @ May 23 2007, 22:27)

Это врядли. У меня связка ATmega32+W3150+RTL8201BL+LU1T516-43 и на двух слоях прекрасно на 100М работает.
Хотя такая связка может и не аргумент.
Можно посмотреть вашу схему подключения PHY к трансу.
IgorKossak
May 23 2007, 21:00
Цитата(Gemm @ May 23 2007, 21:54)

Можно посмотреть вашу схему подключения PHY к трансу.
Брал
отсюда. Трансы аналогичные.
Цитата(IgorKossak @ May 24 2007, 01:00)

Брал
отсюда. Трансы аналогичные.
Интересно. У меня аналогичная схема для моего RTL8201BL. Там средние точки висят в воздухе. А здесь, для RTL8201CL/CP, они к 2.5 В подключены. Незнаю, щас попробую так... Нашел один косячок, но не думаю, что это существенно. В нашей плате танталовый конденсатор в цепи PWFBIN - PWFBOUT не 20 мкФ, как рекомендовано, а 10. Не думаю, что это критично. 2.5 вольта держится, я мерял..
Попробовал схему - не заработало. Не помогла и замена кондера на 20мкФ. Шлю в цикле пакет - светодиодик "Link 100-Activity" мигает, "Link" и "Full duplex" светятся, типа все нормально. На свиче, куда подключена плата тоже мигает соответствующий светодиодик... а пакетов в сетке нету...
При передаче нет данных на линиях TXD2, TXD3 - 3.3 всегда. На TXD0 и TXD1 все нормально. Эти пары находятся на разных портах (PB, PA соответственно)...
Mc_off
May 26 2007, 19:00
Цитата(Gemm @ May 26 2007, 14:06)

При передаче нет данных на линиях TXD2, TXD3 - 3.3 всегда. На TXD0 и TXD1 все нормально. Эти пары находятся на разных портах (PB, PA соответственно)...
Возможно сопли на питание...
Возможно так выдает контроллер.
В любом случае это уже некоторая локализация проблемы.
Цитата(Mc_off @ May 26 2007, 23:00)

Возможно сопли на питание...
Возможно так выдает контроллер.
В любом случае это уже некоторая локализация проблемы.
Проблема решена

. Человек, который писал самый низкий уровень, использовал функцию AT91F_EMAC_CfgPIO из файла lib_AT91RM9200.h. Я не знаю, откуда этот файл - то-ли с ИАРом пришел, то-ли с Атмела скачали, но мы его активно пользуем. Эта функция назначает нужную периферию для выводов порта А. Для RMII этого хватает, а для MII нужно это сделать и для некоторых линий порта B.
Я вот только не могу понять, как работал прием корректно...