Some SD cards not detected

We moved our product from PXA320 / WinCE 6.0 to iMX6S / WinEC7 a while ago. We recently realized that, unlike on the old system, we cannot detect all SD cards on the new system anymore.

Following cards are working well on both systems:

  • SanDisk 4GB, Class2 (min seq. writing speed 2MB/s), SDHC
  • SanDisk 8GB, Class2 (min seq. writing speed 2MB/s), SDHC
  • Kingston 4GB, Class4 (min seq. writing speed 4MB/s), SDHC
  • Kingston 2GB, SD

Following cards are just being detected on the old system:

  • FujiFilm 4GB, Class4 (min sequential writing speed 4MB/s), SDHC (capacity 2G-32G)
  • Patriot 1GB, SD

The electronic circuit on both systems is identical and based on the reference design of the Colibri Eval board. We measured the signals and found some differences with the initial clock when plugging in an SD card. On the old system the clock frequency is 305kHz and on the new system just 95kHz. Beside this the signal quality is similar on both systems.

Do you have an idea why some SD cards cannot be detected on the newer system? What else could we check to find the root cause?

Hi @widtmann ,

What version of the evalboard you used as a reference?
I think in the past we used physical pull-up resistors on data and clock lines whereas on the newer designs we removed those physical resistors and enable the SOC internal switchable pull resistors.

Maybe this explains the issues you’re seeing.
Another reason could be traces lengths.

Did you try it with out standard Colibri Eval board? Does it work with all cards there?

Hi @germano.tx
The product was released in 2012, so it probably based on an older version of the evalboard. However, we checked the pull-up resistors in our circuit and could not improve the behavior by changing them. In the meantime we found out that the temporary short circuiting of serial resistors improves the detection of some SD cards. Based on this finding we checked the trace lengths as well as the symmetry of the lines. Both are not ideal on our layout. We will try to improve this on our side.

Hi @widtmann ,

Since the problem happens only on some cards and you confirmed that the issue could be trace lengths / symmetry, a quick fix could be to reduce the maximum clock speed allowed.

Check here:

Maybe that will also fix the issue

Hi @germano.tx
Thank you for that hint! We reduced the default clock speed from 52MHz to 25MHz on the newer system (iMX6S / WinEC7) and this solved our detection issue. Can you confirm that on the older system (PXA320 / WinCE 6.0) the lower clock frequency was used by default?

Since we are currently moving to Linux it would be interesting to know whether this limitation can be configured under Linux and how?

Hi @widtmann ,

I’m glad this solves your issue.
Yes, on PXA systems the max supported clock was much lower, i think it was 25 or 26 Mhz .
About your Linux related question. Unfortunately i don’t know. The easiest would be if you open a new ticket with this question specifying Linux as Target OS so the linux team will take care of it.

Ok, I’ll do that. Thanks a lot for your support!