I have an STM32F4 reading audio from a microSD, and am using the Standard Peripheral Library and the eval SDIO_SD.C code as a starting point. Things are working fine, but read rates are important for my application and I'm noticing significant differences in the cards that I've been testing. Using a scope, I've measured the time between sending the SD_ReadBlock() command (CMD17) and the start of the actual DMA transfer (by looking at D0), which I take to be the card's read access time. Not only does this time seem large, but it's substantially larger on a brand new SanDisk Ultra UHS-1 card (350us) than an old 2GB off-brand card (150us).
I tried successfully running the SDIO clock at 48MHz, but the actual transfer once it starts is only 42us (at 24MHz) so cutting this in half doesn't really help all that much. I guess I don't understand the hoopla over the higher speed class cards if the access time, which appears to be the major limiting factor, is as large as I'm seeing.
Am I missing something?