/**
*
@file sdCardProtocol.h
*
@brief sdcard requests
and responses
*
* @author Laurent Saint-Marcel (lstmarcel@yahoo.fr)
*
@date 2009/06/26
*/
#ifndef __SD_CARD_PROTOCOL_H__
#define __SD_CARD_PROTOCOL_H__
/*
Common command set */
#define SD_CMD0_GO_IDLE_STATE
0x00
#define SD_CMD1_SEND_OPCOND
0x01
#define SD_CMD9_SEND_CSD
0x09
#define SD_CMD10_SEND_CID
0x0a
#define SD_CMD12_STOP_TRANSMISSION
0x0b
#define SD_CMD13_SEND_STATUS
0x0c
#define SD_CMD16_SET_BLOCKLEN
0x10
#define SD_CMD17_READ_BLOCK
0x11
#define SD_CMD18_READ_MULTIPLE_BLOCK
0x12
#define SD_CMD24_WRITE_BLOCK
0x18
#define SD_CMD25_WRITE_MULTIPLE_BLOCK
0x19
#define SD_CMD27_PROGRAM_CSD
0x1b
#define SD_CMD28_SET_WRITE_PROT
0x1c
#define SD_CMD29_CLR_WRITE_PROT
0x1d
#define SD_CMD30_SEND_WRITE_PROT
0x1e
#define SD_CMD32_ERASE_WR_BLK_START_ADDR 0x20
#define SD_CMD33_ERASE_WR_BLK_END_ADDR
0x21
#define SD_CMD38_ERASE
0x26
#define SD_CMD55_APP_CMD
0x37
#define SD_CMD56_GEN_CMD 0x38
#define SD_CMD58_READ_OCR
0x3a
#define SD_CMD59_CRC_ON_OFF
0x3b
#define SD_START_TOKEN 0xFE
/*
R1 format responses */
#define SD_R1_NOERROR 0x00
#define SD_R1_IDLE 0x01
#define SD_R1_ERASE 0x02
#define SD_R1_ILLEGAL 0x04
#define SD_R1_CRC_ERR 0x08
#define SD_R1_ERASE_SEQ 0x10
#define SD_R1_ADDR_ERR 0x20
#define SD_R1_PARAM_ERR 0x40
/*
R2 format responses - second byte only, first is identical to R1 */
#define SD_R2_LOCKED 0x01
#define SD_R2_WP_FAILED 0x02
#define SD_R2_ERROR 0x04
#define SD_R2_CTRL_ERR 0x08
#define SD_R2_ECC_FAIL 0x10
#define SD_R2_WP_VIOL 0x20
#define SD_R2_ERASE_PARAM 0x40
#define SD_R2_RANGE_ERR 0x80
/*
Error mask for debug (used with sdGetError) */
#define SD_CARD_ERROR_INIT_1 0x1100
#define SD_CARD_ERROR_INIT_2 0x1200
#define SD_CARD_ERROR_WRITE_1 0x2100
#define SD_CARD_ERROR_WRITE_2 0x2200
#define SD_CARD_ERROR_WRITE_3 0x2300
#define SD_CARD_ERROR_READ_1 0x3100
#define SD_CARD_ERROR_READ_2 0x3200
#define SD_CARD_ERROR_REGISTER_1 0x4100
#define SD_CARD_ERROR_REGISTER_2 0x4200
#define SD_CARD_ERROR_REGISTER_3 0x4300
#define SD_CARD_ERROR_OCR_1 0x5100
#define SD_CARD_ERROR_OCR_2 0x5200
#endif