View Full Version : ENC28J60 receive buffer write pointer not updating

The Master
- 7th September 2011, 22:48
Hi, I'm starting to get the hang of these ENC28J60 chips but I'm still having a few problems. Currently I have managed to go as far as sending a packet which my PC can receive. Now I'm trying to send data back to the chip but it's not working.

My problem appears to be when writing to the ERXST register pair. The write is successful and I can read the correct values back but the datasheet says writing to these registers will also update ERXWRPT. This doesn't appear to be happening. Whenever I read the registers back, ERXWRPT is always set to 0:0. This is causing received packets to be written to the wrong location.

Is there something else I must do to update ERXWRPT? I cannot modify it in my code as it is read only and I don't see anything in the datasheet that suggests I have to do anything other than write to ERXST.

The Master
- 8th September 2011, 20:03
After many Google searches I've finally found the answer to this.

For anyone else that might have this problem, it is a bug in the chip itself as described in ENC28J60 Rev. B7 Silicon Errata (http://ww1.microchip.com/downloads/en/DeviceDoc/80349b.pdf). This bug is present on chips where EREVID=00000110.

Sometimes, when ERXST or ERXND is written to, the exact value, 0000h, is stored in the Internal Receive Write Pointer instead of the ERXST address.

Work around
Use the lower segment of the buffer memory for the receive buffer, starting at address 0000h. For example, use the range (0000h to n) for the receive buffer, and ((n + 1) – 8191) for the transmit buffer.

- 27th April 2014, 23:28

Do you still have the sources????