Hallo,
für die Ethernetkommunikation mit dem Mikrocontroller STM32F207 setzte
ich den Lwip-Stack ein. Die Ethernetkommunikation läuft ohne RTOS.
Folgendes Problem tritt mit dem Mikrocontroller auf:
Wenn ich zyklisch jede 500ms ein Ping Request an ein Zielgerät sende,
dann kann es passieren, dass mehrere Ping Reply Telegramme empfangen
werden. Dieses Verhalten ist mir mit Wireshark aufgefallen. Woran könnte
dies liegen? Eigentlich müsste doch nach jedem Pink Request nur ein Ping
Reply kommen.
1 | void ETH_IRQHandler(void)
|
2 | {
|
3 | /* Frame received */
|
4 | if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET)
|
5 | {
|
6 | /* Clear the interrupt flags. */
|
7 | ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
|
8 |
|
9 | // Receive ethernet frame
|
10 | ReceiveBufferLen = ETH_HandleRxPkt(ReceiveBuffer);
|
11 | }
|
12 | /* Clear the Eth DMA Rx IT pending bits */
|
13 | ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
|
14 | }
|
15 |
|
16 | void SendEthernetFrame(char* pData, int Len)
|
17 | {
|
18 | ETH_HandleTxPkt((char*)pData, Len); // Send ethernet frame
|
19 | }
|