W5500 TCP/IP Sending Issue


I’m using the evaluation board WIZ550io along with a Cyclone IV FPGA which communicates using SPI with the W5500 chip. I’m able to establish a TCP connection with the chip and also receive data. I’m looking for help in sending the data out. I can see a lot of junk on the screen after triggering the SEND (0x20) command along with my data somewhere in the middle. The process is not very clear from the datasheet.
Could someone please help me in understanding the pointer description for the TX Write (0x0024 and 0x0025) in detail.
I think I am having issues in understanding how to save the data into the TX Buffer.

I am doing the following steps after establishing a connection for sending data:

  1. Reading the Sn_TX_WR pointer from offset 0x0024
  2. Writing the data i want to send to offset 0x0025 (Sn_TX_WR0)
  3. Update the Sn_TX_WR pointer to the 'original_value + no_of_bytes_I_write
  4. Trigger the SEND command (Sn_CR = 0x20)

All of the above I’m doing it for Socket 0. I also tried the ‘N-Bytes Write Access Example’ from the datasheet on page 20. How is the address phase 0x0040 there? Shouldn’t it be the TX Write Pointer (offset 0x0025)?

Thank you for the support in advance.

Hello bjargav05,

Where you able to fix this problem? I am stranded at the same point and I can not find any other information to fix this beside this unsolved post.

I am able to connect through TCP and I am able to send something, but its duplicating what I am sending multiple times covered in a lot of unknow data dump.

Can someone explain the steps that you need to take after the Connect command until the Send command?
You do not have to write it in code, just telling which registers you need to use and especialy why is enough.

I am trying to send 3 bytes of data in a tcp protocol as a client (computer is the server), so it should not be that hard i thought… :smile: But i am breaking my brain over it…

Its awfully quiet here. I mean, its an old post that not have been awnsered. But also on my own post nobody reactes. Either the question is too hard or too stupid :stuck_out_tongue:

Below schematic on what I do to and how I think the tx buffer writing for TCP should work based on what I understand of the documentation.

Result is that it does send data, but also a lot of other random stuff. And the amount depends on how quick I runt the program. If I do it really fast (so no delays in this part) than it will send nothing (just a connect, but not even disconnect).
If I go fast but a bit slower (debug mode and going quickly step by step through the code) it prints out the stuff I want, but also some extra random material.
If I go really slow (long delay in the program or really slow step by step in debug) it send out maximum random data with some traces of what I wanted to send.

So any ideas?