Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F107RBT6 + RTL8201BL + LwIP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
squli
Добрый вечер!

Имеется желание разобраться с ethernet в STM32F107. Сделана плата по схеме на картинке:
http://smotr.im/7Ukj

К плате взят пример LwIP в нем исправлены только части, касающиеся распиновки MII интерфейса, закомменчен LCD, сделан вывод дебажных сообщений по SWO, убран DHCP и включен вывод отладочных сообщений.
резет RTL к единице, пробовал в конец ETH_Init дописывать ETH_Start, не помогает, вроде бы все.

Подключаю плату к компу, комп видит непонятную сеть, скорость определяет, пинга нет. На разъеме езернета на плате горит линк, мигает нужный (100 или 10).
айди ртл считывается верно, в регистрах (нулевом и первом) все как и планировалось, только в регистре, считающем принятые пакеты - 0. В STM не попадаю в функцию разбора принятого пакета вообще.
На RX и ТX клоки по 25 МГц, на MDIO вроде данные, когда конфигурируется ртлка.
разъем с трансформатором проверил со всех сторон вроде. питание от усб. в настройках компа статический айпи и маска, ничего больше. вайршекер видит только пакеты от компа.
все многочисленные темы с RTL8201BL и не только, прочитаны не по разу уже. sm.gif)

в примере: http://www.st.com/internet/com/SOFTWARE_RE...WARE/an3102.zip должна ли пинговаться плата?
да и в общем, как завтавить все это работать?

спасибо!
smk
Чем дело-то кончилось? Год как никак прошел.
bureau
Кажется мне что проблема состоит в отсутствии прерываний на импульсы от вывода PHY:RXVD. Где-то писали что в коде происходит remapp пинов...
Кто-то уже сталкивался с подобным? Интересно на что еще придется нарваться при переделке проекта...
qwqw
Подниму тему, так как картина очень похожая.

Работаю с платой TE-STM32F107 от Терры.
Среда - IAR7.30.
Без ОС.
Пытаюсь запустить пример от ST.

Основное отличия моей платы от той для которой написан пример - другая микросхема физического уровня.
Прочитал кучу смежных тем, вроде бы правильно подправил пример.
Не работает. Не отвечает ни на arp запросы ни на пинги, соответственно.

Регистры PHY читаются правильно (проверил чтением ID из регистров PHY).
А пакеты от PHY не приходят.

Осциллографа под рукой сейчас нет.

На одном из форумов нашелся работающий проект под кейл (прямо под мою плату и тот самый пример). Собрал, запустил в keil'е - все работает (пинг и WebServer).
Перенес исходники в IAR. Собираю, прошиваю - не работает. При компиляции есть warning'и, но они по отладочным ф-ям стека.

Кто-нибудь запускал lwIP для STM32 под IAR?
den_po
Цитата(qwqw @ Jan 19 2015, 03:27) *
Подниму тему, так как картина очень похожая.
...
Основное отличия моей платы от той для которой написан пример - другая микросхема физического уровня.
Прочитал кучу смежных тем, вроде бы правильно подправил пример.
Не работает. Не отвечает ни на arp запросы ни на пинги, соответственно.
...
Кто-нибудь запускал lwIP для STM32 под IAR?

http://electronix.ru/forum/index.php?showtopic=123810 и эту?
qwqw
Еще раз внимательно пересобрал проект в IAR'е и он заработал.
Если кому понадобится, пишите в личку.
Aner
QUOTE (qwqw @ Jan 19 2015, 03:27) *
Подниму тему, так как картина очень похожая.

Работаю с платой TE-STM32F107
...

Кто-нибудь запускал lwIP для STM32 под IAR?

Давно запустили, отладили, оттестировали запустили в массы. Все там работает оч неплохо с lwIP, RTOS_ом под IAR_ом начиная с версии 5.8 до 7.3. Ну если конечно есть опыт, знания как и чего делать, всмысле не начитать с нуля и тне тупить.
qwqw
Плата стартует очень долго при отстутствии link'а (когда сетевой кабель не подключен).
Стал разбираться и обнаружил, что ф-ия инициализации ETH_Init(...) в примере вызывается однократно при старте платы.

При использовании AutoNegotation необходимо дождаться появления link'а чтобы произвести переговоры и настроить MAC по их результатам.
Соответственно, там все долго и висит пока счетчик не досчитает до предела и ф-я не "сдасться" так и не дождавшись link'а.
Понятно, что пример есть пример.

Не могу понять, как правильно реализовать этот механизм.
Так как плату могут переподключать к разным устройствам в процессе работы (перекоммутировать другой конец сетевого кабеля руками),
хочется чтобы процедура AutoNegotation выполнялась каждый раз при появлении link'а.
Посмотрел несколько даташитов на разные PHY, везде все одинаково: процедура переговоров подразумевает участие программы контроллера.
Вопрос: как оследить состояние link'а чтобы инициировать этот процесс? Неужели надо постоянно поллить соответствующий регистр PHY?
qwqw
Посмотрел еще даташиты на разные трансиверы PHY. У них в комплекте с MDIO есть выход прерывания, который можно в том числе использовать для контроля link'а. Видимо RTL8201CP, который стоит на моей плате, - исключение. Он немного устарел, но по прежнему весьма популярен.

Я заведу сигнал со светодиода LED0 (выход RTL8201CP, 9 пин), который индицирует link на GPIO контроллера и буду по прерыванию его отслеживать.
Вроде логичное решение, но не нашел такого ни в одной схеме в сети.

Все же хотелось бы узнать: в проектах с RTL8201CP (или RTL8201BL) контроллер обычно поллит регистр для контроля состояния link'а?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.