Доброе время суток, товарищи.
Имеется следующий набор: SK-STM32F217 (на борту камень STM32F217ZG и PHY KS8721BL), JetLink Ultra и Keil в качестве среды разработки. Также присутствуют примеры от starterkit (чистый uIP, без операционки, переписанный видимо со старой отладки на STM32F1) и от STM (тот самый FreeRTOS с LwIP с сокетами, что так необходимы).
Изначально пример от STM без изменений не мог пройти инициализацию PHY вообще, застрявал на строке
Код
while (ETH_GetSoftwareResetStatus() == SET);
Разумно предположив, что PHY все-таки на SK-STM32F217 и STM322xG_EVAL разные, внес изменения в драйвер: переключил камень в RMII режим, изменил адрес регистра PHY на 0x1f. Инициализацию теперь проходит, но видимо теперь плата не обрабатывает никакие пакеты - ping не проходят, на HTTP запросы плата тоже не отвечает. Циклы FreeRTOS при этом крутятся, LwIP сыпет отладочную информацию в USART и как бы все хорошо. Пакеты только не обрабатываются. +(
После чего посмотрел повнимательнее, и узрел, что и GPIO настраивается несколько иначе: нужно добавить инициализацию PB11 для ETH _RMII_TX_EN, и убрать лишнее по аналогии с примером starterkit, что и было сделано. Теперь код инициализации проходит, но при ресете Ethernet-порт не мигает светодиодами как ему положено, из чего делаю вывод, что PHY не проинициализировался, хотя соответствующий код отработал.
Прилагаю код инициализации Ethernet, принципиальную схему платы и main.c.
Помогите пожалуйста разобраться, в чем же дело.
Оригинал примера от STM можно найти по ссылке
http://www.st.com/internet/com/SOFTWARE_RE...x7_eth_lwip.zip
Сообщение отредактировал Fellrond - Aug 1 2011, 12:44