Es posible que pueda aumentar el tamaño del bloque de datos devuelto por la tarjeta SD cuando emite un comando SINGLE_BLOCK_READ (CMD17). Esto se hace con CMD16 y el tamaño de bloque máximo / mínimo permitido depende de la versión SD, así como si está utilizando una tarjeta SDSC, SDHC o SDXC. Por lo que recuerdo, las versiones posteriores de las tarjetas SDSC admiten una longitud de bloque de 1024 bytes y creo que SDHC y SDXC admiten hasta 4096 bytes de longitud de bloque (¡verifique!). Deberá leer las especificaciones de la SD para obtener más detalles.
Sin embargo, incluso si cambia la longitud del bloque, tendrá que tener esto en cuenta en su controlador FAT, suponiendo que la tarjeta tenga el formato FAT. El campo BYTES_PER_SEC del Bloque de parámetros de inicio generalmente está configurado en 512 bytes por la mayoría de los formateadores SD para una máxima compatibilidad con la mayoría de los lectores de tarjetas. Esto significa que un solo bloque lee == un solo sector FAT, para la mayoría de los lectores. Si incrementas el tuyo a, digamos, 1024, sin embargo, significa que un solo bloque lee == 2 sectores FAT, asumiendo que el sistema FAT utiliza sectores de 512 bytes y no estás formateando las tarjetas para tus necesidades específicas. Esto significa que si desea leer / modificar un solo sector, tiene que marcar 2 sectores - ineficiente. Sin embargo, puede formatear la tarjeta y cambiar BYTES_PER_SEC para que coincida con la longitud del bloque de 1024 bytes de la tarjeta (esto depende del tipo de FAT), aunque tendrá que tener cuidado para asegurarse de que los campos afectados se ajusten de manera similar.
Aumentar la longitud del bloque también significa aumentar el tamaño del búfer que utilizas para almacenar los bloques que has leído. En general, es mucho más seguro aumentar la longitud del bloque y tener en cuenta esto en su código que modificar los campos FAT y arriesgarse a que la tarjeta sea ilegible en algunos lectores de tarjetas (aunque los lectores de Microsoft siempre admitirán cualquier cosa dentro de las especificaciones FAT).