-
- #ifndef SdInfo_h
- #define SdInfo_h
- #include <stdint.h>
-
-
-
-
-
-
-
-
-
-
-
-
-
- uint8_t const SPI_FULL_SPEED = 2;
-
- uint8_t const SPI_DIV3_SPEED = 3;
-
- uint8_t const SPI_HALF_SPEED = 4;
-
- uint8_t const SPI_DIV6_SPEED = 6;
-
- uint8_t const SPI_QUARTER_SPEED = 8;
-
- uint8_t const SPI_EIGHTH_SPEED = 16;
-
- uint8_t const SPI_SIXTEENTH_SPEED = 32;
-
-
-
- uint16_t const SD_INIT_TIMEOUT = 2000;
-
- uint16_t const SD_ERASE_TIMEOUT = 10000;
-
- uint16_t const SD_READ_TIMEOUT = 300;
-
- uint16_t const SD_WRITE_TIMEOUT = 600;
-
-
-
- uint8_t const CMD0 = 0X00;
-
- uint8_t const CMD8 = 0X08;
-
- uint8_t const CMD9 = 0X09;
-
- uint8_t const CMD10 = 0X0A;
-
- uint8_t const CMD12 = 0X0C;
-
- uint8_t const CMD13 = 0X0D;
-
- uint8_t const CMD17 = 0X11;
-
- uint8_t const CMD18 = 0X12;
-
- uint8_t const CMD24 = 0X18;
-
- uint8_t const CMD25 = 0X19;
-
- uint8_t const CMD32 = 0X20;
-
- uint8_t const CMD33 = 0X21;
-
- uint8_t const CMD38 = 0X26;
-
- uint8_t const CMD55 = 0X37;
-
- uint8_t const CMD58 = 0X3A;
-
- uint8_t const CMD59 = 0X3B;
-
- uint8_t const ACMD23 = 0X17;
-
- uint8_t const ACMD41 = 0X29;
-
-
- uint8_t const R1_READY_STATE = 0X00;
-
- uint8_t const R1_IDLE_STATE = 0X01;
-
- uint8_t const R1_ILLEGAL_COMMAND = 0X04;
-
- uint8_t const DATA_START_BLOCK = 0XFE;
-
- uint8_t const STOP_TRAN_TOKEN = 0XFD;
-
- uint8_t const WRITE_MULTIPLE_TOKEN = 0XFC;
-
- uint8_t const DATA_RES_MASK = 0X1F;
-
- uint8_t const DATA_RES_ACCEPTED = 0X05;
-
-
- typedef struct CID {
-
-
- unsigned char mid;
-
-
- char oid[2];
-
-
- char pnm[5];
-
-
- unsigned char prv_m : 4;
-
- unsigned char prv_n : 4;
-
-
- uint32_t psn;
-
-
- unsigned char mdt_year_high : 4;
-
- unsigned char reserved : 4;
-
-
- unsigned char mdt_month : 4;
-
- unsigned char mdt_year_low :4;
-
-
- unsigned char always1 : 1;
-
- unsigned char crc : 7;
- }__attribute__((packed)) cid_t;
-
-
- typedef struct CSDV1 {
-
- unsigned char reserved1 : 6;
- unsigned char csd_ver : 2;
-
- unsigned char taac;
-
- unsigned char nsac;
-
- unsigned char tran_speed;
-
- unsigned char ccc_high;
-
- unsigned char read_bl_len : 4;
- unsigned char ccc_low : 4;
-
- unsigned char c_size_high : 2;
- unsigned char reserved2 : 2;
- unsigned char dsr_imp : 1;
- unsigned char read_blk_misalign :1;
- unsigned char write_blk_misalign : 1;
- unsigned char read_bl_partial : 1;
-
- unsigned char c_size_mid;
-
- unsigned char vdd_r_curr_max : 3;
- unsigned char vdd_r_curr_min : 3;
- unsigned char c_size_low :2;
-
- unsigned char c_size_mult_high : 2;
- unsigned char vdd_w_cur_max : 3;
- unsigned char vdd_w_curr_min : 3;
-
- unsigned char sector_size_high : 6;
- unsigned char erase_blk_en : 1;
- unsigned char c_size_mult_low : 1;
-
- unsigned char wp_grp_size : 7;
- unsigned char sector_size_low : 1;
-
- unsigned char write_bl_len_high : 2;
- unsigned char r2w_factor : 3;
- unsigned char reserved3 : 2;
- unsigned char wp_grp_enable : 1;
-
- unsigned char reserved4 : 5;
- unsigned char write_partial : 1;
- unsigned char write_bl_len_low : 2;
-
- unsigned char reserved5: 2;
- unsigned char file_format : 2;
- unsigned char tmp_write_protect : 1;
- unsigned char perm_write_protect : 1;
- unsigned char copy : 1;
-
- unsigned char file_format_grp : 1;
-
- unsigned char always1 : 1;
- unsigned char crc : 7;
- }__attribute__((packed)) csd1_t;
-
-
- typedef struct CSDV2 {
-
- unsigned char reserved1 : 6;
- unsigned char csd_ver : 2;
-
-
- unsigned char taac;
-
-
- unsigned char nsac;
-
- unsigned char tran_speed;
-
- unsigned char ccc_high;
-
-
- unsigned char read_bl_len : 4;
- unsigned char ccc_low : 4;
-
-
- unsigned char reserved2 : 4;
- unsigned char dsr_imp : 1;
-
- unsigned char read_blk_misalign :1;
-
- unsigned char write_blk_misalign : 1;
-
- unsigned char read_bl_partial : 1;
-
-
- unsigned char c_size_high : 6;
-
- unsigned char reserved3 : 2;
-
-
- unsigned char c_size_mid;
-
-
- unsigned char c_size_low;
-
-
- unsigned char sector_size_high : 6;
-
- unsigned char erase_blk_en : 1;
-
- unsigned char reserved4 : 1;
-
- unsigned char wp_grp_size : 7;
-
- unsigned char sector_size_low : 1;
-
-
- unsigned char write_bl_len_high : 2;
-
- unsigned char r2w_factor : 3;
-
- unsigned char reserved5 : 2;
-
- unsigned char wp_grp_enable : 1;
-
- unsigned char reserved6 : 5;
-
- unsigned char write_partial : 1;
-
- unsigned char write_bl_len_low : 2;
-
- unsigned char reserved7: 2;
-
- unsigned char file_format : 2;
- unsigned char tmp_write_protect : 1;
- unsigned char perm_write_protect : 1;
- unsigned char copy : 1;
-
- unsigned char file_format_grp : 1;
-
-
- unsigned char always1 : 1;
-
- unsigned char crc : 7;
- }__attribute__((packed)) csd2_t;
-
-
- union csd_t {
- csd1_t v1;
- csd2_t v2;
- };
- #endif
|