I'm guessing I'm just reading something incorrectly here, but I can't make this add up. From the SD card spec, section 5.3.3 tells us how to calculate card size (C_SIZE) from the data in CSR (CMD9 response):

enter image description here

So first, my "32GB" card gives this value as 0xE9E5 = 59877. Okay, so then my card is

59877 * 512 * 1024 = 31393316864 bytes

if KBytes means 1024 bytes... does it? But more confusing for me, the first minimum value given, "minimum user area size of SDHC Card is 4,211,712 sectors." Just below that in the spec, it says that a sector is 64KBytes, so then the minimum for an SDHC card is

4211712 * 64 * 1024 = 276018757632 bytes

or... 257GB??? That is clearly incorrect. So where am I going wrong?

EDIT I found an answer to my question about the definition of KByte in this spec: section has a bit map graphic that states that 32KBytes is (64 * 512 bytes). So KByte is what I would imagine it would mean, even though the marketing speak that has cluttered up the storage world made me question this.

  • \$\begingroup\$ I'm guessing this is just a typo in the spec (for all three CSR listings)? Can anyone confirm this and let me know I'm not a complete idiot? \$\endgroup\$ – TrivialCase Feb 3 at 1:24
  • 1
    \$\begingroup\$ The numbers work out right if you assume it means blocks (of 512 bytes), not sectors. \$\endgroup\$ – hobbs Feb 3 at 7:06
  • \$\begingroup\$ @hobbs I figured it was a typo. Thanks \$\endgroup\$ – TrivialCase Feb 4 at 16:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.