kondeg писал(а):
Пока не дошел до строк:
Цитата:
- пишем IP (Destination), порт (Destination) сервера
(для сервера HTTP порт 80, для сервера HTTPS порт 443, и т.д.)
Странный сервер))
Должно быть так:
Сайт
http://www.pogoda19.ru/ - это протокол HTTP порт 80.
Сайт
https://www.pogoda19.ru/ - это протокол HTTPS порт 443.
Добавлено after 2 minutes 59 seconds:По поводу напряжения питания 5V модуля....
На схеме стоит стабилизатор.
Сегодня переключил его на 3.3V
У меня больше не стоит)) У меня W5500 подключён к роутеру. А в роутере свой стабилизатор (импульсный, с высоким КПД) 3.3V ))
Добавлено after 9 minutes 17 seconds:На анализаторе ничего не вижу. Выставляю фильтр по ip = 192.168.0.110 (модуля) и пусто.
Ничего и не будет. W5500 надо подключать к анализатору. А у Вас W5500 подключён к шлюзу (роутеру).
Перед соединением с сервером W5500 отправляет ARP запрос на шлюз (роутер) для определения MAC-адреса шлюза (роутера).
Пакет ARP запроса использует бродкаст адреса (MAC-адрес FF:FF:FF:FF:FF:FF)
Поэтому анализатор видит ARP запрос.
Вложение:
ip_192_168_0_110.jpg [94.55 KiB]
Скачиваний: 250
А дальше шлюз (роутер) отправляет ARP ответ на MAC-адрес W5500.
Поэтому анализатор не видит ARP ответ шлюза (роутера).
А дальше W5500 отправляет все пакеты шлюзу (роутеру) с MAC-адресом шлюза (роутера).
Поэтому анализатор не видит пакеты W5500.
Лучше сначала подключиться к сайту браузером и посмотреть как работает браузер.
1- браузер передаёт ARP запрос на шлюз (роутер) для определения MAC-адреса шлюза (роутера).
2- браузер передаёт DNS запрос на DNS сервер для определения IP сервера
http://www.pogoda19.ru/ = 31.31.196.28.
3- браузер передаёт SYN запрос для подключения к серверу IP сервера = 31.31.196.28.
Вложение:
Screenshot_1.jpg [101.71 KiB]
Скачиваний: 253
Теперь, когда мы знаем как работает браузер надо в точности скопировать работу браузера в W5500. Кроме DNS запроса.))
Скопировать в W5500 всё что передаёт браузер.
Вложение:
HTTP.jpg [151.46 KiB]
Скачиваний: 249
Чтобы сервер
http://www.pogoda19.ru/ думал что W5500 это браузер.
Тогда всё должно работать чётко.
А какой порт отправителя (Source Port) использует браузер ? Точно не 80. )) Source Port = 80 - это для HTTP Серверов.
На примере выше браузер использует Source Port = 34348.
Почему это может быть важно ? Я не знаю как настроен шлюз на предприятии)) Многие шлюзы на предприятии фильтруют трафик...
Поэтому лучше сделать порт (Source Port) в W5500 такой же как в браузере.
Меняем порт (Source Port) в настройках W5500... На всякий случай))
Далее открываем сокет.
Например откроем сокет номер 2.
Для этого надо прописать регистр сокета номер 2.
Регистр сокета номер 2 находится в блоке 0x09.
Записываем в него протокол TCP и порт (например как выше Source Port = 34348):
// Протокол: пишем протокол TCP Socket_2:
PORTB.6=0; // SS W5500
tx=0x00; SPI(); tx=0x00; SPI(); tx=0x4C; SPI(); // Address + Control Registers
tx=0x01; SPI(); // Data -0x01 (protocol TCP).
PORTB.6=1; // SS W5500
// Порт: пишем Socket_2 Source Port:
PORTB.6=0; // SS W5500
tx=0x00; SPI(); tx=0x04; SPI(); tx=0x4C; SPI(); // Address + Control Registers
tx=0x68; SPI(); // Data -0x68 (порт 34348)
tx=0x2C; SPI(); // Data -0x2C (порт 34348)
PORTB.6=1; // SS W5500
Чтоб посмотреть все пакеты W5500 на анализаторе можно сделать все пакеты W5500 бродкаст.
Теоретически должно работать... зависит от шлюза (роутера). Не помню... Надо проверить))
Вложение:
2.jpg [71.02 KiB]
Скачиваний: 242
Только по даташиту протокол TCP в W5500 не поддерживает бродкаст. Не знаю... не пробовал)) Надо проверить))
Знаю что протокол UDP поддерживает бродкаст. Это я пробовал))
Чтоб W5500 передавал все пакеты с бродкаст по UDP надо сделать две вещи:
1- Перед отправкой пакета по протоколу UDP надо указать MAC-адрес (Destination).
2- Для передачи пакета использовать другую команду - вместо SEND использовать SEND_MAC.
1-
// (для команды SEND_MAC без автоматического ARP-запроса)
tx=0x00; SPI(); tx=0x06; SPI(); tx=0x4C; SPI(); // MAC, IP, порт
// MAC адрес - бродкаст :
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR0)(0x0006 - Address)
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR1)(0x0007 - Address)
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR2)(0x0008 - Address)
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR3)(0x0009 - Address)
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR4)(0x000A - Address)
tx=0xFF; SPI(); // Data // Destination Hardware Address (Sn_DHAR5)(0x000B - Address)
// IP адрес:
tx=31; SPI(); // Data // Destination IP Address (Sn_DIPR0)(0x000C - Address)
tx=31; SPI(); // Data // Destination IP Address (Sn_DIPR1)(0x000D - Address)
tx=196; SPI(); // Data // Destination IP Address (Sn_DIPR2)(0x000E - Address)
tx=28; SPI(); // Data // Destination IP Address (Sn_DIPR3)(0x000F - Address)
// порт:
tx=0x00; SPI(); // Data // Destination Port (Sn_DPORT0) (0x0010 - Address) -порт 80
tx=0x50; SPI(); // Data // Destination Port (Sn_DPORT1) (0x0011 - Address) -порт 80
...
...
...
2-
//Пишем команду передачи SEND_MAC Socket 2 Command:
PORTB.2=0; // SS W5500
tx=0x00; SPI(); tx=0x01; SPI(); tx=0x4C; SPI(); // Address + Control Registers
tx=0x21; SPI();// Data -0x21 (команда SEND_MAC без автоматического ARP-запроса)
PORTB.2=1; // SS W5500
Ну или другой вариант сделать все пакеты бродкаст - использовать в W5500 режим MACRAW.
Режим MACRAW поддерживает любые протоколы. Вообще любые))
Только придётся писать все протоколы (включая TCP протокол) вручную)) А это долго...
Добавлено after 1 hour 36 minutes 2 seconds:Ну или третий вариант - запустить на своём компе свой сервер (аналог
http://www.pogoda19.ru/) и подключаться к нему.
Вон я запустил у себя на компе простой Java сервер
Вложение:
Screenshot_1.jpg [105.89 KiB]
Скачиваний: 321
И подключаюсь к нему как браузером так и с помощью W5500
Вложение:
дом_2.jpg [196.83 KiB]
Скачиваний: 267
Через всякие VPN...
Вложение:
Screenshot_2.jpg [186.04 KiB]
Скачиваний: 229
Тогда анализатор работает и всё чётко видно. ))
Короче... вариантов много))