W5500 TCP server transmit data with Atmel128a

Dear
I setted up the W5500 TCP/IP connection. The intialisation is succesfull. All checked by Wireshark & logic analyzer.
I am also able to receive the right amount of bytes from my laptop when I send some bytes (Interrupt based). Connecting the ethernet controller and sending data is done by a TCL program.
Now, to send data from the microcontroller to the laptop is a whole different story…
I followed the datasheet and several forum topics to send my data, but when I send the data, it sends like the whole buffer it seems?!
I tried different combinations regarding the buffer pointers but the buffer size keeps being the same… (now I only use the Tx_WR pointer)
Below you can see my logic analyzer output of sending data by the W5500 over SPI:


Frame 1: Read Socket 0 FSR with output 0x0800
Frame 2: Read Socket 0 TX_WR with output 0x006F
Frame 3: Write Socket 0 TX buffer + pointer offset with data: b6 00 00 02 55 66 (6 bytes in total)
Frame 4: Write Socket 0 TX_WR with updated pointer (0x6F + 6 bytes)= 0x75
Frame 5: Write Socket 0 CR SEND-command
Frame 6: Check if Socket0 is again in ESTABLISHED mode (which is)
In Wireshark it shows that the W5500 is sending 1460 bytes while I only want to send the 6 bytes of Frame 3. The 6 bytes I send are to be found somewhere in the 1460 bytes received on the laptop…
Does someone know if I did something wrong in my sending procedure or if I forgot to configure maybe something which can cause this?
Thank you in advance! If something is not clear, please ask! I don’t think my code will be useful here, since the logic analyzer shows what I am sending :slight_smile:

I found out what the problem was… I had a mistake in my conversions of my pointers which made my MSB byte 0 every time… This caused sending a full buffer every time instead of 6 bytes.
Stupid mistake but now works like it should! I hope this helps other people if the same kind of problem occurs :wink:

Hello,

I have a similar problem with the W5500 chip and it also sends out several frames with1460 bytes as data instead of 6 bytes that i want to send.
could you please elaborate the ‘pointer offset’ part in the 3rd step. I think this is something I am not doing.
An example with the offset address if possible would be very useful.

Thank you in advance.