31#include "../SpiDriver/SdSpiDriver.h"
32#include "../common/SysCall.h"
44#elif USE_BLOCK_DEVICE_INTERFACE
71 uint32_t sectorCount();
72#ifndef DOXYGEN_SHOULD_SKIP_THIS
91 bool erase(uint32_t firstSector, uint32_t lastSector);
97 bool eraseSingleSectorEnable();
102 void error(uint8_t code)
109 uint8_t errorCode()
const
114 uint32_t errorData()
const
132 bool readSector(uint32_t sector, uint8_t *dst)
134#if ENABLE_DEDICATED_SPI
135 return readSectors(sector, dst, 1);
137 return readSingle(sector, dst);
147 bool readSingle(uint32_t sector, uint8_t *dst);
156 bool readSectors(uint32_t sector, uint8_t *dst,
size_t ns);
166 bool readCID(cid_t *cid)
168 return readRegister(
CMD10, cid);
178 bool readCSD(
csd_t *csd)
180 return readRegister(
CMD9, csd);
188 bool readData(uint8_t *dst);
194 bool readOCR(uint32_t *ocr);
204 bool readStart(uint32_t sector);
209 bool readStatus(uint8_t *status);
231 bool writeSector(uint32_t sector,
const uint8_t *src)
235 return writeSingle(sector, src);
239 return writeSectors(sector, src, 1);
249 bool writeSingle(uint32_t sector,
const uint8_t *src);
258 bool writeSectors(uint32_t sector,
const uint8_t *src,
size_t ns);
263 bool writeData(
const uint8_t *src);
273 bool writeStart(uint32_t sector);
285 bool writeStart(uint32_t sector, uint32_t eraseCount);
298 uint8_t
cardAcmd(uint8_t cmd, uint32_t arg)
305 bool readData(uint8_t *dst,
size_t count);
306 bool readRegister(uint8_t cmd,
void *buf);
311 void type(uint8_t
value)
320 bool writeData(uint8_t token,
const uint8_t *src);
322#if SPI_DRIVER_SELECT < 2
325 m_spiDriver.activate();
329 m_spiDriver.begin(spiConfig);
333 m_spiDriver.deactivate();
337 return m_spiDriver.receive();
339 uint8_t spiReceive(uint8_t *buf,
size_t n)
341 return m_spiDriver.receive(buf, n);
343 void spiSend(uint8_t data)
345 m_spiDriver.send(data);
347 void spiSend(
const uint8_t *buf,
size_t n)
349 m_spiDriver.send(buf, n);
351 void spiSetSckSpeed(uint32_t maxSck)
353 m_spiDriver.setSckSpeed(maxSck);
363 m_spiDriverPtr->begin(spiConfig);
367 m_spiDriverPtr->deactivate();
371 return m_spiDriverPtr->receive();
373 uint8_t spiReceive(uint8_t *buf,
size_t n)
375 return m_spiDriverPtr->receive(buf, n);
377 void spiSend(uint8_t data)
379 m_spiDriverPtr->send(data);
381 void spiSend(
const uint8_t *buf,
size_t n)
383 m_spiDriverPtr->send(buf, n);
385 void spiSetSckSpeed(uint32_t maxSck)
387 m_spiDriverPtr->setSckSpeed(maxSck);
391#if ENABLE_DEDICATED_SPI
392 static const uint8_t IDLE_STATE = 0;
393 static const uint8_t READ_STATE = 1;
394 static const uint8_t WRITE_STATE = 2;
395 uint32_t m_curSector;
397 bool m_sharedSpi =
true;
399 static const bool m_sharedSpi =
true;
402 uint8_t
m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED;
const uint8_t CMD55
Definition SdCardInfo.h:159
const uint8_t CMD9
Definition SdCardInfo.h:134
union csd_t __attribute__
const uint8_t CMD10
Definition SdCardInfo.h:136
uint8_t SdCsPin_t
Definition SdFatConfig.h:139
static void dbgClearStats()
Definition SdSpiCard.cpp:63
static void dbgPrintStats()
Definition SdSpiCard.cpp:110
void sdCsWrite(SdCsPin_t pin, bool level)
Definition SdSpiChipSelect.cpp:34
static bool cardCommand(uint32_t xfertyp, uint32_t arg)
Definition SdioTeensy.cpp:423
static uint8_t m_errorCode
Definition SdioTeensy.cpp:173
static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg)
Definition SdioTeensy.cpp:418
uint16_t SdMillis_t
Definition SysCall.h:41
BlockDeviceInterface class.
Definition BlockDeviceInterface.h:39
Abstract interface for an SD card.
Definition SdCardInterface.h:34
Optimized SPI class for access to SD and SDHC flash memory cards.
Definition SdSpiArduinoDriver.h:40
void activate()
Definition SdSpiArtemis.cpp:28
Raw access to SD and SDHC flash memory cards via SPI protocol.
SPI card configuration.
Definition SdSpiDriver.h:112
static bool value
Definition DigitalPin.h:210
Union of old and new style CSD register.
Definition SdCardInfo.h:454