dangerous 5V on the ethernet shield MISO signal

Hi everybody,

I see that in the ethernet shield there is no buffer/level translator on the MISO signal generated by the SD card.

This can be ok for what concern the logic threshold, but it seems to me that serious problems arise when on another shield there is an other SPI device, this time 5V powered.

When this second device is selected, it puts a 5V level on the MISO signal and this can damage the SD card that is 3.3V powered and not 5V tolerant.

What do you think?
Any comment is welcome.

Marco

According to the datasheet of the W5100 : "3.3V operation with 5V I/O signal tolerance".

Hi Peter,

I agree with you the W5100 is 5 V tolerant, but I am talking about SD cards and, as far as I know, they are not 5V tolerant.

Please see table 3-4 on page 3-7 in the following document:

http://goo.gl/j0eTDj

It is clearly stated "Peak voltage on all lines Max VDD +0.3V" (and VDD for SD cards is 3.3V)

Marco

I had to read your post a few times, but now I understand it :stuck_out_tongue:
My conclusion: Yep, true, it is a problem if you also want to use the SPI bus for 5V devices.

The Ethernet Shield does not allow to add another shield on top of it. So it it is designed to be the only user of the SPI bus.

Even the Adafruit logging shield connects the SD MISO directly to the Arduino.
Also the Sparkfun micro SD shield connects MISO directly to the Arduino.

I had to look really hard to find a board with level shifter for the MISO :
http://forum.hobbycomponents.com/viewtopic.php?f=79&t=1756
This has a level shifter for MISO (warning, many scripts running on that page) Steve Marple's blog: Interfacing 3.3V devices to 5V Arduinos

When you need the SPI bus for other things (and why would someone not want to do that), you might have to change the hardware.

What if an SD card gets 5V at the MISO pin while not being selected ? I think that most SD cards won't even be damaged, but I won't try it :wink:

Hi Peter,

The Ethernet Shield does not allow to add another shield on top of it. So it it is
designed to be the only user of the SPI bus.

I don't understand what you mean: if you are referring to the fact that in the ethernet shield the six pins connector is not brought back on the component side, I remember you that on the UNO the SPI signals are also connected on pins 13, 12, and 11.
Further nobody forbids you to put another shield on the bottom of the ethernet, if you don't like to put it on the top. :slight_smile:

Even the Adafruit logging shield connects the SD MISO directly to the Arduino.
Also the Sparkfun micro SD shield connects MISO directly to the Arduino.

This doesn't meant that if other people do that this is the right way to go. :slight_smile:

What if an SD card gets 5V at the MISO pin while not being selected ? I think that
most SD cards won't even be damaged, but I won't try it :wink:

I think this is not the way an engineer has to think!
Possibly the folks that write the specs at SunDisk are not fools and they know what they write.

When you need the SPI bus for other things (and why would someone not want to do that),
you might have to change the hardware.

I agree with you on this point. :slight_smile:

But the real problem is that I never read any kind of warning about the issue I am writing about, and this seems to me very strange!

Marco

Just to be crystal clear, the way in which, in my opinion, a 3.3V SPI device not 5V tolerant, must be properly interface in the Arduino world is shown in the attachment.

Any comment is welcome.

Marco

Arduino_SPI_3.3V_device_interface.pdf (96.6 KB)

You are probably correct. You might try asking this question in the storage section. fat16lib may know the answer. He's the person to ask about SD cards.

Sulimarco, I agree with everything in your Reply #4 and #5.
SurferTim, specs are specs.

The Arduino Uno is still the best Arduino board to start with. But it is about time for a new cheap ARM M0 3.3V board to take its place to get rid of all that 5V nonsense :smiley: