Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Отправка данных по сети с помощью W5500

Чт июл 19, 2018 08:47:34

Здравствуйте, уважаемые гуру и не очень! Вот пытаюсь расширить функционал своего устройства в части подключения его к сети. Для этой цели купил готовый модуль Ehternet на основе микросхемы W5500. Сначала подключал его к ATmega64, сейчас к STM32, но не суть - и в том и другом случае все получилось, кроме одного. W5500 инициализируется на работу в качестве TCP/IP сервера. Со стороны компьютера клиент к нему успешно подключается, все вроде нормально. ТЕперь пытаюсь передать со стороны микроконтроллера несколько байт данных (в принципе не важно сколько - ошибка повторяется при любом количестве). Ну я, как написано в даташите, читаю регистр SN_TX_FSR, узнаю количество свободного пространства в буфере передачи. Далее читаю регистр SN_TX_RD, чтобы узнать с какого адреса начинать записывать данные. И вот тут-то и начинается какая-то лажа. Первое: данный регистр иногда инициализируется не нулем, а каким-либо рандомным значением. Ну это ладно. Далее записываем в буфер нужное количество байт, увеличиваем на это количество регистр SN_TX_WR. Отправляем данные коммандой SEND. Данные отправились все нормально. При следующей посылке читаем снова регистр SN_TX_RD. Он по идее должен увеличиться относительно предыдущего значения на количество отправленных байт, а не тут-то было. Он увеличился на рандомное значение и, соответственно, в следующей посылке отсылается совершенная ахинея из хренова количества байт. Данная ошибка возникает хаотично, может каждую вторую-третью посылку возникать, а может и десять посылок пройти без ошибок. У кого есть опыт с этой микросхемой, может подскажите чего полезного? В сети находил идентичный вопрос, но ответа на него не увидел.

Re: Отправка данных по сети с помощью W5500

Чт июл 19, 2018 15:22:35

Видимо, стоит проверить еачество связи по SPI. Может быть, для начала сильно снизить скорость.
Ответить