Вопрос по Ethernet модуль w5500

Добрый вечер!

В общем бывает с этими модулями одна проблема. Иногда (довольно редко, но бывает) после подачи питания на связку ардуино + w5500 у w5500 индикаторы на гнезде, куда подключается ethernet разъем, начинают давать одиночные вспышки друг за другом с периодичностью примерно раз в 2 секунды (если ethernet кабель отключить от модуля то огоньки перестают моргать, если подключить обратно, то снова так же начинают). При этом связь по локальной сети с ардуиной не устанавливается.
В этом “странном” режиме я пробовал:
1 - Ethernet.begin(mac, ip); - не помогло
2 - void wizchip_sw_reset(void); - не помогло
3 - Ethernet.hardwareStatus(); - результат выдаёт правильный
4 - Ethernet.linkStatus(); - отвечает что кабель не подключен
5 - Ethernet.localIP(); - выдаёт правильный ip

Вывести из “странного” режима w5500 я придумал только перезагрузкой w5500 по питанию, ардуину при этом перезагружать не обязательно.

В общем то хотелось бы сделать чтобы ардуина после подачи питания как-то отслеживала, а не находится ли w5500 в этом “странном” режиме и перезагружала модуль сама, если находится.

Есть ли какие-то мысли как это отследить?

Есть у меня модуль WIZ811MJ… И вот у него тоже странное поведение было, пока не напаял ему резистор и конденсатор по линии RESET.

А некоторым просто питание не нравится.

Во всех примерах w5500 которые видел, рекомендуется сброс через rst пин модуля при включении, и когда делал один проект, один сокет использовал для контроля работоспособности, т е долго нет ответа - hardware reset.

Я думаю конденсатор на 1-2мкФ можно на этот пин поставить для такого эффекта. Если не по теме - извиняйте.

Хз, в примерах wiznet даже сначала hw сброс именно из программы.

Я такие схемные решения (с конденсатором на пине ресета) видел в промышленных аппаратах (типа кофемашин), поэтому и предложил. Но точно не знаю в данной ситуации.

Это штоп с чистого листа конфигурировать.

Подозреваю что правильно сначала spi инициализовать, потом сброс w5500 reset, ожидаем несколько секунд, потом инициализируем. Во всяком случае я на stm32 так делал, достаточно стабильно было, но проект заглох, поэтому тестировали мало и о стабильности ничего сказать не могу :frowning:

1 лайк

Наверное, это правильное решение, если питание медленно нарастает. У МК есть brown-out control, у визнета нет. Ребутнуть после того, как все зарядится-устаканится - вполне хорошая идея.

А чтобы дёрнуть пин Reset на W5500 я могу получается подключить ногу ардуино к этому пину и делать ею низкий сигнал на пол секунды, и таким образом этот HardReset случится, правильно я понимаю?

Да, вот нашёл, сброс пин на 70мсек в ноль, потом команды слать модулю.
https://arduino.ru/forum/otvlechennye-temy/programmirovanie-32-kh-razryadnykh-mk?page=21#comment-575919

Да, правильно.

а то что пин Reset подтянут к 3.3 v а на ноге ардуино вроде как 5v это ничего страшного?

по даташиту достаточно 2 микросекунд, видимо дело не в бобине )))

Сложный вопрос, я 70 мсек тоже не от балды взял, щас в ночь не буду искать.

на 51 и 52 микроконтроллере был косяк со сбросом, решала только трёхножка
тут может наоборот затягивать фронты нельзя

Для этого используем лайфхак)

Привклбчении программы
Digitalwrite (pinrst, low)
Pinmode(pinrst, input)

Когда нужно сбросить
Pinmode(pinrst, output)
Dekay(70)
Pi;mode(pinrst,input)

блин, как же всё просто)))

спасибо всем большое!!! ушёл тестировать

И наверно крайний вопрос. Есть ли смысл подавать питание на w5500 через транзистор, чтобы была возможность перезагрузить плату по питанию если что? То есть были ли у кого прецеденты, что эта плата зависала так что приходилось перезагружать по питанию чтобы оживить?

Такая хреновина ещё есть: APX809-26SAG-7, IC: система контроля; монитор сброса питания (PoR); push-pull, Diodes | купить в розницу и оптом