Ethernet shield, purpose of Schmitt inverter?

I've been having some issues with a custom PCB i designed using the Arduino and the W5100. My design is effectively an exact copy of the ethernet shield with the exception of the Schmitt inverter (IC11). I have the SEN line pulled to 3.3V via a 4.7k resistor. I'm trying to figure out what exactly the purpose of this inverter is.

According to the W5100 datasheet, pin 31 (SEN) is for SPI enable. From what I can find, it appears the output of IC11 is push-pull. If so, whats the need for R8? If not, why is the W5100 SPI mode being disabled/enabled?

My particular situation is frustrating, I have the code running beautifully on the arduino w/ethernet shield. Successfully receiving over 50k UDP packets. When I use my PCB im lucky if I can receive 100...

Thanks!

The Arduino pin D10 is connected to the inverter input and the W5100 SCS (slave select) pin. The inverter output is connected to the W5100 SPI Enable (SEN) pin. According to page 10 of the Wiznet W5100 datasheet, the SEN pin is active HIGH. The SCS pin (without the inverter) is active LOW.

Both are connected to D10, but since the SEN is active HIGH, it needs an inverter in series to enable the SPI bus when D10 is LOW.

Without the inverter, I am surprised it works at all.

You are right, but the pin can also be pulled high continuously, no need for an inverter.

I found the actual reason in an app note ,here on page 3.

The W5100 drives MISO continuously, not a problem in single SPI slave device busses. This becomes a problem with multi-slave bus systems. Since I only have one slave SPI device (W5100) I dont need the inverter.

My actual problem was much more basic... I ended up having glitches in the 3.3V rail which caused the W5100 to reset itself!