Попробую, хотя меня берут сомнения в целесообразности. Ведь я пользуюсь только функцией rcvr_spi, и в конце всегда вычитываю буфер приема, откуда взяться невычитанным данным.
Или я что-то не учел?
Нашел баг в либе FatFs.
Код
Fres = f_getfree(0, &p1, &pfs);
CardSize = (DWORD)(pfs->max_clust - 2) * pfs->csize / 2;
FreeSize = p1 * pfs->csize / 2;
BuzySize = CardSize - FreeSize;
CardSize = (DWORD)(pfs->max_clust - 2) * pfs->csize / 2;
FreeSize = p1 * pfs->csize / 2;
BuzySize = CardSize - FreeSize;
Для MMC и SDv1 свободное место считает нормально. Для SDv2 - врет (карта почти пустая, а из 2 ГБ высчитывает свободных ~200 кБ).