Adafruit WaveHC Arduino Library
SdInfo.h
1 /* Arduino Sd2Card Library
2  * Copyright (C) 2009 by William Greiman
3  *
4  * This file is part of the Arduino Sd2Card Library
5  *
6  * This Library is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This Library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with the Arduino Sd2Card Library. If not, see
18  * <http://www.gnu.org/licenses/>.
19  */
20 #ifndef SdInfo_h
21 #define SdInfo_h
22 #include <stdint.h>
24 //
31 //
34 //------------------------------------------------------------------------------
37 #define CMD0 0X00
38 
39 #define CMD8 0X08
40 
41 #define CMD9 0X09
42 
43 #define CMD10 0X0A
44 
45 #define CMD13 0X0D
46 
47 #define CMD17 0X11
48 
49 #define CMD24 0X18
50 
51 #define CMD25 0X19
52 
53 #define CMD32 0X20
54 
56 #define CMD33 0X21
57 
58 #define CMD38 0X26
59 
60 #define CMD55 0X37
61 
62 #define CMD58 0X3A
63 
65 #define ACMD23 0X17
66 
68 #define ACMD41 0X29
69 //------------------------------------------------------------------------------
71 #define R1_READY_STATE 0
72 
73 #define R1_IDLE_STATE 1
74 
75 #define R1_ILLEGAL_COMMAND 4
76 
77 #define DATA_START_BLOCK 0XFE
78 
79 #define STOP_TRAN_TOKEN 0XFD
80 
81 #define WRITE_MULTIPLE_TOKEN 0XFC
82 
83 #define DATA_RES_MASK 0X1F
84 
85 #define DATA_RES_ACCEPTED 0X05
86 //------------------------------------------------------------------------------
88 typedef struct CID {
90  uint8_t mid;
92  char oid[2];
94  char pnm[5];
96  unsigned prv_m : 4;
98  unsigned prv_n : 4;
100  uint32_t psn;
102  unsigned mdt_year_high : 4;
104  unsigned reserved : 4;
106  unsigned mdt_month : 4;
108  unsigned mdt_year_low : 4;
110  unsigned always1 : 1;
112  unsigned crc : 7;
113 } cid_t;
114 //------------------------------------------------------------------------------
116 typedef struct CSDV1 {
118  unsigned reserved1 : 6;
120  unsigned csd_ver : 2;
122  uint8_t taac;
124  uint8_t nsac;
126  uint8_t tran_speed;
128  uint8_t ccc_high;
130  unsigned read_bl_len : 4;
132  unsigned ccc_low : 4;
133  // unsigned read_bl_len : 4;
135  unsigned c_size_high : 2;
137  unsigned reserved2 : 2;
139  unsigned dsr_imp : 1;
141  unsigned read_blk_misalign : 1;
143  unsigned write_blk_misalign : 1;
145  unsigned read_bl_partial : 1;
147  uint8_t c_size_mid;
149  unsigned vdd_r_curr_max : 3;
151  unsigned vdd_r_curr_min : 3;
153  unsigned c_size_low : 2;
155  unsigned c_size_mult_high : 2;
157  unsigned vdd_w_cur_max : 3;
159  unsigned vdd_w_curr_min : 3;
161  unsigned sector_size_high : 6;
163  unsigned erase_blk_en : 1;
165  unsigned c_size_mult_low : 1;
167  unsigned wp_grp_size : 7;
169  unsigned sector_size_low : 1;
171  unsigned write_bl_len_high : 2;
173  unsigned r2w_factor : 3;
175  unsigned reserved3 : 2;
177  unsigned wp_grp_enable : 1;
179  unsigned reserved4 : 5;
181  unsigned write_partial : 1;
183  unsigned write_bl_len_low : 2;
185  unsigned reserved5 : 2;
187  unsigned file_format : 2;
189  unsigned tmp_write_protect : 1;
191  unsigned perm_write_protect : 1;
193  unsigned copy : 1;
195  unsigned file_format_grp : 1;
197  unsigned always1 : 1;
199  unsigned crc : 7;
200 } csd1_t;
201 
202 //------------------------------------------------------------------------------
204 typedef struct CSDV2 {
206  unsigned reserved1 : 6;
208  unsigned csd_ver : 2;
210  uint8_t taac;
212  uint8_t nsac;
214  uint8_t tran_speed;
216  uint8_t ccc_high;
218  unsigned read_bl_len : 4;
220  unsigned ccc_low : 4;
222  unsigned reserved2 : 4;
224  unsigned dsr_imp : 1;
226  unsigned read_blk_misalign : 1;
228  unsigned write_blk_misalign : 1;
230  unsigned read_bl_partial : 1;
232  unsigned reserved3 : 2;
234  unsigned c_size_high : 6;
236  uint8_t c_size_mid;
238  uint8_t c_size_low;
240  unsigned sector_size_high : 6;
242  unsigned erase_blk_en : 1;
244  unsigned reserved4 : 1;
246  unsigned wp_grp_size : 7;
248  unsigned sector_size_low : 1;
250  unsigned write_bl_len_high : 2;
252  unsigned r2w_factor : 3;
254  unsigned reserved5 : 2;
256  unsigned wp_grp_enable : 1;
258  unsigned reserved6 : 5;
260  unsigned write_partial : 1;
262  unsigned write_bl_len_low : 2;
264  unsigned reserved7 : 2;
266  unsigned file_format : 2;
268  unsigned tmp_write_protect : 1;
270  unsigned perm_write_protect : 1;
272  unsigned copy : 1;
274  unsigned file_format_grp : 1;
276  unsigned always1 : 1;
278  unsigned crc : 7;
279 } csd2_t;
280 //------------------------------------------------------------------------------
282 union csd_t {
285 };
286 #endif
unsigned read_bl_partial
Definition: SdInfo.h:230
unsigned reserved5
Definition: SdInfo.h:254
unsigned reserved4
Definition: SdInfo.h:244
unsigned write_bl_len_low
Definition: SdInfo.h:183
unsigned always1
Definition: SdInfo.h:110
< CSD for version 2.00 cards
Definition: SdInfo.h:204
unsigned reserved5
Definition: SdInfo.h:185
unsigned write_bl_len_high
Definition: SdInfo.h:250
unsigned sector_size_high
Definition: SdInfo.h:161
unsigned write_blk_misalign
Definition: SdInfo.h:228
uint8_t tran_speed
Definition: SdInfo.h:214
unsigned vdd_w_curr_min
Definition: SdInfo.h:159
unsigned ccc_low
Definition: SdInfo.h:220
unsigned c_size_high
Definition: SdInfo.h:135
char pnm[5]
Definition: SdInfo.h:94
unsigned file_format_grp
Definition: SdInfo.h:195
unsigned crc
Definition: SdInfo.h:112
unsigned crc
Definition: SdInfo.h:199
unsigned sector_size_low
Definition: SdInfo.h:248
unsigned write_partial
Definition: SdInfo.h:260
unsigned reserved2
Definition: SdInfo.h:222
unsigned c_size_mult_high
Definition: SdInfo.h:155
unsigned perm_write_protect
Definition: SdInfo.h:270
unsigned dsr_imp
Definition: SdInfo.h:224
unsigned ccc_low
Definition: SdInfo.h:132
unsigned write_blk_misalign
Definition: SdInfo.h:143
unsigned copy
Definition: SdInfo.h:272
unsigned tmp_write_protect
Definition: SdInfo.h:268
uint8_t c_size_mid
Definition: SdInfo.h:236
unsigned mdt_year_high
Definition: SdInfo.h:102
unsigned write_bl_len_high
Definition: SdInfo.h:171
unsigned erase_blk_en
Definition: SdInfo.h:242
unsigned reserved3
Definition: SdInfo.h:175
unsigned erase_blk_en
Definition: SdInfo.h:163
unsigned wp_grp_enable
Definition: SdInfo.h:256
unsigned read_blk_misalign
Definition: SdInfo.h:141
unsigned vdd_w_cur_max
Definition: SdInfo.h:157
unsigned r2w_factor
Definition: SdInfo.h:252
uint8_t mid
Definition: SdInfo.h:90
unsigned reserved1
Definition: SdInfo.h:118
uint8_t c_size_mid
Definition: SdInfo.h:147
unsigned crc
Definition: SdInfo.h:278
uint32_t psn
Definition: SdInfo.h:100
unsigned write_bl_len_low
Definition: SdInfo.h:262
csd2_t v2
v2 CSD register
Definition: SdInfo.h:284
unsigned dsr_imp
Definition: SdInfo.h:139
unsigned reserved6
Definition: SdInfo.h:258
unsigned reserved2
Definition: SdInfo.h:137
unsigned tmp_write_protect
Definition: SdInfo.h:189
uint8_t nsac
Definition: SdInfo.h:124
unsigned mdt_year_low
Definition: SdInfo.h:108
unsigned always1
Definition: SdInfo.h:197
unsigned read_blk_misalign
Definition: SdInfo.h:226
unsigned vdd_r_curr_max
Definition: SdInfo.h:149
unsigned wp_grp_size
Definition: SdInfo.h:246
unsigned c_size_high
Definition: SdInfo.h:234
csd1_t v1
v1 CSD register
Definition: SdInfo.h:283
uint8_t tran_speed
Definition: SdInfo.h:126
unsigned file_format
Definition: SdInfo.h:187
uint8_t ccc_high
Definition: SdInfo.h:128
unsigned mdt_month
Definition: SdInfo.h:106
unsigned reserved
Definition: SdInfo.h:104
unsigned csd_ver
Definition: SdInfo.h:120
uint8_t nsac
Definition: SdInfo.h:212
< union of old and new style CSD register
Definition: SdInfo.h:282
char oid[2]
Definition: SdInfo.h:92
unsigned file_format_grp
Definition: SdInfo.h:274
unsigned read_bl_len
Definition: SdInfo.h:218
unsigned c_size_mult_low
Definition: SdInfo.h:165
unsigned c_size_low
Definition: SdInfo.h:153
unsigned r2w_factor
Definition: SdInfo.h:173
unsigned reserved3
Definition: SdInfo.h:232
unsigned csd_ver
Definition: SdInfo.h:208
unsigned wp_grp_enable
Definition: SdInfo.h:177
unsigned always1
Definition: SdInfo.h:276
unsigned read_bl_len
Definition: SdInfo.h:130
uint8_t ccc_high
Definition: SdInfo.h:216
uint8_t taac
Definition: SdInfo.h:210
unsigned file_format
Definition: SdInfo.h:266
unsigned write_partial
Definition: SdInfo.h:181
unsigned sector_size_high
Definition: SdInfo.h:240
unsigned sector_size_low
Definition: SdInfo.h:169
unsigned reserved7
Definition: SdInfo.h:264
unsigned reserved4
Definition: SdInfo.h:179
unsigned reserved1
Definition: SdInfo.h:206
unsigned vdd_r_curr_min
Definition: SdInfo.h:151
unsigned wp_grp_size
Definition: SdInfo.h:167
uint8_t c_size_low
Definition: SdInfo.h:238
< CID typedef struct
Definition: SdInfo.h:88
< CSD for version 1.00 cards
Definition: SdInfo.h:116
unsigned read_bl_partial
Definition: SdInfo.h:145
unsigned perm_write_protect
Definition: SdInfo.h:191
uint8_t taac
Definition: SdInfo.h:122
unsigned copy
Definition: SdInfo.h:193
unsigned prv_n
Definition: SdInfo.h:98
unsigned prv_m
Definition: SdInfo.h:96