Понадобилось вывести STMку в сеть. Заодно решил и для себя разобраться в сетевой архитектуре передачи данных.
Я использую cubeide. Создал новый проект. Взял *.c и *.h файлы из проекта Aveal. Подключение - все один в один: SPI1, чипселект на PB3.
Собрал на бредборде. Подрубаю к ПК и не пропинговаться. Брал обычный Ethrnet кабель и перекрестный кабель. Логическим анализатором проверил - обмен данными по SPI - он идет. После подачи питания обмен идет активно, потом, через некоторое время, - запрос 0x19 и в ответ нули. На винде, в утилите Ping делаю запрос, пишет: "Заданный узел не доступен". Светодиоды на ENC не мигают. (хотя после подачи питания на ENC оба диода мигают какоет-то время). Попытался схитрить. Поставил IP адрес шлюза и предпочтительный DNS сервер - IP адрес ENC. На WireShark смотрю ARP запросы от сетевой карты - они идут. Ответа нет.
Попробовал отдебажить, через IDE.
Ставлю брейкпоинт внутри функции ETH_Process на развилке if (requestSize > 0). Не заходит в нее. Как я понимаю - в переменную requestSize ничего не попадает.
Или может я не правильно отлаживаю... Подскажите пожалуйста, что может быть не так? Может я проект не так перенес? У Aveal он под IAR как я порнял.
При перезапуске ENC и STM в requestSize что то все таки залетает. Возможно это свич видит новое устройство и пытается опознать его. Но что для меня странно, что нет реакции светодиодов на Ping. Может просто я на ПК сеть не правильно настраиваю и в этом дело? Как я писал, я пытался ENC и на прямую соединять c ПК через кроссовер и через прямой кабель. Все происходит примерно так же, светодиоды мигнут и тишина.
На да, по настройкам все четко выглядит. Если напрямую, то тоже пакет принимается только при запуске, а дальше requestSize в 0? Надо посмотреть этот правильно принимаемый пакет на предмет - к чему он относится.
Еще момент. Проект создается без ошибок, но есть несколько варнунгов. Res я вроде бы действительно не видел, чтоб использовался, а вот ReadPhyReg. Хотя вряд ли в них дело, но все же.
Еще момент. Проект создается без ошибок, но есть несколько варнунгов. Res я вроде бы действительно не видел, чтоб использовался, а вот ReadPhyReg. Хотя вряд ли в них дело, но все же.
Просто заложено для универсальности, но конкретно в демо-примере не используется, норм.
@aveal36.1 это шлюз (свич и маршрутизатор). Он его по дефолту ищет всегда. Но я напрямую сейчас ENC подрубаю к ПК. А то что нет ни ARP ни ICMP на 36.33 - это мне не понятно. При этом я пингую в сети другие ПК - все запросы вижу. Привел пример пинга 36.8