Доброго времени суток! Недавно стал владельцем Ethernet PHY модуля на базе чипа DP83848.
Пытаюсь подружить его с STM32F429ZI, но проблема в том, что он не может нормально получать данные..
Т.е. если он получит 15-20 пакетов, то всё. Всякая связь с контроллером по Ethernet пропадает. Даже нет ответов на PING.
Я так понимаю, объём полезных данных в TCP пакете равен 536 байт. С пакетами, у которых этот объём занят полностью, такая-же проблема. Т.е. не важно, получает ли он те 15-20 пакетов, в которых инф-и на 1 байт, либо на все 536 байт. Всё равно он повисает. Как я проверял. Я сделал на контроллере сервер, который отправляет клиенту некую строку, а принятые данные выводит в UART. Так вот, как правило после 16-го пакета (или символа, введённого через telnet) связь тут же обрывается. Отладчик показал, что контроллер не уходит в исключение, а основной поток работает дальше.
Архив с проектом: http://rghost.ru/7vtTz7bYC
Вот скриншот: http://s018.radikal.ru/i519/1602/53/66fd8ee63bae.png
Кстати, точно такая-же беда и в режиме клиента, когда он подключается к какому-либо HTTP серверу и начинает брать данные.
UPD: методом тыка выяснил, что перестаёт идти прерывание от ETH... Почему?...
STM32F429 + Ethernet PHY DP83484
- Реклама
-
driver_gv
- Потрогал лапой паяльник
- Сообщения: 399
- Зарегистрирован: Сб авг 08, 2009 23:02:57
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: STM32F429 + Ethernet PHY DP83484
Число удачно принятых пакетов зависит от их размера ? Общий объем удачно принятых пакетов всегда одинаков и равен ~ 8+/- кб ?
Известные грабли кольцевого приемного буфера. После чтения из него пакета, надо в нем сдвигать указатель (очищать).
Известные грабли кольцевого приемного буфера. После чтения из него пакета, надо в нем сдвигать указатель (очищать).
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять
Все, что нельзя запрограммировать на ассемблере, приходится паять
- VHEMaster
- Потрогал лапой паяльник
- Сообщения: 374
- Зарегистрирован: Сб июл 14, 2012 09:20:09
- Откуда: Украина, город Полтава
Re: STM32F429 + Ethernet PHY DP83484
Проблема решилась. Дело в том, что я лез туда, куда не нужно было. Вместо tcp.h я начал использовать sockets.h и всё стало работать хорошо.
