depends on the driver object you use to access it. There are a few older ones floating around that only work with <= 2GB cards (plain SD). The more usual ones should work with <= 32GB (SDHC). You can then make <= 2TB (SDXC) work by reformatting them to FAT32 (SDHC->SDXC transition didn't change the hardware protocol, just the factory formatting from FAT32 to exFAT)
I haven't seen any SDSC only drivers, but their protocol (Byte addressing) prevents them from working with > 2GB cards (Block addressing).
SDUC for over 2TB, up to 128TB, isn't supported. It adds prefixing complexity, like an ACMD, to the block addressing and I suspect will require more error handling.
EDIT: That said, it looks like a SDUC card will act as a 2 TB SDHC by default. The extension feature looks to be only activated if the driver requests it in the early ACMD41. The trick then is to format the card with first FAT32 partition contained entirely in the first 2 TB of the card.
EDIT2: Oh, and that would go for a SDSC driver too. A SDHC card will act as a 2GB SDSC card if the driver doesn't request for SDHC (HCS bit in ACMD41) extension.
Ohhh, it looks like SDUC cards won't do SPI mode at all. So rule of thumb is buy only cards marked as SDHC or SDXC.
PS: There's gonna be a lot of uControllers that'll trip up on this - Assuming SDUC cards start to be more common. All example driver code on the open web is exclusively SPI mode. I never found a single example of source code that operated in SD mode. My hunch is SD mode primarily exists as a licenced IP block with an associated API and binary blob to manage it.
Greater than 2 TB could be a long while off for being common though. It's not looking very easy to get there in such a small package. Price is more important for common.
Comments
depends on the driver object you use to access it. There are a few older ones floating around that only work with <= 2GB cards (plain SD). The more usual ones should work with <= 32GB (SDHC). You can then make <= 2TB (SDXC) work by reformatting them to FAT32 (SDHC->SDXC transition didn't change the hardware protocol, just the factory formatting from FAT32 to exFAT)
I haven't seen any SDSC only drivers, but their protocol (Byte addressing) prevents them from working with > 2GB cards (Block addressing).
SDUC for over 2TB, up to 128TB, isn't supported. It adds prefixing complexity, like an ACMD, to the block addressing and I suspect will require more error handling.
EDIT: That said, it looks like a SDUC card will act as a 2 TB SDHC by default. The extension feature looks to be only activated if the driver requests it in the early ACMD41. The trick then is to format the card with first FAT32 partition contained entirely in the first 2 TB of the card.
EDIT2: Oh, and that would go for a SDSC driver too. A SDHC card will act as a 2GB SDSC card if the driver doesn't request for SDHC (HCS bit in ACMD41) extension.
Ohhh, it looks like SDUC cards won't do SPI mode at all. So rule of thumb is buy only cards marked as SDHC or SDXC.
PS: There's gonna be a lot of uControllers that'll trip up on this - Assuming SDUC cards start to be more common. All example driver code on the open web is exclusively SPI mode. I never found a single example of source code that operated in SD mode. My hunch is SD mode primarily exists as a licenced IP block with an associated API and binary blob to manage it.
Greater than 2 TB could be a long while off for being common though. It's not looking very easy to get there in such a small package. Price is more important for common.