[From QnA]W3150A+ UDP receive problem


#1

Hi,

I am trying to use W3150A+ on NM7010B+ module for UDP data stream communication. It is connected with ATmega128@8Mhz on MCU interface. The problem, I am facing is that, W3150 seems no to react for the RECV command. Below is procedure description :
When interrupt requested, i read the IR reg., apropriate Sn_IR and then clear Sn_IR. In main loop, i check the Ethernet flag and proces data. After copying data from internal bufor to my own bufor I increment value of Sn_RX_RD, set the RECV command, wait until the end of execution and proceed with main program loop.
Problem is that value od Sn_RX_RD remains always 0(zero)! I omitted the problem by creating software read pointer, but it helps only within the bounduaries of socket receive bufor. Which means, that having 4kB of memory assigned to socket, i can receive only 4kB of data on it and require socket reset. What is more, value of Sn_RX_RSR is a totla size of data received on socket after openning, not reset by RECV command. Please help.

Pawel


#2

Hello Pawel Szymek,
You may use W3150A driver and sample code from our homepage.
If the Sn_RX_RD is zero, it means you don’t read anything from RX memory of W3150A.
Then the all RX memory will be full (because it receives something from Ethernet) and then it cannot receive anymore.
Anyway your problem seems from Sn_RX_RD writing or RECV command executing.
But the “recv()” function of W3150A driver has no problem because it is already widely good used.
So please check the register read/write function and register map (address).
Thanks.


#3

Hello,

thank You for the fast reply. I compared my software with the driver , made few changes (i.e. wait for clearing Sn_CR) but it did not help. However there is one thing i forgot to mention before:
After receiving second datagram or procesing pair send - receive, Socket status register become Sn_SR = 0x01 and remains in that state until socket closing. Chip accepts packets and requests interrupts, but not allow for sending.
This socket state (0x01) is not described in datasheet - what does it indicate? I appeciate any help. Best regards

Pawel


#4

Hello Pawel,
As you said the Sn_SR = 0x01 is unrefenced value in our datasheet.
It seems you read a wrong address or interfacing between W3150A and MCU has some problems.
Or the W3150A chip was broken.
So please check it regarding aboved three points.
Thanks.