SD Card begin(cspin) 'error No SD Card'

Thanks for telling me if someone has recently problems with some new SDHC ‘not recognized’ on adruinos which, otherwise, work perfectly with SDHD cards bought one year ago.

Context :
I use 3 Arduino mega with SeedStudio TFT Touch Shield and SDHC. One of them works perfectly, for months day and night for process control application! That is OK. It uses a SDHC card for graphics data and stats recoding. Everything is OK with it. Using any combination of the 3 arduinos and any of the TFT Touch Shields, works OK in the same manner, but only with my old SD card. So the hardware and wiring is OK. The problem seems to be on the SDHC side.

Problem :
I bought recently other new SD cards ( micro SDHC, 8Go) , ( micro SDHC, 16Go) ( micro SD, 2Go), from Samsung, PNY, Emtec. None of them is recognized, on any of the 3 arduinos! Tested, of course, with just the SeedStudio TFT Touch Shield directly plugged on top of the arduino and nothing else connected. All of the cards work perfectly on a computer (Mac) and on a camera. If I use my first SDHC card on any of the two others arduinos, it is recognized and works perfectly. My problem is that it is the only one which works.

I tested non simply my own code but any of the arduino provided examples. All of them fail with ‘no sd card” message.

Before joining the forum, and before buying one more SDHC, I tried to (unsuccessfully) debug the problem. I have some precise information :

I analyzed in details the SD2 library. The error is caused by the ACMD14 command, which goes into timeout (send ERR code 8). I also looked at the official SD specification book: ‘SD Specifications Part A2 SD Host Controller Simplified Specification Version 3.00 Technical Committee’. The SD library code for the internal ‘init’ method does not match exactly the specifications, especially if the SDHC cards require specific voltage window (see page 100 to 105), but it obviously works fine with old cards.

Question :
Is there something new on these SD card, (operate in low voltage?), is there an upgrade of the SD library, has someone got the same problem?

Thanks a lot.

The failure of ACMD41 is not a voltage problem.

All standard and High Capacity cards support the standard voltage range: 2.7-3.6 V. Low, 1.8 V, signaling is not supported in SPI mode.

SD Specifications
Part 1
Physical Layer Simplified Specification
Version 4.10
January 22, 2013

See page 5.

3.2 Supply Voltage
In terms of operating supply voltage, two types of SD Memory Cards are defined:
• High Voltage SD Memory Cards that can operate the voltage range of 2.7-3.6 V.
• UHS-II SD Memory Card that can operate the voltage ranges VDD1: 2.7-3.6 V, VDD2: 1.70-1.95V

The voltage range check is optional and Arduino shields do not allow changing to the 1.70-1.95 V range supported by UHS-II cards. UHS-II cards must be used in the standard voltage range.

See Figure 7-2 page 155

Not Mandatory to send CMD58:
Though it is recommended
to be done in order to get
the supported voltage range
of the card.

Hi,

Thanks. Yes, it is not a voltage problem, as told in the specification book.
But the problem remains.

I made other tests :

  1. Vcc (4,87V) and 3.3 (3,27v) are ok, both on the arduino and on the TFT shield.
  2. I bought a new (4th time) SDHC card, formatted it with SDFormatter. It is still “not recognized” on the adruino but works on the Mac. None of the 4 new cards plays…
  3. I replaced the SeedStudio TFT touch shield by a Gameduino2, with special wiring for SPI on Mega. The gameduino works perfectly draws graphics, texts, and so on, but fails when asking to load bitmaps from the cards!

So :
It, I may conclude :
a) the problem is not on the SD plug of the SeedStudio TFT touch shield, since the same behavior occurs with another very different card.
b) he problem is not is not in the DS library, since the Gameduino directly uses the graphical processor to acces the SDcard.
c) It is not on the cards side, since they work on other machines, are formatted, and so on.
d) I suppose these SDHC cards do not require more power than the arduino can provide, since I do not observe any change in the Vcc nor in the 3.3v
When testing, the arduino is connected to a Mac, which do not signal excess power on the USB.

Has someone an idea? It looks completly mad!

Since most of new cards are UHS-II, I suppose many Arduino use them successfully.

Thanks.

Since most of new cards are UHS-II, I suppose many Arduino use them successfully.

I have not used an UHS-II card on Arduino since the features of of no value for Arduino SPI and the cards are very expensive.

You may have a problem since true UHS-II cards have many extra pins. It depends on the socket on your shield.

UHS-II
Specified in version 4.0, further raises the data transfer rate to a theoretical maximum of 156 MB/s (half duplex) or 312 MB/s (full duplex) using an additional row of pins (a total of 17 pins for full-size and 16 pins for micro-size cards).

Do your cards look like this?

since I do not observe any change in the Vcc nor in the 3.3v

That must not be visible on a voltmeter connected. The current peak during sdcard's init could last a few msecs, when the init not successful the card switches itself off and it draws a few hundred microamps. Would be great to know how much the new cards draw during a read/write..