Skocz do zawartości

Brak możliwości wysłania pakietu UDP do raspberry-STM32


malkos

Pomocna odpowiedź

Cześć,

Mam dziwny problem którego nie mogę rozwiązać od dłuższego czasu. Potrzebuje wysłać cyklicznie do raspberry PI 4 pakiet UDP z stm32(mam nucle f207zg oraz f767zi, na obu jest to samo). Używam lwip 2.x.

Moja funkcja została przerobiona z przykładu UDPechoserver i jest wywoływana w cyklicznym przerwaniu wygląda tak: 

void UDPSendString(void)
{
	struct udp_pcb *upcb;
	struct pbuf *p;

	upcb=udp_new();
	/*assign destination IP address */
	ip_addr_t ipDest;
	IP4_ADDR(&ipDest, 192, 168, 0, 4);
	char buf[bufSize];
	int size;
	err_t err;

	 if (upcb)
	   {
	     /* Bind the upcb to the UDP_PORT port */
	     /* Using IP_ADDR_ANY allow the upcb to be used by any local interface */
	      err = udp_bind(upcb, IP_ADDR_ANY, 0);

	      if(err == ERR_OK)
	      {
size = snprintf(buf, bufSize, "B value=500\r\n");

	    	 p=pbuf_alloc(PBUF_TRANSPORT,size, PBUF_RAM);
	    	  pbuf_take(p, buf, size);


	    	  /* Connect to the remote client */
	    	  udp_connect(upcb, &ipDest, 8089);

	    	  /* Tell the client that we have accepted it */
	    	  udp_send(upcb, p);

	    	  /* free the UDP connection, so we can accept new clients */
	    	  udp_disconnect(upcb);

	      }
	   }
	//



	  /* Free the p buffer */
	  pbuf_free(p);
	  udp_remove(upcb);
}

Dziwne jest to, że jeżeli w adresie ip podam adres mojego PC na windows to w wiresharku widzę, że wszystko jest ok i pakiety są cyklicznie wysyłane. Natomiast gdy zmienię adres na raspberry to jakby nic nie było wysyłane.

Idąc dalej... Za pomocą konsoli w raspberry jestem w stanie wysłać pakiet do pc a do stm już nie. 

Dziwne jest to, że wireshark nie widzi żadnych pakietów pomiędzy stm a raspberry. Nawet ping który jest wysyłany z raspberry do stm jest niewidoczny pomimo tego, że stm odpowiada.

Dodam, że wszystkie urządzenia są podłączone do jednego switcha.

Gdzie mogę szukać problemu? Będę wdzięczny za wszystkie sugestie.

 

 

Link do komentarza
Share on other sites

24 minuty temu, malkos napisał:

Dodam, że wszystkie urządzenia są podłączone do jednego switcha.

No to co z tego? Jeśli między dwoma gniazdkami switcha leci sobie jakaś komunikacja, to na trzecim nie ma nawet po niej śladu.

Link do komentarza
Share on other sites

@malkos chyba najprościej będzie zainstalować wireshark na raspberry i sprawdzić jak wygląda komunikacja. Możesz oczywiście "podsłuchać" co jest przesyłane między stm32, a rpi używając PC, ale to już jest nieco trudniejsze. Switch "uczy się" adresów MAC podłączonych urządzeń i wysyła pakiety tylko do odpowiednich kart - dlatego na PC nie widzisz komunikacji między pozostałymi.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.