WIZnet Developer Forum

w5100 rx memory.

In my application i want to receive 162000 byte.I receive 256 byte at a time and i read this 256 byte.The memory syze for socket 0 is 8 kB.The W5100 receive only 32 block of 256 Byte and stop the reception.How i can reset the memory without stop the connection or how i can solve the problem?
Thanks and regards.

Did you check that packet of data arriving is 256 bytes long? You reading 256 bytes from RX buffer at a time does not mean there’s no more data in the buffer, and that you are not able to read whole data from the buffer in larger chunk.

By default socket’s buffer size is 2K. Did you change it manually?

Probably you mismanage its buffer. Please check datasheet, especially chapter 5 on how to properly manage W5100’s registers to ensure chip is freeing space in its buffer for more data.

Check datasheet, and ensure your code performs all the tasks properly.

I have manually set the socket 0 to 8kB.When the memory is full 256Byte x 32 block = 8192 Byte the w5100 stop reception.

Per W5100 programming rules you should explicitly tell W5100 that you have read specific area of its RX buffer, and that this buffer is now “free” and can be used for further received data.

How i can tell to W5100 that i have read the buffer?

Refer to datasheet and study chapter 5 starting page 38. You need to update Sn_RX_RD according to the size of data you read from RX buffer.

I program in low level with PIC18f8722.
Whice is the register where i modify?

Whice is the register that contain thid data? RX_WR

You do not need Sn_RX_WR register. Can you please look at the page 43 of the datasheet into section titled ESTABLISHED : Receiving Process? It must be clear what you should do with W5100 registers.

I have manually set the size of socket 0 to 8kbyte.The chip receive max 8192 byte 2000 in hex.
The additional byte are not written in the memory.
I receive 256 byte and read 256 byte.I want reset the receiver write address after i have read the 256 byte is possible?If no how i can write the data exceded the 8192 byte at the beginning of memory address (6000)? Thanks for your patience.

Eugeny Thanks to your help I solved my problem.I don’t now this language i work in assembler.Regards and thanks.

Please share what was the issue and how you solved your problem so that others having similar issue would be able to fix their problem as you did.

On page 43, the first step explains how read the data received from memory and this is stated. The second step is to tell the w5100 the memory part I read and which can be released for rewrite. The second step is not declared.Thanks and regards.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.