I have a problem with a relatively simple board which consists of an ENC28J60 Ethernet controller and an ATmega168.
The circuit around the ENC28J60 is straight out of the datasheet and I have the same circuit built up in a prototype with DIP parts where it works, but in my SMD version the ENC sucks down 40 mA @ 3.3V and it gets pretty hot.
The datasheet mentions that a relatively high current is sunk by the two TPOUT pins and that the total current is around 180 mA, but there is no mention of how much current the ENC itself will pull out of VDD.
The oscillator runs perfectly and CLKOUT is 6.25 MHz, so the chip is not completely dead.
I've measured the voltage at every pin and:
- Every VSS pin is 0V
- Every VDD pin is 3.3V
- The oscillator and CLKOUT out are good.
- VCAP is 2.65V
- RBIAS is at 1.2V.
- !RESET is 3.3V.
- SPI looks ok.
Yet, I can't seem to raise the chip over SPI from the AVR and it gets pretty damn hot.
I've tried yanking !RESET low and that doesn't affect the power usage. Any clues?
Notice that the pin numbers for OSC1, OSC2, VDDOSC and VSSOSC are wrong in the schematic, I fixed that bug after exporting that version of the PDF however it is no longer available online.
OK, here's the real list of problems with my design that led to my problem:
- My 3.3V regulator is dumping waaay too much power, so it gets too hot.
- The ENC28J60 eats lots of power, even when working normally, so that gets hot too.
- I messed up and forgot to double check the Eagle library pinout, so I had to do some board hacking to fix that.
- The RX center tap should not be connected.
- I forgot to update my Makefile to build for the Mega168 part.
Problem number 5 was the real source of my problem, #1 & #2 kept me looking at the hardware for far too long, which is doubly embarrassing because I make my living writing software.