Using a micro SD card on the Cerb40

So I looked at the schematics to the CerbuinoBee and hooked up a micro SD card socket the same way to the Cerb40 with wires on a breadboard. But I have a bit of a mystery… I have 6 microSD cards. 3 of them generic 1GB and 3 of them Sandisk 1GB. All are formatted FAT32 with a 512 byte cluster size and a few files in the root. So, here is the mystery. All 3 Sandisk cards work perfectly. But, all 3 Generic cards fail on the Directory.GetFiles method, throwing a NotSupportedException. What makes it more interesting is that ALL of the cards (including Generic) work fine on the CerbuinoBee. And since they have the same firmware and it is the same app, the only conclusion I can come up with is that I wired it up wrong. But then, why does it work with the Sandisk Cards?

Also, I did not connect the PC2 → CDN connection because the micro sd socket I have does not appear to have a CDN connection (whatever that is…).

Note: Code for this test is shown here: http://www.tinyclr.com/forum/topic?id=7593&page=3#msg78949

Thoughts?
-Valkyrie-MT

If I remeber right, there was a thread about using different caps to reduce the noise, because some card were too sensitive. I think it was related to Domino or Panda II, but it might be applicable here as well.

Does the only exception that you have is while trying to get files? What about the instanciation of persistent storage and mounting the filesystem?

In our case, we have unresolved issue with µSD. Modifying the caps did not solve the problem. Maybe bad routing but some boards works while others with the same routing fails. Moreover as in your case some cards works well while others fails during persistent storage instanciation. For now the problem is still open…

Interesting, that is certainly plausible. I’ll have to do some googling. I have an alternate 3.3V power source I might try to use to power the Generic cards. I am currently using the onboard Cerb40 3.3V (soldered on) regulator (which also has a 47uF capacitor). I had already tried adding a 0.1uF capacitor as is shown in the CerbuinoBee schematic, but saw no difference. I think I have some 220uF ceramic disk capacitors too. Maybe I’ll try that. Bigger is better right? :slight_smile:

Question… If I connect another capacitor in parallel (I have a bag full of 'em), would that double my capacitance? Could that help?

Interesting/related links:

https://forum.sparkfun.com/viewtopic.php?f=14&t=30472
http://www.roland-riegel.de/sd-reader/index.html
http://arduino.cc/forum/index.php/topic,58643.0.html

-Valkyrie-MT

Well, I tried an extra 47uF capacitor by the card, shortened my wire lengths to 3 inches (from 6 inches) and used an external 3.3V regulated power supply, but got the same results of the Sandisk cards working and the Generic not working. At this point I think I am gonna order a bunch of different uSD cards to experiment with because I just don’t see the difference between my breadboard and the CerbuinoBee. One thing of interest – it seems that the CerbuinoBee does not have a ground plane/copper pour… is that normal?

-Valkyrie-MT

How did you wire them in? Make sure that all your wires are the same length, to within a few mm.

Some cards might request a higher comunications speed and then mixed wire lengths might become a problem.

2 Likes

I just used some jumper wires with a breadboard. I’m sure the lengths vary by more than a few mm. That could definitely be the cause. It also explains why the Sandisk cards work and others don’t.

@ GMod(Errol) - Just as a wrap up. I ended up making my own pcb for the MicroSD card with similar trace lengths and sure enough, all the cards work now. Thanks for the advice!

Glad you got it sorted out. :slight_smile: