ummm que rayos,
nose si me puedan ayudar a implementar la escritura continua de bloques,o bien saber si termino de escribir los 512bytes para que pase a escribir al siguiente bloque, este es mi codigo de escritura para la MMC, guarda en la memroia lo que llega por RS232. la verdad ya llevo algun rato dandome de topes porque no consigo guardar en varios bloques sin tener k asignarlos manualmente, desearia que se asignaran de manera automatica en cuanto se llene el bloque actual. suky comenta que con el CMD18/CMD25 es probable que se pueda pero no tengo idea decomo implementarlos.
int mmc_write_block(unsigned long block_number)
{
unsigned long varh,varl;
varl=((block_number&0x003F)<<9);
varh=((block_number&0xFFC0)>>7);
OUTPUT_LOW(PIN_C2); // set SS = 0 (on)
SPI_WRITE(0x58); // send mmc write block 58
SPI_WRITE(make8(varh,1));
SPI_WRITE(make8(varh,0));
SPI_WRITE(make8(varl,1));
SPI_WRITE(0x00); // always zero as mulitples of 512
SPI_WRITE(0xFF); // checksum is no longer required but we always send 0xFF
if((mmc_response(0x00))==1) return 1;
SPI_WRITE(0xFE); // send data token
printf("Listo para recibir datos\r\n");
do
{
dato=getch();
if(dato!=0x00)
{
if(dato=='Z') // si es Z sal para llamar subrutina Leer
{
goto next;
}
else
{
SPI_WRITE(dato); // escribiendo en memoria lo que llega por RS232
}
}
}while(TRUE);
Next:
SPI_WRITE(0xFF); // dummy CRC
SPI_WRITE(0xFF);
if((SPI_READ(0xFF)&0x0F)!=0x05) return 1;
OUTPUT_HIGH(PIN_C2); // set SS = 1 (off)
return 0;
}
Gracias: Saludos