Перейти к содержанию

geotox

Участник
  • Публикаций

    9
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. TCP/IP и UDP на Nucleo-F767ZI

    Ребят, что посоветуете сделать, если и STM и PC шлют друг другу ARP запросы, но ни один на них не отвечает? Все запросы видны в Wireshark.
  2. TCP/IP и UDP на Nucleo-F767ZI

    Да, по всей видимости вы правы. Запросы есть, ответов нет... LWIP_ARP дефайн существует.
  3. TCP/IP и UDP на Nucleo-F767ZI

    UPD: Решил пойти от обратного. Создал UDP сервер на STM32: void udp_init_connection(void) { ip_addr_t dest_ip; err_t err; upcb = udp_new(); if (upcb != NULL) { IP4_ADDR(&dest_ip, 169, 254, 166, 3); err = udp_bind(upcb, &dest_ip, 22); upcb->local_port = 22; IP4_ADDR(&dest_ip, 0, 0, 0, 0); upcb->remote_ip = dest_ip; upcb->remote_port = 22; } if (err == ERR_OK) { udp_recv(upcb, udp_receive_callback, NULL); } } Прописал новые IP в функции инициализации lwip: IP_ADDRESS[0] = 169; IP_ADDRESS[1] = 254; IP_ADDRESS[2] = 166; IP_ADDRESS[3] = 3; NETMASK_ADDRESS[0] = 255; NETMASK_ADDRESS[1] = 255; NETMASK_ADDRESS[2] = 0; NETMASK_ADDRESS[3] = 0; GATEWAY_ADDRESS[0] = 169; GATEWAY_ADDRESS[1] = 254; GATEWAY_ADDRESS[2] = 166; GATEWAY_ADDRESS[3] = 1; Теперь, когда remote_ip = 0.0.0.0 в WireShark вижу посланный с STM32 пакет. Как только указываю IP компьютера, пакеты перестают приходить. STM подключен напрямую к ПК, без роутера. В чем может быть проблема?
  4. TCP/IP и UDP на Nucleo-F767ZI

    Решил все же испробовать lwIP. Подключил плату напрямую к компу. Установил IP адреса: IP_ADDRESS[0] = 192; IP_ADDRESS[1] = 168; IP_ADDRESS[2] = 1; IP_ADDRESS[3] = 107; NETMASK_ADDRESS[0] = 255; NETMASK_ADDRESS[1] = 255; NETMASK_ADDRESS[2] = 255; NETMASK_ADDRESS[3] = 0; GATEWAY_ADDRESS[0] = 192; GATEWAY_ADDRESS[1] = 168; GATEWAY_ADDRESS[2] = 1; GATEWAY_ADDRESS[3] = 1; Теперь посылаю каждую секунду на комп инфу: void udp_client_send(void) { struct pbuf *p; sprintf(str1, "Test Data..."); p = pbuf_alloc(PBUF_TRANSPORT, strlen(str1), PBUF_POOL); if (p != NULL) { pbuf_take(p, (void *) str1, strlen(str1)); udp_send(upcb, p); pbuf_free(p); } } На PC поднимаю UDP сервер при помощи програмы Hercules, которая ничего не принимает. Стандартная инициализация. void udp_init_connection(void) { ip_addr_t dest_ip; err_t err; upcb = udp_new(); if (upcb != NULL) { IP4_ADDR(&dest_ip, 192, 168, 1, 107); upcb->local_port = 1556; err = udp_connect(upcb, &dest_ip, 1555); } if (err == ERR_OK) { udp_recv(upcb, udp_receive_callback, NULL); } } Как думаете, куда копать?
  5. TCP/IP и UDP на Nucleo-F767ZI

    А можно немного поподробнее? Спасибо!
  6. TCP/IP и UDP на Nucleo-F767ZI

    Ребят, всем привет! Поднял в итоге Ethernet + DMA. Сейчас пытаюсь отослать UDP пакет на PC. Как понял, можно посылать пакет сразу, без всяких приветствий и рукопожатий. Единственное не пойму какой вид имеет UDP пакет. Везде в интернете он разный. Некоторые пакеты имеют header-ы как и IPv4 так и UDP, остальные только UDP. Есть ли у кого пример?
  7. TCP/IP и UDP на Nucleo-F767ZI

    Нет, ошибся, все же RMII переферия оказалась.
  8. TCP/IP и UDP на Nucleo-F767ZI

    Спасибо большое за столь быстрый ответ! Значит, как я понял из вашего сообщения, для управления регистрами LAN8742A через STM, нужно на нем использовать MDIOS? Стек наподобие uIP буду писать (во всяком постараюсь) сам.
  9. TCP/IP и UDP на Nucleo-F767ZI

    Ребят, всем привет! Недавно столкнулся с задачей имплементации TCP/IP / UDP на STM32. До этого работал с микроконтроллерами PIC от Microchip. Погуглив немного, нашел решения, использующие lwIP для реализации TCP/IP. Использовать сторонние либы не хочется, поэтому вопрос - насколько сложна имплементация вышеуказанных протоколов посредством только регистров? Использование HAL и схожих библиотек также не приветствуется. Для реализации используется Nucleo-F767ZI с STM32F767ZI и LAN8742A на борту. Для начала пытаюсь разобраться с настройкой LAN8742A. Первое, что меня смутило, это то, что в документации к Nucleo-F767ZI сказано, что соединение между мк и модулем LAN8742A происходит посредством интерфейса RMII, в то время как регистры LAN8742A настраиваются через SMI. Так как настроить LAN8742A через мк? Заранее спасибо!