/* Arduino FAT16 Library * Copyright (C) 2008 by William Greiman * * This file is part of the Arduino FAT16 Library * * This Library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with the Arduino Fat16 Library. If not, see * . */ #ifndef SdInfo_h #define SdInfo_h #include // Based on the document: // // SD Specifications // Part 1 // Physical Layer // Simplified Specification // Version 2.00 // September 25, 2006 // // www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf // // Card IDentification (CID) register typedef struct CID { // byte 0 uint8_t mid; // Manufacturer ID // byte 1-2 char oid[2]; // OEM/Application ID // byte 3-7 char pnm[5]; // Product name // byte 8 unsigned prv_m : 4; // Product revision n.m unsigned prv_n : 4; // byte 9-12 uint32_t psn; // Product serial number // byte 13 unsigned mdt_year_high : 4; // Manufacturing date unsigned reserved : 4; // byte 14 unsigned mdt_month : 4; unsigned mdt_year_low :4; // byte 15 unsigned always1 : 1; unsigned crc : 7; }cid_t; // Card-Specific Data register typedef struct CSD { // byte 0 unsigned reserved1 : 6; unsigned csd_ver : 2; // byte 1 uint8_t taac; // byte 2 uint8_t nsac; // byte 3 uint8_t tran_speed; // byte 4 uint8_t ccc_high; // byte 5 unsigned read_bl_len : 4; unsigned ccc_low : 4; // byte 6 unsigned c_size_high : 2; unsigned reserved2 : 2; unsigned dsr_imp : 1; unsigned read_blk_misalign :1; unsigned write_blk_misalign : 1; unsigned read_bl_partial : 1; // byte 7 uint8_t c_size_mid; // byte 8 unsigned vdd_r_curr_max : 3; unsigned vdd_r_curr_min : 3; unsigned c_size_low :2; // byte 9 unsigned c_size_mult_high : 2; unsigned vdd_w_cur_max : 3; unsigned vdd_w_curr_min : 3; // byte 10 unsigned sector_size_high : 6; unsigned erase_blk_en : 1; unsigned c_size_mult_low : 1; // byte 11 unsigned wp_grp_size : 7; unsigned sector_size_low : 1; // byte 12 unsigned write_bl_len_high : 2; unsigned r2w_factor : 3; unsigned reserved3 : 2; unsigned wp_grp_enable : 1; // byte 13 unsigned reserved4 : 5; unsigned write_partial : 1; unsigned write_bl_len_low : 2; // byte 14 unsigned reserved5: 2; unsigned file_format : 2; unsigned tmp_write_protect : 1; unsigned perm_write_protect : 1; unsigned copy : 1; unsigned file_format_grp : 1; // byte 15 unsigned always1 : 1; unsigned crc : 7; }csd_t; #endif // SdInfo_h