Witam
Mam dylemat przeczytałem w jednej z not katalogowych że karty SD jak i MMC powinny mieć sumę CRC równą 0x95 dla komend IDLE_STATE i OP_COND a dla pozostałych (SET_BLOCKLEN, READ_SINGLE_BLOCK itp) 0x00
Czy to prawda
I czy wystarczy taki kod do wysyłania komend:
Mam dylemat przeczytałem w jednej z not katalogowych że karty SD jak i MMC powinny mieć sumę CRC równą 0x95 dla komend IDLE_STATE i OP_COND a dla pozostałych (SET_BLOCKLEN, READ_SINGLE_BLOCK itp) 0x00
Czy to prawda
I czy wystarczy taki kod do wysyłania komend:
char sd_send_cmd(unsigned char command, unsigned long data, unsigned long CRC)
{
char recive,index;
SD_DDR |= CS;
SD_PORT &= ~CS;//ustawienie CS na 0 co spowoduje aktywacje karty
spi_transmit(command); // wysyłanie komendy i pozostałych 4 bajtów danych komendy
spi_transmit((char)(data>>24));
spi_transmit((char)(data>>16));
spi_transmit((char)(data>>8));
spi_transmit((char)data);
spi_transmit(CRC); // wysyłanie sumy kontrolnej CRC
for (index=0;index<10;index++)/pętla 10x
{
recive = spi_transmit(0xFF);// odbieranie przez spi odpowiedzi R1 z karty
if((recive & R1_BUSY) == 0)
{
return recive;
}
}
return -1;
}