Microchip ENC424J600 Corrupting it's Receive Memory - Page 1
Forum section: electronics / general

author: Snoopy04
author_rank: Contributor
timestamp: April 29, 2019, 08:23:40 pm
content: Hi,I hope this is the right Topic but since I'm interfacing the Chip with a uC I think it isA few years ago I started to built my own Server based on a Atmega328p from scratch. Back then I used the old ENC28J60 as the main Mac/Phy Interface. As progress continued I was relatively Fast approaching the memory limits of the Atmega in both SRAM and Flash. The same was true for the ENC28J60. It's over a Decade old and only offering a SPI Interface. Nevermind. The Main Reason was the very comprehensive Errata Document which consist of 12 Pages and the fact that the Receive Logic is corrupting the RX Memory if a Packet is beeing Received while a Checksum Calculation is perfomed.That's not really helpfull....So I've decided to replace the Atmega328p with a Atxmega128A1U and the ENC28J60 with the successor ENC424J600. It's cappable of 100Mbit/s, a Parallel Interface and the Bugs mentioned in the errata were not so minor. It took me some time but After some hickups here and there everything was working Great again and even Faster as before....Until I Decided Today to feed Power to the Breadboard via the DC Plug of the Breadboard Power Adapter instead of a Mini USB Cable attached to a USB HUB Connected to my Computer.Long story short the ENC424J600 seems now to Corrupt it's RX Memory if I'm receiving a Ethernet Frame with a Certain length (the Position I'm going to mention must be reached)ANDreading a Byte of this Packet beginning at the IP-Source-Address. Reading every single Byte before this exact Position doesn't Affect anything. Reading after this Point the Memory goes wild and that's it.Because of this behaviour the Server is not able to answer a DHCP answer and therefore fails right at the beginning.So If I'm turning on the Wifi of my Tablet, the Tablet get's an IP from the DHCP (which is a Broadcast), the ENC424J600 also Receives the Packet, reads one byte and is done.If I unplug the DC Adapter and replug the Mini USB Cable this whole behaviour is gone.Aboves Behaviour I've Checked with a Minimalistic Code with just the Receive Logic Switched On and the ENC424J600 in 100Mbit Full Duplex Mode. So what the Heck is going on. Is it an unknown Bug in the ENC424J600 While Using the Atmega328P and the ENC28J60 this issue was not present

author: thm_w
author_rank: Super Contributor
timestamp: April 29, 2019, 11:17:47 pm
content: How does your decoupling and grounding look?If you have a power bank, try powering via that and see if there is any difference.Having the USB cable connected would do two things I can think of:- Change power source- Connect your breadboard ground to earth ground

author: Snoopy04
author_rank: Contributor
timestamp: May 01, 2019, 11:43:33 am
content: I've already tried to use a Powerbank but with the same issues. I've also tried to Ground the Breadboard to Mains Earth via the USB Cable Shielding or an Power Outlett without success.The Powerrails of the System should stay rughly the Same because of the Linear Voltage Regulators.

author: Snoopy04
author_rank: Contributor
timestamp: May 02, 2019, 09:58:11 pm
content: Okay I've fixed it...Turned out that using two 60cm long Wires to connect the ENC424j600s GND and +3.3V to the Powerrails was not that of a great IdeaThe first thing I've done was to connect Both +3.3V Pins from the ENC424J600 Board to the Powerrails of the Breadboard. After that it worked just fine on an DC Plug.Then I saw and remembered the awfull long Cables I've used because I had them lying around. With just two little Jumper wires every Power Source is now working fine.I've probed a around a little with myand found that, measured directly on the Contacts of the ENC Board, there is quite a lot of Voltage Ripple if the Chip is Opperating.I assume that, with the long Cables, the Ripple reaches a certain Point were the internal supply Voltage to the Memory is simply to low and it's looses or at least corrupts it's Data.