Hi, I'm a bit stuck in debugging my custom PCB version of an Arduino Mega2560 with an Adafruit 1411 logger shield. I've designed dozens of production pcb's successfully before, using ground planes and decoupling caps and all the usual sensibilities.
I've used the reference schematic for the logger shield to make the pcb version. I was very happy with the working of the actual logger shield and my software when I was prototyping, but now while debugging the pcb, I find the following a bit disturbing and puzzling!
I'm using a 4050 for buffering the MOSI, SCK and SD_CS input lines from 5v to 3.3v, specifically a MC14050BDG that works down to a 3v supply rail. As per the diagram, I've left the 2560's MISO line directly connected to the DATA_OUT of the card. This doesn't fill me with confidence that it's correct though, i.e. a 3.3v logic part trying to talk to a 5v logic part.
The software I developed uploads and runs fine, but the call to the SD library to check the card fails, giving the standard "ERROR: card failed, or not present" as taken from the example code. The SD_CS line is correctly specified and connected however.
I've scoped my pcb's SD card's input pins, and I'm worried by the way that they occasionally exceed 3.3v - rising momentarily to 4v or higher. All the GND connections appear present and correct; I'm uncertain and confused, and wonder what I could have possibly missed?
So,
QUESTIONS:
- Is it correct that the SD data out line is connected directly to the 2560 micro, without 3.3v->5v buffering?
- Could this direct connection be raising the other 3.3v signal lines dangerously above 3.3v?
- Can anyone suggest some simpler steps for establishing correct operation with the SD card?
Many thanks,
Matt.