26 #include "Sd2PinMap.h"
47 #define MEGA_SOFT_SPI 0
49 #if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__))
51 #endif // MEGA_SOFT_SPI
75 #define OPTIMIZE_HARDWARE_SPI
88 #endif // SOFTWARE_SPI
91 #define SD_PROTECT_BLOCK_ZERO 1
162 Sd2Card(
void) : errorCode_(0), inBlock_(0), partialBlockRead_(0), type_(0) {}
164 uint8_t
erase(uint32_t firstBlock, uint32_t lastBlock);
184 uint8_t
init(uint8_t sckRateID) {
187 uint8_t
init(uint8_t sckRateID, uint8_t chipSelectPin);
191 uint8_t
readBlock(uint32_t block, uint8_t* dst);
193 uint16_t offset, uint16_t count, uint8_t* dst);
199 return readRegister(CMD10, cid);
205 return readRegister(CMD9, csd);
210 uint8_t
type(
void)
const {
return type_;}
211 uint8_t
writeBlock(uint32_t blockNumber,
const uint8_t* src);
213 uint8_t
writeStart(uint32_t blockNumber, uint32_t eraseCount);
217 uint8_t chipSelectPin_;
221 uint8_t partialBlockRead_;
225 uint8_t cardAcmd(uint8_t cmd, uint32_t arg) {
226 cardCommand(CMD55, 0);
227 return cardCommand(cmd, arg);
229 uint8_t cardCommand(uint8_t cmd, uint32_t arg);
230 void error(uint8_t code) {errorCode_ = code;}
231 uint8_t readRegister(uint8_t cmd,
void* buf);
232 uint8_t sendWriteCommand(uint32_t blockNumber, uint32_t eraseCount);
233 void chipSelectHigh(
void);
234 void chipSelectLow(
void);
235 void type(uint8_t value) {type_ = value;}
236 uint8_t waitNotBusy(uint16_t timeoutMillis);
237 uint8_t
writeData(uint8_t token,
const uint8_t* src);
238 uint8_t waitStartBlock(
void);
uint8_t eraseSingleBlockEnable(void)
Definition: Sd2Card.cpp:219
uint8_t const SD_CARD_ERROR_WRITE
Definition: Sd2Card.h:135
uint8_t init(uint8_t sckRateID)
Definition: Sd2Card.h:184
uint8_t const SD_CARD_ERROR_STOP_TRAN
Definition: Sd2Card.h:133
uint8_t partialBlockRead(void) const
Definition: Sd2Card.h:190
uint16_t const SD_ERASE_TIMEOUT
Definition: Sd2Card.h:95
uint8_t writeBlock(uint32_t blockNumber, const uint8_t *src)
Definition: Sd2Card.cpp:560
uint32_t cardSize(void)
Definition: Sd2Card.cpp:140
uint8_t writeData(const uint8_t *src)
Definition: Sd2Card.cpp:596
uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE
Definition: Sd2Card.h:139
uint8_t const SD_CARD_ERROR_READ
Definition: Sd2Card.h:127
uint8_t const SD_CARD_TYPE_SDHC
Definition: Sd2Card.h:153
void readEnd(void)
Definition: Sd2Card.cpp:439
uint8_t const SD_CARD_ERROR_CMD0
Definition: Sd2Card.h:103
uint8_t const SD_CARD_ERROR_ERASE
Definition: Sd2Card.h:121
uint8_t const SPI_HALF_SPEED
Definition: Sd2Card.h:31
uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING
Definition: Sd2Card.h:141
uint8_t readCSD(csd_t *csd)
Definition: Sd2Card.h:204
Sd2Card(void)
Definition: Sd2Card.h:162
uint8_t const SD_CHIP_SELECT_PIN
Definition: Sd2Card.h:65
uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT
Definition: Sd2Card.h:143
uint8_t const SD_CARD_TYPE_SD2
Definition: Sd2Card.h:151
uint8_t const SPI_MOSI_PIN
Definition: Sd2Card.h:68
uint8_t const SD_CARD_ERROR_SCK_RATE
Definition: Sd2Card.h:145
uint8_t readCID(cid_t *cid)
Definition: Sd2Card.h:198
uint16_t const SD_WRITE_TIMEOUT
Definition: Sd2Card.h:99
uint8_t const SPI_SCK_PIN
Definition: Sd2Card.h:72
uint8_t const SD_CARD_ERROR_READ_REG
Definition: Sd2Card.h:129
uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO
Definition: Sd2Card.h:137
Raw access to SD and SDHC flash memory cards.
Definition: Sd2Card.h:159
uint8_t const SD_CARD_ERROR_ACMD41
Definition: Sd2Card.h:117
uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT
Definition: Sd2Card.h:125
uint8_t const SD_CARD_ERROR_CMD17
Definition: Sd2Card.h:107
uint8_t init(void)
Definition: Sd2Card.h:176
uint8_t const SD_CARD_ERROR_READ_TIMEOUT
Definition: Sd2Card.h:131
uint8_t writeStop(void)
Definition: Sd2Card.cpp:687
uint8_t const SD_CARD_ERROR_CMD24
Definition: Sd2Card.h:109
uint16_t const SD_INIT_TIMEOUT
Definition: Sd2Card.h:93
uint8_t const SD_CARD_TYPE_SD1
Definition: Sd2Card.h:149
uint8_t writeStart(uint32_t blockNumber, uint32_t eraseCount)
Definition: Sd2Card.cpp:656
uint8_t const SD_CARD_ERROR_BAD_CSD
Definition: Sd2Card.h:119
uint8_t const SD_CARD_ERROR_CMD8
Definition: Sd2Card.h:105
uint8_t const SPI_FULL_SPEED
Definition: Sd2Card.h:29
uint8_t const SPI_MISO_PIN
Definition: Sd2Card.h:70
uint8_t type(void) const
Definition: Sd2Card.h:210
uint8_t const SD_CARD_ERROR_ACMD23
Definition: Sd2Card.h:115
uint8_t const SD_CARD_ERROR_CMD25
Definition: Sd2Card.h:111
uint16_t const SD_READ_TIMEOUT
Definition: Sd2Card.h:97
uint8_t const SD_CARD_ERROR_CMD58
Definition: Sd2Card.h:113
uint8_t erase(uint32_t firstBlock, uint32_t lastBlock)
Definition: Sd2Card.cpp:187
uint8_t errorData(void) const
Definition: Sd2Card.h:171
uint8_t setSckRate(uint8_t sckRateID)
Definition: Sd2Card.cpp:493
uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK
Definition: Sd2Card.h:123
uint8_t readData(uint32_t block, uint16_t offset, uint16_t count, uint8_t *dst)
Definition: Sd2Card.cpp:369
uint8_t const SPI_QUARTER_SPEED
Definition: Sd2Card.h:33
uint8_t readBlock(uint32_t block, uint8_t *dst)
Definition: Sd2Card.cpp:355
uint8_t errorCode(void) const
Definition: Sd2Card.h:169