@@ -1,5 +1,20 @@ | |||
### Warning: This version has major changes so it may be unstable. | |||
Teensy 3.5/3.6 SDIO support has been added. Try the TeensySdioDemo example. | |||
Many other example will work with Teensy SDIO if you use the SdFatSdio classes | |||
and call begin with no parameters. | |||
``` | |||
SdFatSdio sd; | |||
.... | |||
if (!sd.begin()) { | |||
// Handle failure. | |||
} | |||
``` | |||
Recent versions of the Arduino IDE have bugs that may cause SdFat-beta to crash. | |||
https://forum.arduino.cc/index.php?topic=419264.0 | |||
@@ -44,4 +59,4 @@ SdFile, File, StdioStream, ifstream, ofstream, and others. | |||
Please continue by reading the html documentation. | |||
Updated 19 Aug 2016 | |||
Updated 5 Sep 2016 |
@@ -1,4 +1,4 @@ | |||
// Quick hardware test. | |||
// Quick hardware test for SPI card access. | |||
// | |||
#include <SPI.h> | |||
#include "SdFat.h" |
@@ -11,13 +11,9 @@ | |||
* For smaller cards this program uses FAT16 | |||
* and SDFormatter uses FAT12. | |||
*/ | |||
// Print extra info for debug if DEBUG_PRINT is nonzero | |||
#define DEBUG_PRINT 0 | |||
#include <SPI.h> | |||
#include "SdFat.h" | |||
#if DEBUG_PRINT | |||
#include "FreeStack.h" | |||
#endif // DEBUG_PRINT | |||
// Set USE_SDIO to zero for SPI card access. | |||
#define USE_SDIO 0 | |||
// | |||
// Change the value of chipSelect if your hardware does | |||
// not use the default value, SS. Common values are: | |||
@@ -30,12 +26,25 @@ const uint8_t chipSelect = SS; | |||
// Reduce max speed if errors occur. | |||
#define SPI_SPEED SD_SCK_MHZ(50) | |||
// Print extra info for debug if DEBUG_PRINT is nonzero | |||
#define DEBUG_PRINT 0 | |||
#include <SPI.h> | |||
#include "SdFat.h" | |||
#if DEBUG_PRINT | |||
#include "FreeStack.h" | |||
#endif // DEBUG_PRINT | |||
// Serial output stream | |||
ArduinoOutStream cout(Serial); | |||
#if USE_SDIO | |||
SdioCard card; | |||
#else // USE_SDIO | |||
Sd2Card card; | |||
#endif // USE_SDIO | |||
uint32_t cardSizeBlocks; | |||
uint16_t cardCapacityMB; | |||
uint32_t cardCapacityMB; | |||
// cache for SD block | |||
cache_t cache; | |||
@@ -155,6 +164,16 @@ void clearCache(uint8_t addSig) { | |||
// zero FAT and root dir area on SD | |||
void clearFatDir(uint32_t bgn, uint32_t count) { | |||
clearCache(false); | |||
#if USE_SDIO | |||
for (uint32_t i = 0; i < count; i++) { | |||
if (!card.writeBlock(bgn + i, cache.data)) { | |||
sdError("Clear FAT/DIR writeBlock failed"); | |||
} | |||
if ((i & 0XFF) == 0) { | |||
cout << '.'; | |||
} | |||
} | |||
#else // USE_SDIO | |||
if (!card.writeStart(bgn, count)) { | |||
sdError("Clear FAT/DIR writeStart failed"); | |||
} | |||
@@ -169,6 +188,7 @@ void clearFatDir(uint32_t bgn, uint32_t count) { | |||
if (!card.writeStop()) { | |||
sdError("Clear FAT/DIR writeStop failed"); | |||
} | |||
#endif // USE_SDIO | |||
cout << endl; | |||
} | |||
//------------------------------------------------------------------------------ | |||
@@ -496,7 +516,11 @@ void setup() { | |||
cout << F("Quiting, invalid option entered.") << endl; | |||
return; | |||
} | |||
#if USE_SDIO | |||
if (!card.begin()) { | |||
sdError("card.begin failed"); | |||
} | |||
#else // USE_SDIO | |||
if (!card.begin(chipSelect, SPI_SPEED)) { | |||
cout << F( | |||
"\nSD initialization failure!\n" | |||
@@ -504,6 +528,7 @@ void setup() { | |||
"Is chip select correct at the top of this program?\n"); | |||
sdError("card.begin failed"); | |||
} | |||
#endif | |||
cardSizeBlocks = card.cardSize(); | |||
if (cardSizeBlocks == 0) { | |||
sdError("cardSize"); |
@@ -3,6 +3,9 @@ | |||
*/ | |||
#include <SPI.h> | |||
#include "SdFat.h" | |||
// Set USE_SDIO to zero for SPI card access. | |||
#define USE_SDIO 0 | |||
/* | |||
* SD chip select pin. Common values are: | |||
* | |||
@@ -18,7 +21,12 @@ const uint8_t SD_CHIP_SELECT = SS; | |||
* to 10 to disable the Ethernet controller. | |||
*/ | |||
const int8_t DISABLE_CHIP_SELECT = -1; | |||
#if USE_SDIO | |||
SdFatSdio sd; | |||
#else // USE_SDIO | |||
SdFat sd; | |||
#endif // USE_SDIO | |||
// serial output steam | |||
ArduinoOutStream cout(Serial); | |||
@@ -170,12 +178,19 @@ void loop() { | |||
} | |||
uint32_t t = millis(); | |||
#if USE_SDIO | |||
if (!sd.cardBegin()) { | |||
sdErrorMsg("\ncardBegin failed"); | |||
return; | |||
} | |||
#else // USE_SDIO | |||
// Initialize at the highest speed supported by the board that is | |||
// not over 50 MHz. Try a lower speed if SPI errors occur. | |||
if (!sd.cardBegin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { | |||
sdErrorMsg("\ncardBegin failed"); | |||
return; | |||
} | |||
#endif // USE_SDIO | |||
t = millis() - t; | |||
cardSize = sd.card()->cardSize(); |
@@ -0,0 +1,110 @@ | |||
// Simple performance test for Teensy 3.5/3.6 SDHC. | |||
// Demonstrates yield() efficiency. | |||
#include "SdFat.h" | |||
// 32 KiB buffer. | |||
const size_t BUF_DIM = 32768; | |||
// 8 MiB file. | |||
const uint32_t FILE_SIZE = 256UL*BUF_DIM; | |||
SdFatSdio sd; | |||
File file; | |||
uint8_t buf[BUF_DIM]; | |||
// buffer as uint32_t | |||
uint32_t* buf32 = (uint32_t*)buf; | |||
// Total usec in read/write calls. | |||
uint32_t totalMicros = 0; | |||
// Time in yield() function. | |||
uint32_t yieldMicros = 0; | |||
// Number of yield calls. | |||
uint32_t yieldCalls = 0; | |||
// Max busy time for single yield call. | |||
uint32_t yieldMaxUsec = 0; | |||
//----------------------------------------------------------------------------- | |||
// Replace "weak" system yield() function. | |||
void yield() { | |||
// Only count cardBusy time. | |||
if (!sd.card()->dmaBusy()) { | |||
return; | |||
} | |||
uint32_t m = micros(); | |||
yieldCalls++; | |||
while (sd.card()->dmaBusy()) { | |||
// Do something here. | |||
} | |||
m = micros() - m; | |||
if (m > yieldMaxUsec) { | |||
yieldMaxUsec = m; | |||
} | |||
yieldMicros += m; | |||
} | |||
//----------------------------------------------------------------------------- | |||
void setup() { | |||
Serial.begin(9600); | |||
while (!Serial) { | |||
} | |||
Serial.println("Type any character to begin"); | |||
while (!Serial.available()) { | |||
} | |||
if (!sd.begin()) { | |||
sd.initErrorHalt(); | |||
} | |||
if (!file.open("TeensyDemo.bin", O_RDWR | O_CREAT)) { | |||
sd.errorHalt("open failed"); | |||
} | |||
Serial.println("\nsize,write,read"); | |||
Serial.println("bytes,KB/sec,KB/sec"); | |||
for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { | |||
file.truncate(0); | |||
uint32_t nRdWr = FILE_SIZE/nb; | |||
Serial.print(nb); | |||
Serial.print(','); | |||
uint32_t t = micros(); | |||
for (uint32_t n = 0; n < nRdWr; n++) { | |||
// Set start and end of buffer. | |||
buf32[0] = n; | |||
buf32[nb/4 - 1] = n; | |||
if (nb != file.write(buf, nb)) { | |||
sd.errorHalt("write failed"); | |||
} | |||
} | |||
t = micros() - t; | |||
totalMicros += t; | |||
Serial.print(1000.0*FILE_SIZE/t); | |||
Serial.print(','); | |||
file.rewind(); | |||
t = micros(); | |||
for (uint32_t n = 0; n < nRdWr; n++) { | |||
if ((int)nb != file.read(buf, nb)) { | |||
sd.errorHalt("read failed"); | |||
} | |||
// crude check of data. | |||
if (buf32[0] != n || buf32[nb/4 - 1] != n) { | |||
sd.errorHalt("data check"); | |||
} | |||
} | |||
t = micros() - t; | |||
totalMicros += t; | |||
Serial.println(1000.0*FILE_SIZE/t); | |||
} | |||
file.close(); | |||
Serial.print("\ntotalMicros "); | |||
Serial.println(totalMicros); | |||
Serial.print("yieldMicros "); | |||
Serial.println(yieldMicros); | |||
Serial.print("yieldCalls "); | |||
Serial.println(yieldCalls); | |||
Serial.print("yieldMaxUsec "); | |||
Serial.println(yieldMaxUsec); | |||
Serial.println("Done"); | |||
} | |||
void loop() { | |||
} |
@@ -5,6 +5,9 @@ | |||
#include "SdFat.h" | |||
#include "FreeStack.h" | |||
// Set USE_SDIO to zero for SPI card access. | |||
#define USE_SDIO 0 | |||
// SD chip select pin | |||
const uint8_t chipSelect = SS; | |||
@@ -28,7 +31,11 @@ const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; | |||
uint8_t buf[BUF_SIZE]; | |||
// file system | |||
#if USE_SDIO | |||
SdFatSdio sd; | |||
#else // USE_SDIO | |||
SdFat sd; | |||
#endif // USE_SDIO | |||
// Set ENABLE_EXTENDED_TRANSFER_CLASS to use extended SD I/O. | |||
// Requires dedicated use of the SPI bus. | |||
@@ -102,12 +109,17 @@ void loop() { | |||
cout << F("FreeStack: ") << FreeStack() << endl; | |||
#if USE_SDIO | |||
if (!sd.begin()) { | |||
sd.initErrorHalt(); | |||
} | |||
#else // USE_SDIO | |||
// Initialize at the highest speed supported by the board that is | |||
// not over 50 MHz. Try a lower speed if SPI errors occur. | |||
if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { | |||
sd.initErrorHalt(); | |||
} | |||
#endif // USE_SDIO | |||
cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; | |||
cout << F("Card size: ") << sd.card()->cardSize()*512E-9; | |||
cout << F(" GB (GB = 1E9 bytes)") << endl; |
@@ -23,175 +23,13 @@ | |||
*/ | |||
#ifndef BlockDriver_h | |||
#define BlockDriver_h | |||
#ifdef ARDUINO | |||
#include "SdSpiCard/SdSpiCard.h" | |||
#else // ARDUINO | |||
#include "SdSpiCard.h" | |||
#endif // ARDUINO | |||
#include "FatLib/BaseBlockDriver.h" | |||
//----------------------------------------------------------------------------- | |||
/** | |||
* \class SdBlockDriver | |||
* \brief Standard SD block driver. | |||
*/ | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS | |||
class SdBlockDriver : public BaseBlockDriver, public SdSpiCard { | |||
#else // ENABLE_EXTENDED_TRANSFER_CLASS | |||
class SdBlockDriver : public SdSpiCard { | |||
#endif // ENABLE_EXTENDED_TRANSFER_CLASS | |||
public: | |||
/** Initialize the SD card | |||
* | |||
* \param[in] spi SPI driver. | |||
* \param[in] csPin Card chip select pin number. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { | |||
spi->begin(csPin); | |||
spi->setSpiSettings(SD_SCK_HZ(250000)); | |||
if (!SdSpiCard::begin(spi)) { | |||
return false; | |||
} | |||
spi->setSpiSettings(spiSettings); | |||
return true; | |||
} | |||
/** | |||
* Read a 512 byte block from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlock(uint32_t block, uint8_t* dst) { | |||
return SdSpiCard::readBlock(block, dst); | |||
} | |||
/** End multi-block transfer and go to idle state. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool syncBlocks() { | |||
return true; | |||
} | |||
/** | |||
* Writes a 512 byte block to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlock(uint32_t block, const uint8_t* src) { | |||
return SdSpiCard::writeBlock(block, src); | |||
} | |||
/** | |||
* Read multiple 512 byte blocks from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[in] nb Number of blocks to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) { | |||
return SdSpiCard::readBlocks(block, dst, nb); | |||
} | |||
/** | |||
* Write multiple 512 byte blocks to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] nb Number of blocks to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) { | |||
return SdSpiCard::writeBlocks(block, src, nb); | |||
} | |||
}; | |||
//----------------------------------------------------------------------------- | |||
/** | |||
* \class SdBlockDriverEX | |||
* \brief Extended SD I/O block driver. | |||
*/ | |||
class SdBlockDriverEX : public SdSpiCard, public BaseBlockDriver { | |||
public: | |||
/** Initialize the SD card | |||
* | |||
* \param[in] spi SPI driver. | |||
* \param[in] csPin Card chip select pin number. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { | |||
m_curState = IDLE_STATE; | |||
spi->begin(csPin); | |||
spi->setSpiSettings(SD_SCK_HZ(250000)); | |||
if (!SdSpiCard::begin(spi)) { | |||
return false; | |||
} | |||
spi->setSpiSettings(spiSettings); | |||
return true; | |||
} | |||
/** | |||
* Read a 512 byte block from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlock(uint32_t block, uint8_t* dst); | |||
/** End multi-block transfer and go to idle state. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool syncBlocks(); | |||
/** | |||
* Writes a 512 byte block to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlock(uint32_t block, const uint8_t* src); | |||
/** | |||
* Read multiple 512 byte blocks from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[in] nb Number of blocks to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); | |||
/** | |||
* Write multiple 512 byte blocks to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] nb Number of blocks to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); | |||
private: | |||
static const uint32_t IDLE_STATE = 0; | |||
static const uint32_t READ_STATE = 1; | |||
static const uint32_t WRITE_STATE = 2; | |||
uint32_t m_curBlock; | |||
uint8_t m_curState; | |||
}; | |||
#include "SdCard/SdSpiCard.h" | |||
//----------------------------------------------------------------------------- | |||
/** typedef for BlockDriver */ | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
typedef BaseBlockDriver BlockDriver; | |||
#else // ENABLE_EXTENDED_TRANSFER_CLASS | |||
typedef SdBlockDriver BlockDriver; | |||
#endif // ENABLE_EXTENDED_TRANSFER_CLASS | |||
#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
typedef SdSpiCard BlockDriver; | |||
#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
#endif // BlockDriver_h |
@@ -1,3 +1,22 @@ | |||
/* FatLib Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the FatLib 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 FatLib Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef BaseBlockDriver_h | |||
#define BaseBlockDriver_h | |||
#include "FatLibConfig.h" | |||
@@ -53,4 +72,4 @@ class BaseBlockDriver { | |||
virtual bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) = 0; | |||
#endif // USE_MULTI_BLOCK_IO | |||
}; | |||
#endif // BaseBlockDriver_h | |||
#endif // BaseBlockDriver_h |
@@ -1,5 +1,5 @@ | |||
/* Arduino SdSpiCard Library | |||
* Copyright (C) 2012 by William Greiman | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard Library | |||
* | |||
@@ -26,70 +26,58 @@ | |||
// Part 1 | |||
// Physical Layer | |||
// Simplified Specification | |||
// Version 3.01 | |||
// May 18, 2010 | |||
// Version 5.00 | |||
// Aug 10, 2016 | |||
// | |||
// http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs | |||
// https://www.sdcard.org/downloads/pls/ | |||
//------------------------------------------------------------------------------ | |||
// SD card errors | |||
/** timeout error for command CMD0 (initialize card in SPI mode) */ | |||
const uint8_t SD_CARD_ERROR_CMD0 = 0X1; | |||
/** CMD8 was not accepted - not a valid SD card*/ | |||
const uint8_t SD_CARD_ERROR_CMD8 = 0X2; | |||
/** card returned an error response for CMD12 (stop multiblock read) */ | |||
const uint8_t SD_CARD_ERROR_CMD12 = 0X3; | |||
/** card returned an error response for CMD17 (read block) */ | |||
const uint8_t SD_CARD_ERROR_CMD17 = 0X4; | |||
/** card returned an error response for CMD18 (read multiple block) */ | |||
const uint8_t SD_CARD_ERROR_CMD18 = 0X5; | |||
/** card returned an error response for CMD24 (write block) */ | |||
const uint8_t SD_CARD_ERROR_CMD24 = 0X6; | |||
/** WRITE_MULTIPLE_BLOCKS command failed */ | |||
const uint8_t SD_CARD_ERROR_CMD25 = 0X7; | |||
/** card returned an error response for CMD58 (read OCR) */ | |||
const uint8_t SD_CARD_ERROR_CMD58 = 0X8; | |||
/** SET_WR_BLK_ERASE_COUNT failed */ | |||
const uint8_t SD_CARD_ERROR_ACMD23 = 0X9; | |||
/** ACMD41 initialization process timeout */ | |||
const uint8_t SD_CARD_ERROR_ACMD41 = 0XA; | |||
/** card returned a bad CSR version field */ | |||
const uint8_t SD_CARD_ERROR_BAD_CSD = 0XB; | |||
/** erase block group command failed */ | |||
const uint8_t SD_CARD_ERROR_ERASE = 0XC; | |||
/** card not capable of single block erase */ | |||
const uint8_t SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XD; | |||
/** Erase sequence timed out */ | |||
const uint8_t SD_CARD_ERROR_ERASE_TIMEOUT = 0XE; | |||
/** card returned an error token instead of read data */ | |||
const uint8_t SD_CARD_ERROR_READ = 0XF; | |||
/** read CID or CSD failed */ | |||
const uint8_t SD_CARD_ERROR_READ_REG = 0X10; | |||
/** timeout while waiting for start of read data */ | |||
const uint8_t SD_CARD_ERROR_READ_TIMEOUT = 0X11; | |||
/** card did not accept STOP_TRAN_TOKEN */ | |||
const uint8_t SD_CARD_ERROR_STOP_TRAN = 0X12; | |||
/** card returned an error token as a response to a write operation */ | |||
const uint8_t SD_CARD_ERROR_WRITE = 0X13; | |||
/** card busy for command */ | |||
const uint8_t SD_CARD_ERROR_CMD_BUSY = 0X14; | |||
/** card did not go ready for a multiple block write */ | |||
const uint8_t SD_CARD_ERROR_WRITE_MULTIPLE = 0X15; // Not used | |||
/** card returned an error to a CMD13 status check after a write */ | |||
const uint8_t SD_CARD_ERROR_WRITE_PROGRAMMING = 0X16; | |||
/** timeout occurred during write programming */ | |||
const uint8_t SD_CARD_ERROR_WRITE_TIMEOUT = 0X17; | |||
/** incorrect rate selected */ | |||
const uint8_t SD_CARD_ERROR_SCK_RATE = 0X18; | |||
/** init() not called */ | |||
const uint8_t SD_CARD_ERROR_INIT_NOT_CALLED = 0X19; | |||
/** card returned an error for CMD59 (CRC_ON_OFF) */ | |||
const uint8_t SD_CARD_ERROR_CMD59 = 0X1A; | |||
/** invalid read CRC */ | |||
const uint8_t SD_CARD_ERROR_READ_CRC = 0X1B; | |||
/** SPI DMA error */ | |||
const uint8_t SD_CARD_ERROR_SPI_DMA = 0X1C; | |||
/** ACMD13 not accepted */ | |||
const uint8_t SD_CARD_ERROR_ACMD13 = 0X1D; | |||
// See the SD Specification for command info. | |||
typedef enum { | |||
SD_CARD_ERROR_NONE = 0, | |||
// Basic commands and switch command. | |||
SD_CARD_ERROR_CMD0 = 0X20, | |||
SD_CARD_ERROR_CMD2, | |||
SD_CARD_ERROR_CMD3, | |||
SD_CARD_ERROR_CMD6, | |||
SD_CARD_ERROR_CMD7, | |||
SD_CARD_ERROR_CMD8, | |||
SD_CARD_ERROR_CMD9, | |||
SD_CARD_ERROR_CMD10, | |||
SD_CARD_ERROR_CMD12, | |||
SD_CARD_ERROR_CMD13, | |||
// Read, write, erase, and extension commands. | |||
SD_CARD_ERROR_CMD17 = 0X30, | |||
SD_CARD_ERROR_CMD18, | |||
SD_CARD_ERROR_CMD24, | |||
SD_CARD_ERROR_CMD25, | |||
SD_CARD_ERROR_CMD32, | |||
SD_CARD_ERROR_CMD33, | |||
SD_CARD_ERROR_CMD38, | |||
SD_CARD_ERROR_CMD58, | |||
SD_CARD_ERROR_CMD59, | |||
// Application specific commands. | |||
SD_CARD_ERROR_ACMD6 = 0X40, | |||
SD_CARD_ERROR_ACMD13, | |||
SD_CARD_ERROR_ACMD23, | |||
SD_CARD_ERROR_ACMD41, | |||
// Misc errors. | |||
SD_CARD_ERROR_DMA = 0X50, | |||
SD_CARD_ERROR_ERASE, | |||
SD_CARD_ERROR_ERASE_SINGLE_BLOCK, | |||
SD_CARD_ERROR_ERASE_TIMEOUT, | |||
SD_CARD_ERROR_INIT_NOT_CALLED, | |||
SD_CARD_ERROR_READ, | |||
SD_CARD_ERROR_READ_REG, | |||
SD_CARD_ERROR_READ_TIMEOUT, | |||
SD_CARD_ERROR_STOP_TRAN, | |||
SD_CARD_ERROR_WRITE_TIMEOUT, | |||
SD_CARD_ERROR_WRITE, | |||
} sd_error_code_t; | |||
//------------------------------------------------------------------------------ | |||
// card types | |||
/** Standard capacity V1 SD card */ | |||
@@ -130,8 +118,14 @@ const uint16_t SD_WRITE_TIMEOUT = 600; | |||
// SD card commands | |||
/** GO_IDLE_STATE - init card in spi mode if CS low */ | |||
const uint8_t CMD0 = 0X00; | |||
/** ALL_SEND_CID - Asks any card to send the CID. */ | |||
const uint8_t CMD2 = 0X02; | |||
/** SEND_RELATIVE_ADDR - Ask the card to publish a new RCA. */ | |||
const uint8_t CMD3 = 0X03; | |||
/** SWITCH_FUNC - Switch Function Command */ | |||
const uint8_t CMD6 = 0X06; | |||
/** SELECT/DESELECT_CARD - toggles between the stand-by and transfer states. */ | |||
const uint8_t CMD7 = 0X07; | |||
/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ | |||
const uint8_t CMD8 = 0X08; | |||
/** SEND_CSD - read the Card Specific Data (CSD register) */ | |||
@@ -163,6 +157,8 @@ const uint8_t CMD55 = 0X37; | |||
const uint8_t CMD58 = 0X3A; | |||
/** CRC_ON_OFF - enable or disable CRC checking */ | |||
const uint8_t CMD59 = 0X3B; | |||
/** SET_BUS_WIDTH - Defines the data bus width for data transfer. */ | |||
const uint8_t ACMD6 = 0X06; | |||
/** SD_STATUS - Send the SD Status. */ | |||
const uint8_t ACMD13 = 0X0D; | |||
/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be | |||
@@ -172,6 +168,70 @@ const uint8_t ACMD23 = 0X17; | |||
activates the card's initialization process */ | |||
const uint8_t ACMD41 = 0X29; | |||
//============================================================================== | |||
// CARD_STATUS | |||
/** The command's argument was out of the allowed range for this card. */ | |||
const uint32_t CARD_STATUS_OUT_OF_RANGE = 1UL << 31; | |||
/** A misaligned address which did not match the block length. */ | |||
const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; | |||
/** The transferred block length is not allowed for this card. */ | |||
const uint32_t CARD_STATUS_BLOCK_LEN_ERROR = 1UL << 29; | |||
/** An error in the sequence of erase commands occurred. */ | |||
const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL <<28; | |||
/** An invalid selection of write-blocks for erase occurred. */ | |||
const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; | |||
/** Set when the host attempts to write to a protected block. */ | |||
const uint32_t CARD_STATUS_WP_VIOLATION = 1UL << 26; | |||
/** When set, signals that the card is locked by the host. */ | |||
const uint32_t CARD_STATUS_CARD_IS_LOCKED = 1UL << 25; | |||
/** Set when a sequence or password error has been detected. */ | |||
const uint32_t CARD_STATUS_LOCK_UNLOCK_FAILED = 1UL << 24; | |||
/** The CRC check of the previous command failed. */ | |||
const uint32_t CARD_STATUS_COM_CRC_ERROR = 1UL << 23; | |||
/** Command not legal for the card state. */ | |||
const uint32_t CARD_STATUS_ILLEGAL_COMMAND = 1UL << 22; | |||
/** Card internal ECC was applied but failed to correct the data. */ | |||
const uint32_t CARD_STATUS_CARD_ECC_FAILED = 1UL << 21; | |||
/** Internal card controller error */ | |||
const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; | |||
/** A general or an unknown error occurred during the operation. */ | |||
const uint32_t CARD_STATUS_ERROR = 1UL << 19; | |||
// bits 19, 18, and 17 reserved. | |||
/** Permanent WP set or attempt to change read only values of CSD. */ | |||
const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL <<16; | |||
/** partial address space was erased due to write protect. */ | |||
const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; | |||
/** The command has been executed without using the internal ECC. */ | |||
const uint32_t CARD_STATUS_CARD_ECC_DISABLED = 1UL << 14; | |||
/** out of erase sequence command was received. */ | |||
const uint32_t CARD_STATUS_ERASE_RESET = 1UL << 13; | |||
/** The state of the card when receiving the command. | |||
* 0 = idle | |||
* 1 = ready | |||
* 2 = ident | |||
* 3 = stby | |||
* 4 = tran | |||
* 5 = data | |||
* 6 = rcv | |||
* 7 = prg | |||
* 8 = dis | |||
* 9-14 = reserved | |||
* 15 = reserved for I/O mode | |||
*/ | |||
const uint32_t CARD_STATUS_CURRENT_STATE = 0XF << 9; | |||
/** Shift for current state. */ | |||
const uint32_t CARD_STATUS_CURRENT_STATE_SHIFT = 9; | |||
/** Corresponds to buffer empty signaling on the bus. */ | |||
const uint32_t CARD_STATUS_READY_FOR_DATA = 1UL << 8; | |||
// bit 7 reserved. | |||
/** Extension Functions may set this bit to get host to deal with events. */ | |||
const uint32_t CARD_STATUS_FX_EVENT = 1UL << 6; | |||
/** The card will expect ACMD, or the command has been interpreted as ACMD */ | |||
const uint32_t CARD_STATUS_APP_CMD = 1UL << 5; | |||
// bit 4 reserved. | |||
/** Error in the sequence of the authentication process. */ | |||
const uint32_t CARD_STATUS_AKE_SEQ_ERROR = 1UL << 3; | |||
// bits 2,1, and 0 reserved for manufacturer test mode. | |||
//============================================================================== | |||
/** status for card in the ready state */ | |||
const uint8_t R1_READY_STATE = 0X00; | |||
/** status for card in the idle state */ | |||
@@ -227,6 +287,7 @@ typedef struct CID { | |||
/** CRC7 checksum */ | |||
unsigned char crc : 7; | |||
} __attribute__((packed)) cid_t; | |||
//============================================================================== | |||
/** | |||
* \class CSDV1 | |||
@@ -386,4 +447,21 @@ union csd_t { | |||
csd1_t v1; | |||
csd2_t v2; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
inline uint32_t sdCardCapacity(csd_t* csd) { | |||
if (csd->v1.csd_ver == 0) { | |||
uint8_t read_bl_len = csd->v1.read_bl_len; | |||
uint16_t c_size = (csd->v1.c_size_high << 10) | |||
| (csd->v1.c_size_mid << 2) | csd->v1.c_size_low; | |||
uint8_t c_size_mult = (csd->v1.c_size_mult_high << 1) | |||
| csd->v1.c_size_mult_low; | |||
return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); | |||
} else if (csd->v2.csd_ver == 1) { | |||
uint32_t c_size = 0X10000L * csd->v2.c_size_high + 0X100L | |||
* (uint32_t)csd->v2.c_size_mid + csd->v2.c_size_low; | |||
return (c_size + 1) << 10; | |||
} else { | |||
return 0; | |||
} | |||
} | |||
#endif // SdInfo_h |
@@ -1,5 +1,5 @@ | |||
/* Arduino SdSpiCard Library | |||
* Copyright (C) 2012 by William Greiman | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard Library | |||
* | |||
@@ -114,13 +114,16 @@ static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { | |||
//============================================================================== | |||
// SdSpiCard member functions | |||
//------------------------------------------------------------------------------ | |||
bool SdSpiCard::begin(SdSpiDriver* spiDriver) { | |||
bool SdSpiCard::begin(SdSpiDriver* spi, uint8_t csPin, SPISettings settings) { | |||
m_spiActive = false; | |||
m_errorCode = m_type = 0; | |||
m_spiDriver = spiDriver; | |||
m_errorCode = SD_CARD_ERROR_NONE; | |||
m_type = 0; | |||
m_spiDriver = spi; | |||
uint16_t t0 = curTimeMS(); | |||
uint32_t arg; | |||
m_spiDriver->begin(csPin); | |||
m_spiDriver->setSpiSettings(SD_SCK_HZ(250000)); | |||
spiStart(); | |||
// must supply min of 74 clock cycles with CS high. | |||
@@ -185,6 +188,7 @@ bool SdSpiCard::begin(SdSpiDriver* spiDriver) { | |||
} | |||
} | |||
spiStop(); | |||
m_spiDriver->setSpiSettings(settings); | |||
return true; | |||
fail: | |||
@@ -242,24 +246,7 @@ uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { | |||
//------------------------------------------------------------------------------ | |||
uint32_t SdSpiCard::cardSize() { | |||
csd_t csd; | |||
if (!readCSD(&csd)) { | |||
return 0; | |||
} | |||
if (csd.v1.csd_ver == 0) { | |||
uint8_t read_bl_len = csd.v1.read_bl_len; | |||
uint16_t c_size = (csd.v1.c_size_high << 10) | |||
| (csd.v1.c_size_mid << 2) | csd.v1.c_size_low; | |||
uint8_t c_size_mult = (csd.v1.c_size_mult_high << 1) | |||
| csd.v1.c_size_mult_low; | |||
return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); | |||
} else if (csd.v2.csd_ver == 1) { | |||
uint32_t c_size = 0X10000L * csd.v2.c_size_high + 0X100L | |||
* (uint32_t)csd.v2.c_size_mid + csd.v2.c_size_low; | |||
return (c_size + 1) << 10; | |||
} else { | |||
error(SD_CARD_ERROR_BAD_CSD); | |||
return 0; | |||
} | |||
return readCSD(&csd) ? sdCardCapacity(&csd) : 0; | |||
} | |||
//------------------------------------------------------------------------------ | |||
bool SdSpiCard::erase(uint32_t firstBlock, uint32_t lastBlock) { | |||
@@ -388,7 +375,7 @@ bool SdSpiCard::readData(uint8_t* dst, size_t count) { | |||
} | |||
// transfer data | |||
if ((m_status = spiReceive(dst, count))) { | |||
error(SD_CARD_ERROR_SPI_DMA); | |||
error(SD_CARD_ERROR_DMA); | |||
goto fail; | |||
} | |||
@@ -556,7 +543,7 @@ bool SdSpiCard::writeBlock(uint32_t blockNumber, const uint8_t* src) { | |||
} | |||
// response is r2 so get and check two bytes for nonzero | |||
if (cardCommand(CMD13, 0) || spiReceive()) { | |||
error(SD_CARD_ERROR_WRITE_PROGRAMMING); | |||
error(SD_CARD_ERROR_CMD13); | |||
goto fail; | |||
} | |||
#endif // CHECK_PROGRAMMING |
@@ -1,5 +1,5 @@ | |||
/* Arduino SdSpiCard Library | |||
* Copyright (C) 2012 by William Greiman | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard Library | |||
* | |||
@@ -17,8 +17,8 @@ | |||
* along with the Arduino SdSpiCard Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef SpiCard_h | |||
#define SpiCard_h | |||
#ifndef SdSpiCard_h | |||
#define SdSpiCard_h | |||
/** | |||
* \file | |||
* \brief SdSpiCard class for V2 SD/SDHC cards | |||
@@ -26,21 +26,28 @@ | |||
#include <stddef.h> | |||
#include "SysCall.h" | |||
#include "SdInfo.h" | |||
#include "SdSpiDriver.h" | |||
#include "../FatLib/BaseBlockDriver.h" | |||
#include "../SpiDriver/SdSpiDriver.h" | |||
//============================================================================== | |||
/** | |||
* \class SdSpiCard | |||
* \brief Raw access to SD and SDHC flash memory cards via SPI protocol. | |||
*/ | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
class SdSpiCard : public BaseBlockDriver { | |||
#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
class SdSpiCard { | |||
#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS | |||
public: | |||
/** Construct an instance of SdSpiCard. */ | |||
SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) {} | |||
/** Initialize the SD card. | |||
* \param[in] spiDriver SPI driver for card. | |||
* \param[in] spi SPI driver for card. | |||
* \param[in] csPin card chip select pin. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \return true for success else false. | |||
*/ | |||
bool begin(SdSpiDriver* spiDriver); | |||
bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings); | |||
/** | |||
* Determine the size of an SD flash memory card. | |||
* | |||
@@ -76,7 +83,7 @@ class SdSpiCard { | |||
m_errorCode = code; | |||
} | |||
/** | |||
* \return code for the last error. See SdSpiCard.h for a list of error codes. | |||
* \return code for the last error. See SdInfo.h for a list of error codes. | |||
*/ | |||
int errorCode() const { | |||
return m_errorCode; | |||
@@ -94,22 +101,22 @@ class SdSpiCard { | |||
/** | |||
* Read a 512 byte block from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[in] lba Logical block to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlock(uint32_t block, uint8_t* dst); | |||
bool readBlock(uint32_t lba, uint8_t* dst); | |||
/** | |||
* Read multiple 512 byte blocks from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[in] count Number of blocks to be read. | |||
* \param[in] lba Logical block to be read. | |||
* \param[in] nb Number of blocks to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlocks(uint32_t block, uint8_t* dst, size_t count); | |||
bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); | |||
/** | |||
* Read a card's CID register. The CID contains card identification | |||
* information such as Manufacturer ID, Product name, Product serial | |||
@@ -162,7 +169,7 @@ class SdSpiCard { | |||
* \param[out] status location for 64 status bytes. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
*/ | |||
bool readStatus(uint8_t* status); | |||
/** End a read multiple blocks sequence. | |||
* | |||
@@ -170,6 +177,8 @@ class SdSpiCard { | |||
* the value false is returned for failure. | |||
*/ | |||
bool readStop(); | |||
/** \return success if sync successful. Not for user apps. */ | |||
bool syncBlocks() {return true;} | |||
/** Return the card type: SD V1, SD V2 or SDHC | |||
* \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. | |||
*/ | |||
@@ -179,22 +188,22 @@ class SdSpiCard { | |||
/** | |||
* Writes a 512 byte block to an SD card. | |||
* | |||
* \param[in] blockNumber Logical block to be written. | |||
* \param[in] lba Logical block to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlock(uint32_t blockNumber, const uint8_t* src); | |||
bool writeBlock(uint32_t lba, const uint8_t* src); | |||
/** | |||
* Write multiple 512 byte blocks to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] count Number of blocks to be written. | |||
* \param[in] lba Logical block to be written. | |||
* \param[in] nb Number of blocks to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlocks(uint32_t block, const uint8_t* src, size_t count); | |||
bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); | |||
/** Write one data block in a multiple block write sequence. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
@@ -287,4 +296,73 @@ class SdSpiCard { | |||
uint8_t m_type; | |||
}; | |||
//============================================================================== | |||
#endif // SpiCard_h | |||
/** | |||
* \class SdSpiCardEX | |||
* \brief Extended SD I/O block driver. | |||
*/ | |||
class SdSpiCardEX : public SdSpiCard { | |||
public: | |||
/** Initialize the SD card | |||
* | |||
* \param[in] spi SPI driver. | |||
* \param[in] csPin Card chip select pin number. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { | |||
m_curState = IDLE_STATE; | |||
return SdSpiCard::begin(spi, csPin, spiSettings); | |||
} | |||
/** | |||
* Read a 512 byte block from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlock(uint32_t block, uint8_t* dst); | |||
/** End multi-block transfer and go to idle state. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool syncBlocks(); | |||
/** | |||
* Writes a 512 byte block to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlock(uint32_t block, const uint8_t* src); | |||
/** | |||
* Read multiple 512 byte blocks from an SD card. | |||
* | |||
* \param[in] block Logical block to be read. | |||
* \param[in] nb Number of blocks to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); | |||
/** | |||
* Write multiple 512 byte blocks to an SD card. | |||
* | |||
* \param[in] block Logical block to be written. | |||
* \param[in] nb Number of blocks to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); | |||
private: | |||
static const uint32_t IDLE_STATE = 0; | |||
static const uint32_t READ_STATE = 1; | |||
static const uint32_t WRITE_STATE = 2; | |||
uint32_t m_curBlock; | |||
uint8_t m_curState; | |||
}; | |||
#endif // SdSpiCard_h |
@@ -17,8 +17,8 @@ | |||
* along with the Arduino SdFat Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#include "BlockDriver.h" | |||
bool SdBlockDriverEX::readBlock(uint32_t block, uint8_t* dst) { | |||
#include "SdSpiCard.h" | |||
bool SdSpiCardEX::readBlock(uint32_t block, uint8_t* dst) { | |||
if (m_curState != READ_STATE || block != m_curBlock) { | |||
if (!syncBlocks()) { | |||
return false; | |||
@@ -36,7 +36,7 @@ bool SdBlockDriverEX::readBlock(uint32_t block, uint8_t* dst) { | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdBlockDriverEX::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { | |||
bool SdSpiCardEX::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { | |||
for (size_t i = 0; i < nb; i++) { | |||
if (!readBlock(block + i, dst + i*512UL)) { | |||
return false; | |||
@@ -45,7 +45,7 @@ bool SdBlockDriverEX::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdBlockDriverEX::syncBlocks() { | |||
bool SdSpiCardEX::syncBlocks() { | |||
if (m_curState == READ_STATE) { | |||
m_curState = IDLE_STATE; | |||
if (!SdSpiCard::readStop()) { | |||
@@ -60,7 +60,7 @@ bool SdBlockDriverEX::syncBlocks() { | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdBlockDriverEX::writeBlock(uint32_t block, const uint8_t* src) { | |||
bool SdSpiCardEX::writeBlock(uint32_t block, const uint8_t* src) { | |||
if (m_curState != WRITE_STATE || m_curBlock != block) { | |||
if (!syncBlocks()) { | |||
return false; | |||
@@ -78,7 +78,7 @@ bool SdBlockDriverEX::writeBlock(uint32_t block, const uint8_t* src) { | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdBlockDriverEX::writeBlocks(uint32_t block, | |||
bool SdSpiCardEX::writeBlocks(uint32_t block, | |||
const uint8_t* src, size_t nb) { | |||
for (size_t i = 0; i < nb; i++) { | |||
if (!writeBlock(block + i, src + i*512UL)) { |
@@ -0,0 +1,135 @@ | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard 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 SdSpiCard Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef SdioCard_h | |||
#define SdioCard_h | |||
#include "SysCall.h" | |||
#include "BlockDriver.h" | |||
/** | |||
* \class SdioCard | |||
* \brief Raw SDIO access to SD and SDHC flash memory cards. | |||
*/ | |||
class SdioCard : public BaseBlockDriver { | |||
public: | |||
/** Initialize the SD card. | |||
* \return true for success else false. | |||
*/ | |||
bool begin(); | |||
/** | |||
* Determine the size of an SD flash memory card. | |||
* | |||
* \return The number of 512 byte data blocks in the card | |||
* or zero if an error occurs. | |||
*/ | |||
uint32_t cardSize(); | |||
/** \return DMA transfer status. */ | |||
bool dmaBusy(); | |||
/** Erase a range of blocks. | |||
* | |||
* \param[in] firstBlock The address of the first block in the range. | |||
* \param[in] lastBlock The address of the last block in the range. | |||
* | |||
* \note This function requests the SD card to do a flash erase for a | |||
* range of blocks. The data on the card after an erase operation is | |||
* either 0 or 1, depends on the card vendor. The card must support | |||
* single block erase. | |||
* | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool erase(uint32_t firstBlock, uint32_t lastBlock); | |||
/** | |||
* \return code for the last error. See SdInfo.h for a list of error codes. | |||
*/ | |||
uint8_t errorCode(); | |||
/** \return error data for last error. */ | |||
uint32_t errorData(); | |||
/** \return error line for last error. Tmp function for debug. */ | |||
uint32_t errorLine(); | |||
/** | |||
* Read a 512 byte block from an SD card. | |||
* | |||
* \param[in] lba Logical block to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlock(uint32_t lba, uint8_t* dst); | |||
/** | |||
* Read multiple 512 byte blocks from an SD card. | |||
* | |||
* \param[in] lba Logical block to be read. | |||
* \param[in] nb Number of blocks to be read. | |||
* \param[out] dst Pointer to the location that will receive the data. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); | |||
/** | |||
* Read a card's CID register. The CID contains card identification | |||
* information such as Manufacturer ID, Product name, Product serial | |||
* number and Manufacturing date. | |||
* | |||
* \param[out] cid pointer to area for returned data. | |||
* | |||
* \return true for success or false for failure. | |||
*/ | |||
bool readCID(void* cid); | |||
/** | |||
* Read a card's CSD register. The CSD contains Card-Specific Data that | |||
* provides information regarding access to the card's contents. | |||
* | |||
* \param[out] csd pointer to area for returned data. | |||
* | |||
* \return true for success or false for failure. | |||
*/ | |||
bool readCSD(void* csd); | |||
/** Read OCR register. | |||
* | |||
* \param[out] ocr Value of OCR register. | |||
* \return true for success else false. | |||
*/ | |||
bool readOCR(uint32_t* ocr); | |||
/** \return success if sync successful. Not for user apps. */ | |||
bool syncBlocks(); | |||
/** Return the card type: SD V1, SD V2 or SDHC | |||
* \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. | |||
*/ | |||
uint8_t type(); | |||
/** | |||
* Writes a 512 byte block to an SD card. | |||
* | |||
* \param[in] lba Logical block to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlock(uint32_t lba, const uint8_t* src); | |||
/** | |||
* Write multiple 512 byte blocks to an SD card. | |||
* | |||
* \param[in] lba Logical block to be written. | |||
* \param[in] nb Number of blocks to be written. | |||
* \param[in] src Pointer to the location of the data to be written. | |||
* \return The value true is returned for success and | |||
* the value false is returned for failure. | |||
*/ | |||
bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); | |||
}; | |||
#endif // SdioCard_h |
@@ -0,0 +1,557 @@ | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard 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 SdSpiCard Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#if defined(__MK64FX512__) || defined(__MK66FX1M0__) | |||
#include "SdioCard.h" | |||
//============================================================================== | |||
#ifndef SDHC_WML_RDWML_MASK | |||
#define SDHC_WML_RDWML_MASK (0XFFU) | |||
#endif | |||
#ifndef SDHC_WML_RDWML_SHIFT | |||
#define SDHC_WML_RDWML_SHIFT (0U) | |||
#endif | |||
#define SDHC_PROCTL_DTW_4BIT 0x01 | |||
//============================================================================== | |||
const uint32_t SDHC_IRQSTATEN_MASK = | |||
SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | | |||
SDHC_IRQSTATEN_DEBESEN | SDHC_IRQSTATEN_DCESEN | | |||
SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | | |||
SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | | |||
SDHC_IRQSTATEN_CTOESEN | SDHC_IRQSTATEN_BRRSEN | | |||
SDHC_IRQSTATEN_BWRSEN | SDHC_IRQSTATEN_DINTSEN | | |||
SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; | |||
const uint32_t SDHC_IRQSTAT_CMD_ERROR = | |||
SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | | |||
SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; | |||
const uint32_t SDHC_IRQSTAT_DATA_ERROR = | |||
SDHC_IRQSTAT_AC12E | SDHC_IRQSTAT_DEBE | | |||
SDHC_IRQSTAT_DCE | SDHC_IRQSTAT_DTOE; | |||
const uint32_t SDHC_IRQSTAT_ERROR = | |||
SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | | |||
SDHC_IRQSTAT_DATA_ERROR; | |||
const uint32_t SDHC_IRQSIGEN_MASK = | |||
SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | | |||
SDHC_IRQSIGEN_DEBEIEN | SDHC_IRQSIGEN_DCEIEN | | |||
SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | | |||
SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | | |||
SDHC_IRQSIGEN_CTOEIEN | SDHC_IRQSIGEN_TCIEN; | |||
//============================================================================= | |||
const uint32_t CMD_RESP_NONE = SDHC_XFERTYP_RSPTYP(0); | |||
const uint32_t CMD_RESP_R1 = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | | |||
SDHC_XFERTYP_RSPTYP(2); | |||
const uint32_t CMD_RESP_R1b = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | | |||
SDHC_XFERTYP_RSPTYP(3); | |||
const uint32_t CMD_RESP_R2 = SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(1); | |||
const uint32_t CMD_RESP_R3 = SDHC_XFERTYP_RSPTYP(2); | |||
const uint32_t CMD_RESP_R6 = CMD_RESP_R1; | |||
const uint32_t CMD_RESP_R7 = CMD_RESP_R1; | |||
const uint32_t DATA_READ = SDHC_XFERTYP_DTDSEL | SDHC_XFERTYP_DPSEL; | |||
const uint32_t DATA_READ_DMA = DATA_READ | SDHC_XFERTYP_DMAEN; | |||
const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_XFERTYP_MSBSEL | | |||
SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; | |||
const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_DMAEN; | |||
const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_XFERTYP_MSBSEL | | |||
SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; | |||
const uint32_t ACMD6_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD6) | CMD_RESP_R1; | |||
const uint32_t ACMD41_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD41) | CMD_RESP_R3; | |||
const uint32_t CMD0_XFERTYP = SDHC_XFERTYP_CMDINX(CMD0) | CMD_RESP_NONE; | |||
const uint32_t CMD2_XFERTYP = SDHC_XFERTYP_CMDINX(CMD2) | CMD_RESP_R2; | |||
const uint32_t CMD3_XFERTYP = SDHC_XFERTYP_CMDINX(CMD3) | CMD_RESP_R6; | |||
const uint32_t CMD6_XFERTYP = SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | | |||
DATA_READ_DMA; | |||
const uint32_t CMD7_XFERTYP = SDHC_XFERTYP_CMDINX(CMD7) | CMD_RESP_R1b; | |||
const uint32_t CMD8_XFERTYP = SDHC_XFERTYP_CMDINX(CMD8) | CMD_RESP_R7; | |||
const uint32_t CMD9_XFERTYP = SDHC_XFERTYP_CMDINX(CMD9) | CMD_RESP_R2; | |||
const uint32_t CMD10_XFERTYP = SDHC_XFERTYP_CMDINX(CMD10) | CMD_RESP_R2; | |||
const uint32_t CMD13_XFERTYP = SDHC_XFERTYP_CMDINX(CMD13) | CMD_RESP_R1; | |||
const uint32_t CMD17_XFERTYP = SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | | |||
DATA_READ_DMA; | |||
const uint32_t CMD18_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | | |||
DATA_READ_MULTI_DMA; | |||
const uint32_t CMD24_XFERTYP = SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | | |||
DATA_WRITE_DMA; | |||
const uint32_t CMD25_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | | |||
DATA_WRITE_MULTI_DMA; | |||
const uint32_t CMD32_XFERTYP = SDHC_XFERTYP_CMDINX(CMD32) | CMD_RESP_R1; | |||
const uint32_t CMD33_XFERTYP = SDHC_XFERTYP_CMDINX(CMD33) | CMD_RESP_R1; | |||
const uint32_t CMD38_XFERTYP = SDHC_XFERTYP_CMDINX(CMD38) | CMD_RESP_R1b; | |||
const uint32_t CMD55_XFERTYP = SDHC_XFERTYP_CMDINX(CMD55) | CMD_RESP_R1; | |||
//============================================================================= | |||
static bool isBusy(); | |||
static bool readReg16(uint32_t xfertyp, void* data); | |||
static void setSdclk(uint32_t kHzMax); | |||
static uint8_t m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; | |||
static uint32_t m_errorLine = 0; | |||
static bool m_version2; | |||
static bool m_highCapacity; | |||
static uint32_t m_rca; | |||
bool m_waitCmd13 = false; | |||
static volatile bool m_dmaDone = true; | |||
static volatile uint32_t m_irqstat; | |||
static uint32_t m_sdClkKhz = 0; | |||
static cid_t m_cid; | |||
static csd_t m_csd; | |||
static uint32_t m_ocr; | |||
//============================================================================= | |||
// Debug and error macros. | |||
#define sdError(code) setSdErrorCode(code, __LINE__) | |||
inline bool setSdErrorCode(uint8_t code, uint32_t line) { | |||
m_errorCode = code; | |||
m_errorLine = line; | |||
return false; | |||
} | |||
//============================================================================= | |||
void sdhc_isr() { | |||
SDHC_IRQSIGEN = 0; | |||
m_irqstat = SDHC_IRQSTAT; | |||
SDHC_IRQSTAT = m_irqstat; | |||
m_dmaDone = true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
static void enableDmaIrs() { | |||
m_dmaDone = false; | |||
m_irqstat = 0; | |||
} | |||
//----------------------------------------------------------------------------- | |||
static bool waitDmaStatus() { | |||
while (!m_dmaDone) { | |||
yield(); | |||
} | |||
return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); | |||
} | |||
//----------------------------------------------------------------------------- | |||
static void enableGPIO(bool enable) { | |||
const uint32_t PORT_CLK = PORT_PCR_MUX(4) | PORT_PCR_DSE; | |||
const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PS | PORT_PCR_PE; | |||
PORTE_PCR0 = enable ? PORT_CMD_DATA : 0; // SDHC_D1 | |||
PORTE_PCR1 = enable ? PORT_CMD_DATA : 0; // SDHC_D0 | |||
PORTE_PCR2 = enable ? PORT_CLK : 0; // SDHC_CLK | |||
PORTE_PCR3 = enable ? PORT_CMD_DATA : 0; // SDHC_CMD | |||
PORTE_PCR4 = enable ? PORT_CMD_DATA : 0; // SDHC_D3 | |||
PORTE_PCR5 = enable ? PORT_CMD_DATA : 0; // SDHC_D2 | |||
} | |||
//----------------------------------------------------------------------------- | |||
static void SDHC_Init() { | |||
#ifdef HAS_KINETIS_MPU | |||
// Allow SDHC Bus Master access. | |||
MPU_RGDAAC0 |= 0x0C000000; | |||
#endif | |||
// Enable SDHC clock. | |||
SIM_SCGC3 |= SIM_SCGC3_SDHC; | |||
// Disable GPIO clock. | |||
enableGPIO(false); | |||
// Reset SDHC. Use default Water Mark Level of 16. | |||
SDHC_SYSCTL = SDHC_SYSCTL_RSTA; | |||
while (SDHC_SYSCTL & SDHC_SYSCTL_RSTA) { | |||
} | |||
// Set initial SCK rate. | |||
setSdclk(400); | |||
enableGPIO(true); | |||
// Enable desired IRQSTAT bits. | |||
SDHC_IRQSTATEN = SDHC_IRQSTATEN_MASK; | |||
NVIC_SET_PRIORITY(IRQ_SDHC, 6*16); | |||
NVIC_ENABLE_IRQ(IRQ_SDHC); | |||
// Send 80 clocks to card. | |||
SDHC_SYSCTL |= SDHC_SYSCTL_INITA; | |||
while (SDHC_SYSCTL & SDHC_SYSCTL_INITA) { | |||
} | |||
} | |||
//----------------------------------------------------------------------------- | |||
static bool rdWrBlocks(uint32_t xfertyp, | |||
uint32_t lba, uint8_t* buf, size_t n) { | |||
if ((3 & (uint32_t)buf) || n == 0) { | |||
return sdError(SD_CARD_ERROR_DMA); | |||
} | |||
m_waitCmd13 = true; | |||
while (isBusy()) { | |||
yield(); | |||
} | |||
m_waitCmd13 = false; | |||
enableDmaIrs(); | |||
SDHC_DSADDR = (uint32_t)buf; | |||
SDHC_CMDARG = m_highCapacity ? lba : 512*lba; | |||
SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(n) | SDHC_BLKATTR_BLKSIZE(512); | |||
SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; | |||
SDHC_XFERTYP = xfertyp; | |||
return waitDmaStatus(); | |||
} | |||
//----------------------------------------------------------------------------- | |||
static bool cardCommand(uint32_t xfertyp, uint32_t arg) { | |||
SDHC_CMDARG = arg; | |||
SDHC_XFERTYP = xfertyp; | |||
do { | |||
m_irqstat = SDHC_IRQSTAT; | |||
} while (!(m_irqstat & (SDHC_IRQSTAT_CC | SDHC_IRQSTAT_CMD_ERROR))); | |||
SDHC_IRQSTAT = m_irqstat; | |||
return (m_irqstat & SDHC_IRQSTAT_CC) && | |||
!(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); | |||
} | |||
//------------------------------------------------------------------------------ | |||
static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg) { | |||
return cardCommand(CMD55_XFERTYP, rca) && cardCommand (xfertyp, arg); | |||
} | |||
//----------------------------------------------------------------------------- | |||
static bool isBusy() { | |||
if (!cardCommand(CMD13_XFERTYP, m_rca)) { | |||
// Should have timeout in caller? | |||
return true; | |||
} | |||
return !(SDHC_CMDRSP0 & CARD_STATUS_READY_FOR_DATA); | |||
} | |||
//----------------------------------------------------------------------------- | |||
static void setSdclk(uint32_t kHzMax) { | |||
const uint32_t DVS_LIMIT = 0X10; | |||
const uint32_t SDCLKFS_LIMIT = 0X100; | |||
uint32_t dvs = 1; | |||
uint32_t sdclkfs = 1; | |||
uint32_t maxSdclk = 1000*kHzMax; | |||
while ((F_CPU/(sdclkfs*DVS_LIMIT) > maxSdclk) && (sdclkfs < SDCLKFS_LIMIT)) { | |||
sdclkfs <<= 1; | |||
} | |||
while ((F_CPU/(sdclkfs*dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { | |||
dvs++; | |||
} | |||
m_sdClkKhz = F_CPU/(sdclkfs*dvs); | |||
sdclkfs >>= 1; | |||
dvs--; | |||
// Disable SDHC clock. | |||
SDHC_SYSCTL &= ~SDHC_SYSCTL_SDCLKEN; | |||
// Change dividers. | |||
uint32_t sysctl = SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK | |||
| SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK); | |||
SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) | |||
| SDHC_SYSCTL_SDCLKFS(sdclkfs); | |||
// Wait until the SDHC clock is stable. | |||
while (!(SDHC_PRSSTAT & SDHC_PRSSTAT_SDSTB)) { | |||
} | |||
// Enable the SDHC clock. | |||
SDHC_SYSCTL |= SDHC_SYSCTL_SDCLKEN; | |||
} | |||
//------------------------------------------------------------------------------ | |||
static bool cardCMD6(uint32_t arg, uint8_t* status) { | |||
// CMD6 returns 64 bytes. | |||
while (isBusy()) { | |||
} | |||
enableDmaIrs(); | |||
SDHC_DSADDR = (uint32_t)status; | |||
SDHC_CMDARG = arg; | |||
SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); | |||
SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; | |||
SDHC_XFERTYP = CMD6_XFERTYP; | |||
if (!waitDmaStatus()) { | |||
return sdError(SD_CARD_ERROR_CMD6); | |||
} | |||
return true; | |||
} | |||
//------------------------------------------------------------------------------ | |||
static bool cardInit() { | |||
uint32_t kbaudrate; | |||
uint32_t arg; | |||
m_errorCode = SD_CARD_ERROR_NONE; | |||
m_highCapacity = false; | |||
m_version2 = false; | |||
// initialize controller. | |||
SDHC_Init(); | |||
if (!cardCommand(CMD0_XFERTYP, 0)) { | |||
return sdError(SD_CARD_ERROR_CMD0); | |||
} | |||
if (cardCommand(CMD8_XFERTYP, 0X1AA)) { | |||
if (SDHC_CMDRSP0 != 0X1AA) { | |||
return sdError(SD_CARD_ERROR_CMD8); | |||
} | |||
m_version2 = true; | |||
} | |||
arg = m_version2 ? 0X40300000 : 0x00300000; | |||
int i = 0; | |||
do { | |||
if (!cardAcmd(0, ACMD41_XFERTYP, arg) || i++ > 1000) { | |||
return sdError(SD_CARD_ERROR_ACMD41); | |||
} | |||
} while ((SDHC_CMDRSP0 & 0x80000000) == 0); | |||
m_ocr = SDHC_CMDRSP0; | |||
if (SDHC_CMDRSP0 & 0x40000000) { | |||
// is high capacity | |||
m_highCapacity = true; | |||
} | |||
if (!cardCommand(CMD2_XFERTYP, 0)) { | |||
return sdError(SD_CARD_ERROR_CMD2); | |||
} | |||
if (!cardCommand(CMD3_XFERTYP, 0)) { | |||
return sdError(SD_CARD_ERROR_CMD3); | |||
} | |||
m_rca = SDHC_CMDRSP0 & 0xFFFF0000; | |||
if (!readReg16(CMD9_XFERTYP, &m_csd)) { | |||
return sdError(SD_CARD_ERROR_CMD9); | |||
} | |||
if (!readReg16(CMD10_XFERTYP, &m_cid)) { | |||
return sdError(SD_CARD_ERROR_CMD10); | |||
} | |||
if (!cardCommand(CMD7_XFERTYP, m_rca)) { | |||
return sdError(SD_CARD_ERROR_CMD7); | |||
} | |||
if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { | |||
return sdError(SD_CARD_ERROR_ACMD6); | |||
} | |||
// Set Data bus width to four. | |||
SDHC_PROCTL &= ~SDHC_PROCTL_DTW_MASK; | |||
SDHC_PROCTL |= SDHC_PROCTL_DTW(SDHC_PROCTL_DTW_4BIT); | |||
uint8_t status[64]; | |||
if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && | |||
cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { | |||
kbaudrate = 50000; | |||
} else { | |||
kbaudrate = 25000; | |||
} | |||
// disable GPIO | |||
enableGPIO(false); | |||
// Set the SDHC SCK frequency. | |||
setSdclk(kbaudrate); | |||
// enable GPIO | |||
enableGPIO(true); | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
static bool readReg16(uint32_t xfertyp, void* data) { | |||
if (!cardCommand(xfertyp, m_rca)) { | |||
return false; | |||
} | |||
uint8_t* d = reinterpret_cast<uint8_t*>(data); | |||
d[0] = SDHC_CMDRSP3 >> 16; | |||
d[1] = SDHC_CMDRSP3 >> 8; | |||
d[2] = SDHC_CMDRSP3; | |||
d[3] = SDHC_CMDRSP2 >> 24; | |||
d[4] = SDHC_CMDRSP2 >> 16; | |||
d[5] = SDHC_CMDRSP2 >> 8; | |||
d[6] = SDHC_CMDRSP2; | |||
d[7] = SDHC_CMDRSP1 >> 24; | |||
d[8] = SDHC_CMDRSP1 >> 16; | |||
d[9] = SDHC_CMDRSP1 >> 8; | |||
d[10] = SDHC_CMDRSP1; | |||
d[11] = SDHC_CMDRSP0 >> 24; | |||
d[12] = SDHC_CMDRSP0 >> 16; | |||
d[13] = SDHC_CMDRSP0 >> 8; | |||
d[14] = SDHC_CMDRSP0; | |||
d[15] = 0; | |||
return true; | |||
} | |||
//============================================================================= | |||
bool SdioCard::begin() { | |||
return cardInit(); | |||
} | |||
//----------------------------------------------------------------------------- | |||
uint32_t SdioCard::cardSize() { | |||
return sdCardCapacity(&m_csd); | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::dmaBusy() { | |||
return m_waitCmd13 ? isBusy() : !m_dmaDone; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::erase(uint32_t firstBlock, uint32_t lastBlock) { | |||
csd_t csd; | |||
if (!readCSD(&csd)) { | |||
return false; | |||
} | |||
// check for single block erase | |||
if (!csd.v1.erase_blk_en) { | |||
// erase size mask | |||
uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; | |||
if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { | |||
// error card can't erase specified area | |||
return sdError(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); | |||
} | |||
} | |||
if (!m_highCapacity) { | |||
firstBlock <<= 9; | |||
lastBlock <<= 9; | |||
} | |||
if (!cardCommand(CMD32_XFERTYP, firstBlock)) { | |||
return sdError(SD_CARD_ERROR_CMD32); | |||
} | |||
if (!cardCommand(CMD33_XFERTYP, lastBlock)) { | |||
return sdError(SD_CARD_ERROR_CMD33); | |||
} | |||
if (!cardCommand(CMD38_XFERTYP, 0)) { | |||
return sdError(SD_CARD_ERROR_CMD38); | |||
} | |||
while (isBusy()) { | |||
} | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
uint8_t SdioCard::errorCode() { | |||
return m_errorCode; | |||
} | |||
//----------------------------------------------------------------------------- | |||
uint32_t SdioCard::errorData() { | |||
return m_irqstat; | |||
} | |||
//----------------------------------------------------------------------------- | |||
uint32_t SdioCard::errorLine() { | |||
return m_errorLine; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) { | |||
uint8_t aligned[512]; | |||
uint8_t* ptr = (uint32_t)buf & 3 ? aligned : buf; | |||
if (!rdWrBlocks(CMD17_XFERTYP, lba, ptr, 1)) { | |||
return sdError(SD_CARD_ERROR_CMD18); | |||
} | |||
if (ptr != buf) { | |||
memcpy(buf, aligned, 512); | |||
} | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { | |||
if ((uint32_t)buf & 3) { | |||
for (size_t i = 0; i < n; i++, lba++, buf += 512) { | |||
if (!readBlock(lba, buf)) { | |||
return false; | |||
} | |||
} | |||
return true; | |||
} | |||
if (!rdWrBlocks(CMD18_XFERTYP, lba, buf, n)) { | |||
return sdError(SD_CARD_ERROR_CMD18); | |||
} | |||
return true; | |||
} | |||
//---------------------------------------------------------------------------- | |||
bool SdioCard::readCID(void* cid) { | |||
memcpy(cid, &m_cid, 16); | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::readCSD(void* csd) { | |||
memcpy(csd, &m_csd, 16); | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::readOCR(uint32_t* ocr) { | |||
*ocr = m_ocr; | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::syncBlocks() { | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
uint8_t SdioCard::type() { | |||
return m_version2 ? m_highCapacity ? | |||
SD_CARD_TYPE_SDHC : SD_CARD_TYPE_SD2 : SD_CARD_TYPE_SD1; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) { | |||
uint8_t *ptr; | |||
uint8_t aligned[512]; | |||
if (3 & (uint32_t)buf) { | |||
ptr = aligned; | |||
memcpy(aligned, buf, 512); | |||
} else { | |||
ptr = const_cast<uint8_t*>(buf); | |||
} | |||
if (!rdWrBlocks(CMD24_XFERTYP, lba, ptr, 1)) { | |||
return sdError(SD_CARD_ERROR_CMD24); | |||
} | |||
return true; | |||
} | |||
//----------------------------------------------------------------------------- | |||
bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) { | |||
uint8_t* ptr = const_cast<uint8_t*>(buf); | |||
if (3 & (uint32_t)ptr) { | |||
for (size_t i = 0; i < n; i++, lba++, ptr += 512) { | |||
if (!writeBlock(lba, ptr)) { | |||
return false; | |||
} | |||
} | |||
return true; | |||
} | |||
if (!rdWrBlocks(CMD25_XFERTYP, lba, ptr, n)) { | |||
return sdError(SD_CARD_ERROR_CMD25); | |||
} | |||
return true; | |||
} | |||
#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) |
@@ -25,14 +25,11 @@ | |||
*/ | |||
#include "SysCall.h" | |||
#include "BlockDriver.h" | |||
#ifdef ARDUINO | |||
#include "FatLib/FatLib.h" | |||
#else // ARDUINO | |||
#include "FatLib.h" | |||
#endif // ARDUINO | |||
#include "SdCard/SdioCard.h" | |||
//------------------------------------------------------------------------------ | |||
/** SdFat version YYYYMMDD */ | |||
#define SD_FAT_VERSION 20160801 | |||
#define SD_FAT_VERSION 20160905 | |||
//============================================================================== | |||
/** | |||
* \class SdBaseFile | |||
@@ -79,30 +76,17 @@ class SdFile : public PrintFile { | |||
template<class SdDriverClass> | |||
class SdFileSystem : public FatFileSystem { | |||
public: | |||
/** Initialize SD card and file system. | |||
* \param[in] spi SPI object for the card. | |||
* \param[in] csPin SD card chip select pin. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
/** Initialize file system. | |||
* \return true for success else false. | |||
*/ | |||
bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { | |||
return m_card.begin(spi, csPin, spiSettings) && | |||
FatFileSystem::begin(&m_card); | |||
bool begin() { | |||
return FatFileSystem::begin(&m_card); | |||
} | |||
/** \return Pointer to SD card object */ | |||
SdDriverClass *card() { | |||
m_card.syncBlocks(); | |||
return &m_card; | |||
} | |||
/** Initialize SD card for diagnostic use. | |||
* \param[in] spi SPI object for the card. | |||
* \param[in] csPin SD card chip select pin. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \return true for success else false. | |||
*/ | |||
bool cardBegin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { | |||
return m_card.begin(spi, csPin, spiSettings); | |||
} | |||
/** %Print any SD error code to Serial and halt. */ | |||
void errorHalt() { | |||
errorHalt(&Serial); | |||
@@ -303,11 +287,11 @@ class SdFileSystem : public FatFileSystem { | |||
return m_card.errorCode(); | |||
} | |||
/** \return the card error data */ | |||
uint8_t cardErrorData() { | |||
uint32_t cardErrorData() { | |||
return m_card.errorData(); | |||
} | |||
private: | |||
protected: | |||
SdDriverClass m_card; | |||
}; | |||
//============================================================================== | |||
@@ -315,7 +299,7 @@ class SdFileSystem : public FatFileSystem { | |||
* \class SdFat | |||
* \brief Main file system class for %SdFat library. | |||
*/ | |||
class SdFat : public SdFileSystem<SdBlockDriver> { | |||
class SdFat : public SdFileSystem<SdSpiCard> { | |||
public: | |||
#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) | |||
SdFat() { | |||
@@ -335,7 +319,8 @@ class SdFat : public SdFileSystem<SdBlockDriver> { | |||
* \return true for success else false. | |||
*/ | |||
bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { | |||
return SdFileSystem::begin(&m_spi, csPin, spiSettings); | |||
return m_card.begin(&m_spi, csPin, spiSettings) && | |||
SdFileSystem::begin(); | |||
} | |||
/** Initialize SD card for diagnostic use only. | |||
* | |||
@@ -344,7 +329,7 @@ class SdFat : public SdFileSystem<SdBlockDriver> { | |||
* \return true for success else false. | |||
*/ | |||
bool cardBegin(uint8_t csPin = SS, SPISettings settings = SPI_FULL_SPEED) { | |||
return SdFileSystem::cardBegin(&m_spi, csPin, settings); | |||
return m_card.begin(&m_spi, csPin, settings); | |||
} | |||
/** Initialize file system for diagnostic use only. | |||
* \return true for success else false. | |||
@@ -357,13 +342,42 @@ class SdFat : public SdFileSystem<SdBlockDriver> { | |||
SdFatSpiDriver m_spi; | |||
}; | |||
//============================================================================== | |||
#if ENABLE_SDIO_CLASS || defined(DOXYGEN) | |||
/** | |||
* \class SdFatSdio | |||
* \brief SdFat class using SDIO. | |||
*/ | |||
class SdFatSdio : public SdFileSystem<SdioCard> { | |||
public: | |||
/** Initialize SD card and file system. | |||
* \return true for success else false. | |||
*/ | |||
bool begin() { | |||
return m_card.begin() && SdFileSystem::begin(); | |||
} | |||
/** Initialize SD card for diagnostic use only. | |||
* | |||
* \return true for success else false. | |||
*/ | |||
bool cardBegin() { | |||
return m_card.begin(); | |||
} | |||
/** Initialize file system for diagnostic use only. | |||
* \return true for success else false. | |||
*/ | |||
bool fsBegin() { | |||
return SdFileSystem::begin(); | |||
} | |||
}; | |||
#endif // ENABLE_SDIO_CLASS || defined(DOXYGEN) | |||
//============================================================================== | |||
#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) | |||
/** | |||
* \class SdFatSoftSpi | |||
* \brief SdFat class using software SPI. | |||
*/ | |||
template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin> | |||
class SdFatSoftSpi : public SdFileSystem<SdBlockDriver> { | |||
class SdFatSoftSpi : public SdFileSystem<SdSpiCard> { | |||
public: | |||
/** Initialize SD card and file system. | |||
* | |||
@@ -372,20 +386,20 @@ class SdFatSoftSpi : public SdFileSystem<SdBlockDriver> { | |||
* \return true for success else false. | |||
*/ | |||
bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { | |||
return SdFileSystem::begin(&m_spi, csPin, spiSettings); | |||
return m_card.begin(&m_spi, csPin, spiSettings) && | |||
SdFileSystem::begin(); | |||
} | |||
private: | |||
SdSpiSoftDriver<MisoPin, MosiPin, SckPin> m_spi; | |||
}; | |||
#endif // #if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) | |||
//============================================================================== | |||
#if ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) | |||
/** | |||
* \class SdFatEX | |||
* \brief SdFat class with extended SD I/O. | |||
*/ | |||
class SdFatEX : public SdFileSystem<SdBlockDriverEX> { | |||
class SdFatEX : public SdFileSystem<SdSpiCardEX> { | |||
public: | |||
#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) | |||
SdFatEX() { | |||
@@ -405,7 +419,8 @@ class SdFatEX : public SdFileSystem<SdBlockDriverEX> { | |||
* \return true for success else false. | |||
*/ | |||
bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { | |||
return SdFileSystem::begin(&m_spi, csPin, spiSettings); | |||
return m_card.begin(&m_spi, csPin, spiSettings) && | |||
SdFileSystem::begin(); | |||
} | |||
private: | |||
@@ -418,7 +433,7 @@ class SdFatEX : public SdFileSystem<SdBlockDriverEX> { | |||
* \brief SdFat class using software SPI and extended SD I/O. | |||
*/ | |||
template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin> | |||
class SdFatSoftSpiEX : public SdFileSystem<SdBlockDriverEX> { | |||
class SdFatSoftSpiEX : public SdFileSystem<SdSpiCardEX> { | |||
public: | |||
/** Initialize SD card and file system. | |||
* | |||
@@ -426,8 +441,9 @@ class SdFatSoftSpiEX : public SdFileSystem<SdBlockDriverEX> { | |||
* \param[in] spiSettings ignored for software SPI. | |||
* \return true for success else false. | |||
*/ | |||
bool begin(uint8_t csPin = SS, SPISettings spiSettings = 2) { | |||
return SdFileSystem::begin(&m_spi, csPin, spiSettings); | |||
bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { | |||
return m_card.begin(&m_spi, csPin, spiSettings) && | |||
SdFileSystem::begin(); | |||
} | |||
private: | |||
SdSpiSoftDriver<MisoPin, MosiPin, SckPin> m_spi; | |||
@@ -442,19 +458,12 @@ class SdFatSoftSpiEX : public SdFileSystem<SdBlockDriverEX> { | |||
class Sd2Card : public SdSpiCard { | |||
public: | |||
/** Initialize the SD card. | |||
* \param[in] chipSelectPin SD chip select pin. | |||
* \param[in] spiSettings SPI speed, mode, and bit order. | |||
* \param[in] csPin SD chip select pin. | |||
* \param[in] settings SPI speed, mode, and bit order. | |||
* \return true for success else false. | |||
*/ | |||
bool begin(uint8_t chipSelectPin = SS, | |||
SPISettings spiSettings = SD_SCK_MHZ(50)) { | |||
m_spi.begin(chipSelectPin); | |||
m_spi.setSpiSettings(SD_SCK_HZ(250000)); | |||
if (!SdSpiCard::begin(&m_spi)) { | |||
return false; | |||
} | |||
m_spi.setSpiSettings(spiSettings); | |||
return true; | |||
bool begin(uint8_t csPin = SS, SPISettings settings = SD_SCK_MHZ(50)) { | |||
return SdSpiCard::begin(&m_spi, csPin, settings); | |||
} | |||
private: | |||
SdFatSpiDriver m_spi; |
@@ -156,6 +156,13 @@ | |||
#else // RAMEND | |||
#define USE_MULTI_BLOCK_IO 1 | |||
#endif // RAMEND | |||
//----------------------------------------------------------------------------- | |||
/** Enable SDIO driver if available. */ | |||
#if defined(__MK64FX512__) || defined(__MK66FX1M0__) | |||
#define ENABLE_SDIO_CLASS 1 | |||
#else // ENABLE_SDIO_CLASS | |||
#define ENABLE_SDIO_CLASS 0 | |||
#endif // ENABLE_SDIO_CLASS | |||
//------------------------------------------------------------------------------ | |||
/** | |||
* Determine the default SPI configuration. |
@@ -1,4 +1,4 @@ | |||
/* Arduino SdSpiCard Library | |||
/* Arduino SdCard Library | |||
* Copyright (C) 2016 by William Greiman | |||
* | |||
* This file is part of the Arduino SdSpiCard Library | |||
@@ -17,7 +17,6 @@ | |||
* along with the Arduino SdSpiCard Library. If not, see | |||
* <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef SdSpiBaseDriver_h | |||
#define SdSpiBaseDriver_h | |||
/** |
@@ -25,7 +25,7 @@ | |||
#define SdSpiDriver_h | |||
#include <Arduino.h> | |||
#include "SPI.h" | |||
#include "SdSpiCard/SdSpiBaseDriver.h" | |||
#include "SdSpiBaseDriver.h" | |||
#include "SdFatConfig.h" | |||
//----------------------------------------------------------------------------- | |||
/** | |||
@@ -189,7 +189,7 @@ class SdSpiAltDriver { | |||
//------------------------------------------------------------------------------ | |||
#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) | |||
#ifdef ARDUINO | |||
#include "AltSpiDrivers/SoftSPI.h" | |||
#include "SoftSPI.h" | |||
#elif defined(PLATFORM_ID) // Only defined if a Particle device | |||
#include "SoftSPIParticle.h" | |||
#endif // ARDUINO |
@@ -1,3 +1,11 @@ | |||
5 Sep 2016 | |||
Restructured classes to support SPI and SDIO controllers. | |||
Support for Teensy 3.5/3.6 SDIO. | |||
Added TeensySdioDemo example. | |||
15 Aug 2016 | |||
New classes SdFatEX and SdFatSoftSpiEX with Extended SD I/O. |
@@ -102,15 +102,14 @@ Include dependency graph for ArduinoFiles.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_arduino_files_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_files_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_files_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_files_8h"> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="43,319,148,345"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="391,95,464,121"/> | |||
<area shape="rect" id="node4" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="31,468,135,495"/> | |||
<area shape="rect" id="node10" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="159,244,253,271"/> | |||
<area shape="rect" id="node11" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="330,169,426,196"/> | |||
<area shape="rect" id="node12" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="329,244,427,271"/> | |||
<area shape="rect" id="node13" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="331,319,425,345"/> | |||
<area shape="rect" id="node14" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="379,393,457,420"/> | |||
<area shape="rect" id="node16" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="160,393,260,420"/> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="628,244,733,271"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="340,95,413,121"/> | |||
<area shape="rect" id="node4" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="898,333,1002,360"/> | |||
<area shape="rect" id="node10" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="34,244,129,271"/> | |||
<area shape="rect" id="node11" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="243,169,339,196"/> | |||
<area shape="rect" id="node12" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="402,244,500,271"/> | |||
<area shape="rect" id="node13" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="528,333,670,360"/> | |||
<area shape="rect" id="node14" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="450,423,529,449"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -170,7 +169,7 @@ Macros</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -100,20 +100,19 @@ Include dependency graph for ArduinoStream.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_arduino_stream_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_stream_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_stream_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_arduino_stream_8h"> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="43,617,148,644"/> | |||
<area shape="rect" id="node6" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="279,95,370,121"/> | |||
<area shape="rect" id="node4" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="31,767,135,793"/> | |||
<area shape="rect" id="node8" href="iostream_8h.html" title="iostream class " alt="" coords="283,169,366,196"/> | |||
<area shape="rect" id="node9" href="istream_8h.html" title="istream class " alt="" coords="236,244,312,271"/> | |||
<area shape="rect" id="node22" href="ostream_8h.html" title="ostream class " alt="" coords="337,244,417,271"/> | |||
<area shape="rect" id="node10" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="301,319,351,345"/> | |||
<area shape="rect" id="node11" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="289,393,363,420"/> | |||
<area shape="rect" id="node14" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="159,543,253,569"/> | |||
<area shape="rect" id="node15" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="330,468,426,495"/> | |||
<area shape="rect" id="node16" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="329,543,427,569"/> | |||
<area shape="rect" id="node17" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="331,617,425,644"/> | |||
<area shape="rect" id="node18" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="379,692,457,719"/> | |||
<area shape="rect" id="node20" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="160,692,260,719"/> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="627,543,733,569"/> | |||
<area shape="rect" id="node6" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="525,95,616,121"/> | |||
<area shape="rect" id="node4" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="897,632,1001,659"/> | |||
<area shape="rect" id="node8" href="iostream_8h.html" title="iostream class " alt="" coords="451,169,533,196"/> | |||
<area shape="rect" id="node9" href="istream_8h.html" title="istream class " alt="" coords="353,244,429,271"/> | |||
<area shape="rect" id="node24" href="ostream_8h.html" title="ostream class " alt="" coords="453,244,533,271"/> | |||
<area shape="rect" id="node10" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="368,319,419,345"/> | |||
<area shape="rect" id="node11" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="357,393,430,420"/> | |||
<area shape="rect" id="node14" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="34,543,129,569"/> | |||
<area shape="rect" id="node15" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="244,468,340,495"/> | |||
<area shape="rect" id="node16" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="401,543,500,569"/> | |||
<area shape="rect" id="node17" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="527,632,670,659"/> | |||
<area shape="rect" id="node18" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="450,721,529,748"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -139,7 +138,7 @@ Classes</h2></td></tr> | |||
</div></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -85,7 +85,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</div><!-- top --> | |||
<div class="header"> | |||
<div class="summary"> | |||
<a href="#nested-classes">Classes</a> | | |||
<a href="#typedef-members">Typedefs</a> </div> | |||
<div class="headertitle"> | |||
<div class="title">BlockDriver.h File Reference</div> </div> | |||
@@ -94,17 +93,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<p>Define block driver. | |||
<a href="#details">More...</a></p> | |||
<div class="textblock"><code>#include "<a class="el" href="_sd_spi_card_8h.html">SdSpiCard.h</a>"</code><br /> | |||
<code>#include "FatLib/BaseBlockDriver.h"</code><br /> | |||
<div class="textblock"><code>#include "FatLib/BaseBlockDriver.h"</code><br /> | |||
<code>#include "<a class="el" href="_sd_spi_card_8h.html">SdCard/SdSpiCard.h</a>"</code><br /> | |||
</div><div class="textblock"><div class="dynheader"> | |||
Include dependency graph for BlockDriver.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_block_driver_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_block_driver_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_block_driver_8h" id="_arduino_2libraries_2_sd_fat_2src_2_block_driver_8h"> | |||
<area shape="rect" id="node2" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="139,95,233,121"/> | |||
<area shape="rect" id="node4" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="97,169,176,196"/> | |||
<area shape="rect" id="node6" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="295,169,395,196"/> | |||
<area shape="rect" id="node9" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="397,244,501,271"/> | |||
<area shape="rect" id="node2" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="115,109,257,136"/> | |||
<area shape="rect" id="node4" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="97,199,176,225"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -128,29 +125,20 @@ This graph shows which files directly or indirectly include this file:</div> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> | |||
Classes</h2></td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_block_driver.html">SdBlockDriver</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Standard SD block driver. <a href="class_sd_block_driver.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_block_driver_e_x.html">SdBlockDriverEX</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Extended SD I/O block driver. <a href="class_sd_block_driver_e_x.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table><table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> | |||
Typedefs</h2></td></tr> | |||
<tr class="memitem:a29e32edf30724992d0ab870a56fdde6c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="class_sd_block_driver.html">SdBlockDriver</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_block_driver_8h.html#a29e32edf30724992d0ab870a56fdde6c">BlockDriver</a></td></tr> | |||
<tr class="separator:a29e32edf30724992d0ab870a56fdde6c"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:ace97f2377acdc471a01f9f7ec1fd6bbb"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="class_sd_spi_card.html">SdSpiCard</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb">BlockDriver</a></td></tr> | |||
<tr class="separator:ace97f2377acdc471a01f9f7ec1fd6bbb"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table> | |||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> | |||
<div class="textblock"><p>Define block driver. </p> | |||
</div><h2 class="groupheader">Typedef Documentation</h2> | |||
<a class="anchor" id="a29e32edf30724992d0ab870a56fdde6c"></a> | |||
<a class="anchor" id="ace97f2377acdc471a01f9f7ec1fd6bbb"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">typedef <a class="el" href="class_sd_block_driver.html">SdBlockDriver</a> <a class="el" href="_block_driver_8h.html#a29e32edf30724992d0ab870a56fdde6c">BlockDriver</a></td> | |||
<td class="memname">typedef <a class="el" href="class_sd_spi_card.html">SdSpiCard</a> <a class="el" href="_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb">BlockDriver</a></td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
@@ -161,7 +149,7 @@ Typedefs</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -107,14 +107,13 @@ Include dependency graph for FatFile.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_fat_file_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_8h"> | |||
<area shape="rect" id="node5" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="71,319,176,345"/> | |||
<area shape="rect" id="node9" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="421,169,516,196"/> | |||
<area shape="rect" id="node10" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="205,95,301,121"/> | |||
<area shape="rect" id="node7" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="262,393,366,420"/> | |||
<area shape="rect" id="node11" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="298,169,397,196"/> | |||
<area shape="rect" id="node12" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="300,244,395,271"/> | |||
<area shape="rect" id="node13" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="292,319,371,345"/> | |||
<area shape="rect" id="node15" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="489,319,589,345"/> | |||
<area shape="rect" id="node5" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="141,169,246,196"/> | |||
<area shape="rect" id="node9" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="907,169,1002,196"/> | |||
<area shape="rect" id="node10" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="821,95,917,121"/> | |||
<area shape="rect" id="node7" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="27,259,131,285"/> | |||
<area shape="rect" id="node11" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="457,169,556,196"/> | |||
<area shape="rect" id="node12" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="435,259,578,285"/> | |||
<area shape="rect" id="node13" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="369,348,447,375"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -330,7 +329,7 @@ Variables</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -102,22 +102,21 @@ Include dependency graph for FatFileSystem.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_fat_file_system_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_system_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_system_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_file_system_8h"> | |||
<area shape="rect" id="node2" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="410,543,506,569"/> | |||
<area shape="rect" id="node15" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="195,468,268,495"/> | |||
<area shape="rect" id="node18" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="189,95,308,121"/> | |||
<area shape="rect" id="node24" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="29,393,135,420"/> | |||
<area shape="rect" id="node4" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="77,617,183,644"/> | |||
<area shape="rect" id="node8" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="269,617,364,644"/> | |||
<area shape="rect" id="node9" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="439,617,538,644"/> | |||
<area shape="rect" id="node6" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="117,841,221,868"/> | |||
<area shape="rect" id="node10" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="440,692,535,719"/> | |||
<area shape="rect" id="node11" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="545,767,624,793"/> | |||
<area shape="rect" id="node13" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="421,767,521,793"/> | |||
<area shape="rect" id="node19" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="262,169,353,196"/> | |||
<area shape="rect" id="node20" href="iostream_8h.html" title="iostream class " alt="" coords="266,244,349,271"/> | |||
<area shape="rect" id="node21" href="istream_8h.html" title="istream class " alt="" coords="189,319,265,345"/> | |||
<area shape="rect" id="node23" href="ostream_8h.html" title="ostream class " alt="" coords="290,319,370,345"/> | |||
<area shape="rect" id="node22" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="210,393,261,420"/> | |||
<area shape="rect" id="node2" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="469,543,565,569"/> | |||
<area shape="rect" id="node17" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="279,468,352,495"/> | |||
<area shape="rect" id="node20" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="187,95,305,121"/> | |||
<area shape="rect" id="node26" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="5,393,111,420"/> | |||
<area shape="rect" id="node4" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="99,617,204,644"/> | |||
<area shape="rect" id="node8" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="307,617,401,644"/> | |||
<area shape="rect" id="node9" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="453,617,551,644"/> | |||
<area shape="rect" id="node6" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="27,707,131,733"/> | |||
<area shape="rect" id="node10" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="308,707,451,733"/> | |||
<area shape="rect" id="node11" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="340,796,419,823"/> | |||
<area shape="rect" id="node21" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="285,169,375,196"/> | |||
<area shape="rect" id="node22" href="iostream_8h.html" title="iostream class " alt="" coords="289,244,371,271"/> | |||
<area shape="rect" id="node23" href="istream_8h.html" title="istream class " alt="" coords="237,319,313,345"/> | |||
<area shape="rect" id="node25" href="ostream_8h.html" title="ostream class " alt="" coords="338,319,418,345"/> | |||
<area shape="rect" id="node24" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="290,393,341,420"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
@@ -132,7 +131,7 @@ Classes</h2></td></tr> | |||
</div></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -266,7 +266,7 @@ Macros</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -1274,7 +1274,7 @@ Variables</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -103,13 +103,12 @@ Include dependency graph for FatVolume.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_fat_volume_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_volume_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_volume_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_fat_volume_8h"> | |||
<area shape="rect" id="node3" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="419,244,524,271"/> | |||
<area shape="rect" id="node7" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="327,95,421,121"/> | |||
<area shape="rect" id="node8" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="153,95,251,121"/> | |||
<area shape="rect" id="node5" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="330,319,434,345"/> | |||
<area shape="rect" id="node9" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="155,169,249,196"/> | |||
<area shape="rect" id="node10" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="316,244,395,271"/> | |||
<area shape="rect" id="node12" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="97,244,197,271"/> | |||
<area shape="rect" id="node3" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="23,95,128,121"/> | |||
<area shape="rect" id="node7" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="424,95,519,121"/> | |||
<area shape="rect" id="node8" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="301,95,399,121"/> | |||
<area shape="rect" id="node5" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="25,184,129,211"/> | |||
<area shape="rect" id="node9" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="799,184,941,211"/> | |||
<area shape="rect" id="node10" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="732,273,811,300"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -167,7 +166,7 @@ Typedefs</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -164,7 +164,7 @@ Variables</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -114,7 +114,7 @@ Classes</h2></td></tr> | |||
</div></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -96,17 +96,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<a href="#details">More...</a></p> | |||
<div class="textblock"><code>#include "<a class="el" href="_sys_call_8h.html">SysCall.h</a>"</code><br /> | |||
<code>#include "<a class="el" href="_block_driver_8h.html">BlockDriver.h</a>"</code><br /> | |||
<code>#include "FatLib.h"</code><br /> | |||
<code>#include "FatLib/FatLib.h"</code><br /> | |||
<code>#include "SdCard/SdioCard.h"</code><br /> | |||
</div><div class="textblock"><div class="dynheader"> | |||
Include dependency graph for SdFat.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_fat_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_fat_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_fat_8h" id="_arduino_2libraries_2_sd_fat_2src_2_sd_fat_8h"> | |||
<area shape="rect" id="node2" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="5,244,84,271"/> | |||
<area shape="rect" id="node3" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="90,95,189,121"/> | |||
<area shape="rect" id="node4" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="95,169,189,196"/> | |||
<area shape="rect" id="node7" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="295,244,395,271"/> | |||
<area shape="rect" id="node10" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="397,319,501,345"/> | |||
<area shape="rect" id="node2" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="5,273,84,300"/> | |||
<area shape="rect" id="node3" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="329,95,427,121"/> | |||
<area shape="rect" id="node4" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="83,184,225,211"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
@@ -124,6 +123,9 @@ Classes</h2></td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_fat_e_x.html">SdFatEX</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class with extended SD I/O. <a href="class_sd_fat_e_x.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_fat_sdio.html">SdFatSdio</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using SDIO. <a href="class_sd_fat_sdio.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_fat_soft_spi.html">SdFatSoftSpi< MisoPin, MosiPin, SckPin ></a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using software SPI. <a href="class_sd_fat_soft_spi.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
@@ -139,7 +141,7 @@ Classes</h2></td></tr> | |||
</table><table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> | |||
Macros</h2></td></tr> | |||
<tr class="memitem:aca25ecce379f446043bdee2c55304210"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210">SD_FAT_VERSION</a>   20160801</td></tr> | |||
<tr class="memitem:aca25ecce379f446043bdee2c55304210"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210">SD_FAT_VERSION</a>   20160905</td></tr> | |||
<tr class="separator:aca25ecce379f446043bdee2c55304210"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table> | |||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> | |||
@@ -150,7 +152,7 @@ Macros</h2></td></tr> | |||
<div class="memproto"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">#define SD_FAT_VERSION   20160801</td> | |||
<td class="memname">#define SD_FAT_VERSION   20160905</td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
@@ -161,7 +163,7 @@ Macros</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -106,23 +106,19 @@ This graph shows which files directly or indirectly include this file:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_fat_config_8h__dep__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_fat_config_8hdep" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_fat_config_8hdep" id="_arduino_2libraries_2_sd_fat_2src_2_sd_fat_config_8hdep"> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="168,273,339,315"/> | |||
<area shape="rect" id="node15" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="312,95,467,136"/> | |||
<area shape="rect" id="node3" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="77,541,248,583"/> | |||
<area shape="rect" id="node5" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="329,452,484,493"/> | |||
<area shape="rect" id="node10" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="127,899,313,940"/> | |||
<area shape="rect" id="node14" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="325,363,488,404"/> | |||
<area shape="rect" id="node4" href="_fat_file_system_8h.html" title="FatFileSystem class. " alt="" coords="275,988,459,1029"/> | |||
<area shape="rect" id="node6" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="272,541,427,583"/> | |||
<area shape="rect" id="node11" href="fstream_8h.html" title="fstream, ifstream, and ofstream classes " alt="" coords="323,809,477,851"/> | |||
<area shape="rect" id="node13" href="_stdio_stream_8h.html" title="StdioStream class. " alt="" coords="552,541,723,583"/> | |||
<area shape="rect" id="node7" href="istream_8h.html" title="istream class " alt="" coords="272,631,427,672"/> | |||
<area shape="rect" id="node12" href="ostream_8h.html" title="ostream class " alt="" coords="93,631,248,672"/> | |||
<area shape="rect" id="node8" href="iostream_8h.html" title="iostream class " alt="" coords="207,720,361,761"/> | |||
<area shape="rect" id="node9" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="142,809,298,851"/> | |||
<area shape="rect" id="node16" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="332,184,519,225"/> | |||
<area shape="rect" id="node17" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="363,273,517,315"/> | |||
<area shape="rect" id="node18" href="_sd_fat_8h.html" title="SdFat class. " alt="" coords="512,363,667,404"/> | |||
<area shape="rect" id="node2" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="161,95,332,136"/> | |||
<area shape="rect" id="node3" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="55,363,225,404"/> | |||
<area shape="rect" id="node5" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="243,273,397,315"/> | |||
<area shape="rect" id="node10" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="326,720,511,761"/> | |||
<area shape="rect" id="node14" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="5,184,168,225"/> | |||
<area shape="rect" id="node4" href="_fat_file_system_8h.html" title="FatFileSystem class. " alt="" coords="73,809,257,851"/> | |||
<area shape="rect" id="node6" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="300,363,455,404"/> | |||
<area shape="rect" id="node11" href="fstream_8h.html" title="fstream, ifstream, and ofstream classes " alt="" coords="521,631,676,672"/> | |||
<area shape="rect" id="node13" href="_stdio_stream_8h.html" title="StdioStream class. " alt="" coords="583,363,753,404"/> | |||
<area shape="rect" id="node7" href="istream_8h.html" title="istream class " alt="" coords="407,452,561,493"/> | |||
<area shape="rect" id="node12" href="ostream_8h.html" title="ostream class " alt="" coords="228,452,383,493"/> | |||
<area shape="rect" id="node8" href="iostream_8h.html" title="iostream class " alt="" coords="373,541,528,583"/> | |||
<area shape="rect" id="node9" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="341,631,497,672"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
@@ -132,6 +128,8 @@ Macros</h2></td></tr> | |||
<tr class="separator:a9a2b1ca4d91cff876f48deeaacbc33da"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:aad4f0ecbc65cdc3a7be544225b44f86a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a">ENABLE_EXTENDED_TRANSFER_CLASS</a>   0</td></tr> | |||
<tr class="separator:aad4f0ecbc65cdc3a7be544225b44f86a"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a1d106f3a0ba8577abdcc9ce3961ef90b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b">ENABLE_SDIO_CLASS</a>   0</td></tr> | |||
<tr class="separator:a1d106f3a0ba8577abdcc9ce3961ef90b"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:acc3d779d87b785bb7236b9b3acf7e619"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619">ENABLE_SOFTWARE_SPI_CLASS</a>   0</td></tr> | |||
<tr class="separator:acc3d779d87b785bb7236b9b3acf7e619"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a270eefdaec4778f2a491658f34f61b17"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17">ENDL_CALLS_FLUSH</a>   0</td></tr> | |||
@@ -186,6 +184,19 @@ Macros</h2></td></tr> | |||
<p>If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class <a class="el" href="class_sd_fat_e_x.html" title="SdFat class with extended SD I/O. ">SdFatEX</a> will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, the class <a class="el" href="class_sd_fat_soft_spi_e_x.html" title="SdFat class using software SPI and extended SD I/O. ">SdFatSoftSpiEX</a> will be defined.</p> | |||
<p>These classes used extended multi-block SD I/O for better performance. the SPI bus may not be shared with other devices in this mode. </p> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a1d106f3a0ba8577abdcc9ce3961ef90b"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">#define ENABLE_SDIO_CLASS   0</td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
<p>Enable SDIO driver if available. </p> | |||
</div> | |||
</div> | |||
<a class="anchor" id="acc3d779d87b785bb7236b9b3acf7e619"></a> | |||
@@ -362,7 +373,7 @@ Macros</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -4,7 +4,7 @@ | |||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | |||
<meta http-equiv="X-UA-Compatible" content="IE=9"/> | |||
<meta name="generator" content="Doxygen 1.8.10"/> | |||
<title>SdFat: Arduino/libraries/SdFat/src/SdSpiCard/SdSpiCard.h File Reference</title> | |||
<title>SdFat: Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h File Reference</title> | |||
<link href="tabs.css" rel="stylesheet" type="text/css"/> | |||
<script type="text/javascript" src="jquery.js"></script> | |||
<script type="text/javascript" src="dynsections.js"></script> | |||
@@ -80,7 +80,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<div id="nav-path" class="navpath"> | |||
<ul> | |||
<li class="navelem"><a class="el" href="dir_a991eec27578c865874ede3d8ec657c2.html">Arduino</a></li><li class="navelem"><a class="el" href="dir_481cc946b8a81b8d9363a4aad6201160.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1281b15c327061056ab3b326e90c50cf.html">SdFat</a></li><li class="navelem"><a class="el" href="dir_c18d6c86f7b0afecac5c3a8a9885031e.html">src</a></li><li class="navelem"><a class="el" href="dir_c1572573431a6c581ab684c4a3cd60b9.html">SdSpiCard</a></li> </ul> | |||
<li class="navelem"><a class="el" href="dir_a991eec27578c865874ede3d8ec657c2.html">Arduino</a></li><li class="navelem"><a class="el" href="dir_481cc946b8a81b8d9363a4aad6201160.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1281b15c327061056ab3b326e90c50cf.html">SdFat</a></li><li class="navelem"><a class="el" href="dir_c18d6c86f7b0afecac5c3a8a9885031e.html">src</a></li><li class="navelem"><a class="el" href="dir_a70af2fb8f1edf8b7124f41d82dbf480.html">SdCard</a></li> </ul> | |||
</div> | |||
</div><!-- top --> | |||
<div class="header"> | |||
@@ -96,22 +96,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<div class="textblock"><code>#include <stddef.h></code><br /> | |||
<code>#include "<a class="el" href="_sys_call_8h.html">SysCall.h</a>"</code><br /> | |||
<code>#include "SdInfo.h"</code><br /> | |||
<code>#include "<a class="el" href="_sd_spi_driver_8h.html">SdSpiDriver.h</a>"</code><br /> | |||
<code>#include "../FatLib/BaseBlockDriver.h"</code><br /> | |||
<code>#include "../SpiDriver/SdSpiDriver.h"</code><br /> | |||
</div><div class="textblock"><div class="dynheader"> | |||
Include dependency graph for SdSpiCard.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_spi_card_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8h" id="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8h"> | |||
<div class="center"><img src="_sd_spi_card_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8h" id="_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8h"> | |||
<area shape="rect" id="node3" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="97,95,176,121"/> | |||
<area shape="rect" id="node5" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="295,95,395,121"/> | |||
<area shape="rect" id="node8" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="397,169,501,196"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
This graph shows which files directly or indirectly include this file:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_spi_card_8h__dep__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8hdep" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8hdep" id="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_card_2_sd_spi_card_8hdep"> | |||
<div class="center"><img src="_sd_spi_card_8h__dep__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8hdep" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8hdep" id="_arduino_2libraries_2_sd_fat_2src_2_sd_card_2_sd_spi_card_8hdep"> | |||
<area shape="rect" id="node2" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="517,95,672,136"/> | |||
<area shape="rect" id="node3" href="_sd_fat_8h.html" title="SdFat class. " alt="" coords="427,184,581,225"/> | |||
<area shape="rect" id="node4" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="605,184,768,225"/> | |||
@@ -134,13 +133,16 @@ Classes</h2></td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Raw access to SD and SDHC flash memory cards via SPI protocol. <a href="class_sd_spi_card.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card_e_x.html">SdSpiCardEX</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Extended SD I/O block driver. <a href="class_sd_spi_card_e_x.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table> | |||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> | |||
<div class="textblock"><p><a class="el" href="class_sd_spi_card.html" title="Raw access to SD and SDHC flash memory cards via SPI protocol. ">SdSpiCard</a> class for V2 SD/SDHC cards. </p> | |||
</div></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -1,188 +0,0 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<html xmlns="http://www.w3.org/1999/xhtml"> | |||
<head> | |||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> | |||
<meta http-equiv="X-UA-Compatible" content="IE=9"/> | |||
<meta name="generator" content="Doxygen 1.8.10"/> | |||
<title>SdFat: Arduino/libraries/SdFat/src/SdSpiDriver.h File Reference</title> | |||
<link href="tabs.css" rel="stylesheet" type="text/css"/> | |||
<script type="text/javascript" src="jquery.js"></script> | |||
<script type="text/javascript" src="dynsections.js"></script> | |||
<link href="search/search.css" rel="stylesheet" type="text/css"/> | |||
<script type="text/javascript" src="search/searchdata.js"></script> | |||
<script type="text/javascript" src="search/search.js"></script> | |||
<script type="text/javascript"> | |||
$(document).ready(function() { init_search(); }); | |||
</script> | |||
<link href="doxygen.css" rel="stylesheet" type="text/css" /> | |||
</head> | |||
<body> | |||
<div id="top"><!-- do not remove this div, it is closed by doxygen! --> | |||
<div id="titlearea"> | |||
<table cellspacing="0" cellpadding="0"> | |||
<tbody> | |||
<tr style="height: 56px;"> | |||
<td id="projectalign" style="padding-left: 0.5em;"> | |||
<div id="projectname">SdFat | |||
</div> | |||
</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
</div> | |||
<!-- end header part --> | |||
<!-- Generated by Doxygen 1.8.10 --> | |||
<script type="text/javascript"> | |||
var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</script> | |||
<div id="navrow1" class="tabs"> | |||
<ul class="tablist"> | |||
<li><a href="index.html"><span>Main Page</span></a></li> | |||
<li><a href="annotated.html"><span>Classes</span></a></li> | |||
<li class="current"><a href="files.html"><span>Files</span></a></li> | |||
<li> | |||
<div id="MSearchBox" class="MSearchBoxInactive"> | |||
<span class="left"> | |||
<img id="MSearchSelect" src="search/mag_sel.png" | |||
onmouseover="return searchBox.OnSearchSelectShow()" | |||
onmouseout="return searchBox.OnSearchSelectHide()" | |||
alt=""/> | |||
<input type="text" id="MSearchField" value="Search" accesskey="S" | |||
onfocus="searchBox.OnSearchFieldFocus(true)" | |||
onblur="searchBox.OnSearchFieldFocus(false)" | |||
onkeyup="searchBox.OnSearchFieldChange(event)"/> | |||
</span><span class="right"> | |||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> | |||
</span> | |||
</div> | |||
</li> | |||
</ul> | |||
</div> | |||
<div id="navrow2" class="tabs2"> | |||
<ul class="tablist"> | |||
<li><a href="files.html"><span>File List</span></a></li> | |||
<li><a href="globals.html"><span>File Members</span></a></li> | |||
</ul> | |||
</div> | |||
<!-- window showing the filter options --> | |||
<div id="MSearchSelectWindow" | |||
onmouseover="return searchBox.OnSearchSelectShow()" | |||
onmouseout="return searchBox.OnSearchSelectHide()" | |||
onkeydown="return searchBox.OnSearchSelectKey(event)"> | |||
</div> | |||
<!-- iframe showing the search results (closed by default) --> | |||
<div id="MSearchResultsWindow"> | |||
<iframe src="javascript:void(0)" frameborder="0" | |||
name="MSearchResults" id="MSearchResults"> | |||
</iframe> | |||
</div> | |||
<div id="nav-path" class="navpath"> | |||
<ul> | |||
<li class="navelem"><a class="el" href="dir_a991eec27578c865874ede3d8ec657c2.html">Arduino</a></li><li class="navelem"><a class="el" href="dir_481cc946b8a81b8d9363a4aad6201160.html">libraries</a></li><li class="navelem"><a class="el" href="dir_1281b15c327061056ab3b326e90c50cf.html">SdFat</a></li><li class="navelem"><a class="el" href="dir_c18d6c86f7b0afecac5c3a8a9885031e.html">src</a></li> </ul> | |||
</div> | |||
</div><!-- top --> | |||
<div class="header"> | |||
<div class="summary"> | |||
<a href="#nested-classes">Classes</a> | | |||
<a href="#typedef-members">Typedefs</a> </div> | |||
<div class="headertitle"> | |||
<div class="title">SdSpiDriver.h File Reference</div> </div> | |||
</div><!--header--> | |||
<div class="contents"> | |||
<p>SpiDriver classes. | |||
<a href="#details">More...</a></p> | |||
<div class="textblock"><code>#include <Arduino.h></code><br /> | |||
<code>#include "SPI.h"</code><br /> | |||
<code>#include "SdSpiCard/SdSpiBaseDriver.h"</code><br /> | |||
<code>#include "<a class="el" href="_sd_fat_config_8h.html">SdFatConfig.h</a>"</code><br /> | |||
</div><div class="textblock"><div class="dynheader"> | |||
Include dependency graph for SdSpiDriver.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_spi_driver_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8h" id="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8h"> | |||
<area shape="rect" id="node4" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="187,95,291,121"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
This graph shows which files directly or indirectly include this file:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sd_spi_driver_8h__dep__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8hdep" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8hdep" id="_arduino_2libraries_2_sd_fat_2src_2_sd_spi_driver_8hdep"> | |||
<area shape="rect" id="node2" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="501,95,688,136"/> | |||
<area shape="rect" id="node3" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="517,184,672,225"/> | |||
<area shape="rect" id="node4" href="_sd_fat_8h.html" title="SdFat class. " alt="" coords="427,273,581,315"/> | |||
<area shape="rect" id="node5" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="605,273,768,315"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="487,363,641,404"/> | |||
<area shape="rect" id="node8" href="_fat_file_system_8h.html" title="FatFileSystem class. " alt="" coords="192,899,376,940"/> | |||
<area shape="rect" id="node7" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="5,631,176,672"/> | |||
<area shape="rect" id="node9" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="429,452,584,493"/> | |||
<area shape="rect" id="node14" href="fstream_8h.html" title="fstream, ifstream, and ofstream classes " alt="" coords="496,720,651,761"/> | |||
<area shape="rect" id="node16" href="_stdio_stream_8h.html" title="StdioStream class. " alt="" coords="659,452,829,493"/> | |||
<area shape="rect" id="node10" href="istream_8h.html" title="istream class " alt="" coords="251,541,405,583"/> | |||
<area shape="rect" id="node15" href="ostream_8h.html" title="ostream class " alt="" coords="429,541,584,583"/> | |||
<area shape="rect" id="node11" href="iostream_8h.html" title="iostream class " alt="" coords="384,631,539,672"/> | |||
<area shape="rect" id="node12" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="302,720,458,761"/> | |||
<area shape="rect" id="node13" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="263,809,449,851"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> | |||
Classes</h2></td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_alt_driver.html">SdSpiAltDriver</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Optimized SPI class for access to SD and SDHC flash memory cards. <a href="class_sd_spi_alt_driver.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_lib_driver.html">SdSpiLibDriver</a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_sd_spi_lib_driver.html" title="SdSpiLibDriver - use standard SPI library. ">SdSpiLibDriver</a> - use standard SPI library. <a href="class_sd_spi_lib_driver.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_soft_driver.html">SdSpiSoftDriver< MisoPin, MosiPin, SckPin ></a></td></tr> | |||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Software SPI class for access to SD and SDHC flash memory cards. <a href="class_sd_spi_soft_driver.html#details">More...</a><br /></td></tr> | |||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table><table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> | |||
Typedefs</h2></td></tr> | |||
<tr class="memitem:af7a2666e5d6cab16c0a99adf5115f38d"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="class_sd_spi_lib_driver.html">SdSpiLibDriver</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_spi_driver_8h.html#af7a2666e5d6cab16c0a99adf5115f38d">SdFatSpiDriver</a></td></tr> | |||
<tr class="separator:af7a2666e5d6cab16c0a99adf5115f38d"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:abf391604c1ecfed19cdcb6c8bd626972"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="_sd_spi_driver_8h.html#af7a2666e5d6cab16c0a99adf5115f38d">SdFatSpiDriver</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_spi_driver_8h.html#abf391604c1ecfed19cdcb6c8bd626972">SdSpiDriver</a></td></tr> | |||
<tr class="separator:abf391604c1ecfed19cdcb6c8bd626972"><td class="memSeparator" colspan="2"> </td></tr> | |||
</table> | |||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> | |||
<div class="textblock"><p>SpiDriver classes. </p> | |||
</div><h2 class="groupheader">Typedef Documentation</h2> | |||
<a class="anchor" id="af7a2666e5d6cab16c0a99adf5115f38d"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">typedef <a class="el" href="class_sd_spi_lib_driver.html">SdSpiLibDriver</a> <a class="el" href="_sd_spi_driver_8h.html#af7a2666e5d6cab16c0a99adf5115f38d">SdFatSpiDriver</a></td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
<p><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> uses Arduino library SPI. </p> | |||
</div> | |||
</div> | |||
<a class="anchor" id="abf391604c1ecfed19cdcb6c8bd626972"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">typedef <a class="el" href="_sd_spi_driver_8h.html#af7a2666e5d6cab16c0a99adf5115f38d">SdFatSpiDriver</a> <a class="el" href="_sd_spi_driver_8h.html#abf391604c1ecfed19cdcb6c8bd626972">SdSpiDriver</a></td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
<p>typedef for for <a class="el" href="class_sd_spi_card.html" title="Raw access to SD and SDHC flash memory cards via SPI protocol. ">SdSpiCard</a> class. </p> | |||
</div> | |||
</div> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> | |||
</body> | |||
</html> |
@@ -103,15 +103,14 @@ Include dependency graph for StdioStream.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_stdio_stream_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_stdio_stream_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_stdio_stream_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2_stdio_stream_8h"> | |||
<area shape="rect" id="node3" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="121,95,194,121"/> | |||
<area shape="rect" id="node6" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="63,393,169,420"/> | |||
<area shape="rect" id="node10" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="419,244,514,271"/> | |||
<area shape="rect" id="node11" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="285,169,381,196"/> | |||
<area shape="rect" id="node8" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="217,468,321,495"/> | |||
<area shape="rect" id="node12" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="296,244,395,271"/> | |||
<area shape="rect" id="node13" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="298,319,393,345"/> | |||
<area shape="rect" id="node14" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="409,393,487,420"/> | |||
<area shape="rect" id="node16" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="285,393,385,420"/> | |||
<area shape="rect" id="node3" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="833,95,906,121"/> | |||
<area shape="rect" id="node6" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="141,244,246,271"/> | |||
<area shape="rect" id="node10" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="907,244,1002,271"/> | |||
<area shape="rect" id="node11" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="821,169,917,196"/> | |||
<area shape="rect" id="node8" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="27,333,131,360"/> | |||
<area shape="rect" id="node12" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="457,244,556,271"/> | |||
<area shape="rect" id="node13" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="435,333,578,360"/> | |||
<area shape="rect" id="node14" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="369,423,447,449"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
@@ -239,7 +238,7 @@ Variables</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -100,22 +100,22 @@ This graph shows which files directly or indirectly include this file:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="_sys_call_8h__dep__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_sys_call_8hdep" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_sys_call_8hdep" id="_arduino_2libraries_2_sd_fat_2src_2_sys_call_8hdep"> | |||
<area shape="rect" id="node2" href="_minimum_serial_8h.html" title="Minimal AVR Serial driver. " alt="" coords="312,95,467,136"/> | |||
<area shape="rect" id="node3" href="_sd_fat_8h.html" title="SdFat class. " alt="" coords="427,273,581,315"/> | |||
<area shape="rect" id="node4" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="541,95,728,136"/> | |||
<area shape="rect" id="node5" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="557,184,712,225"/> | |||
<area shape="rect" id="node6" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="605,273,768,315"/> | |||
<area shape="rect" id="node7" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="487,363,641,404"/> | |||
<area shape="rect" id="node9" href="_fat_file_system_8h.html" title="FatFileSystem class. " alt="" coords="192,899,376,940"/> | |||
<area shape="rect" id="node8" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="5,631,176,672"/> | |||
<area shape="rect" id="node10" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="429,452,584,493"/> | |||
<area shape="rect" id="node15" href="fstream_8h.html" title="fstream, ifstream, and ofstream classes " alt="" coords="496,720,651,761"/> | |||
<area shape="rect" id="node17" href="_stdio_stream_8h.html" title="StdioStream class. " alt="" coords="659,452,829,493"/> | |||
<area shape="rect" id="node11" href="istream_8h.html" title="istream class " alt="" coords="251,541,405,583"/> | |||
<area shape="rect" id="node16" href="ostream_8h.html" title="ostream class " alt="" coords="429,541,584,583"/> | |||
<area shape="rect" id="node12" href="iostream_8h.html" title="iostream class " alt="" coords="348,631,503,672"/> | |||
<area shape="rect" id="node13" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="302,720,458,761"/> | |||
<area shape="rect" id="node14" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="263,809,449,851"/> | |||
<area shape="rect" id="node2" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="721,95,889,136"/> | |||
<area shape="rect" id="node4" href="_sd_fat_8h.html" title="SdFat class. " alt="" coords="849,273,1004,315"/> | |||
<area shape="rect" id="node17" href="_minimum_serial_8h.html" title="Minimal AVR Serial driver. " alt="" coords="964,95,1119,136"/> | |||
<area shape="rect" id="node3" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="728,184,883,225"/> | |||
<area shape="rect" id="node5" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="663,273,825,315"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="487,363,641,404"/> | |||
<area shape="rect" id="node8" href="_fat_file_system_8h.html" title="FatFileSystem class. " alt="" coords="192,899,376,940"/> | |||
<area shape="rect" id="node7" href="_arduino_files_8h.html" title="PrintFile class. " alt="" coords="5,631,176,672"/> | |||
<area shape="rect" id="node9" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="429,452,584,493"/> | |||
<area shape="rect" id="node14" href="fstream_8h.html" title="fstream, ifstream, and ofstream classes " alt="" coords="496,720,651,761"/> | |||
<area shape="rect" id="node16" href="_stdio_stream_8h.html" title="StdioStream class. " alt="" coords="659,452,829,493"/> | |||
<area shape="rect" id="node10" href="istream_8h.html" title="istream class " alt="" coords="251,541,405,583"/> | |||
<area shape="rect" id="node15" href="ostream_8h.html" title="ostream class " alt="" coords="429,541,584,583"/> | |||
<area shape="rect" id="node11" href="iostream_8h.html" title="iostream class " alt="" coords="384,631,539,672"/> | |||
<area shape="rect" id="node12" href="bufstream_8h.html" title="ibufstream and obufstream classes " alt="" coords="302,720,458,761"/> | |||
<area shape="rect" id="node13" href="_arduino_stream_8h.html" title="ArduinoInStream and ArduinoOutStream classes. " alt="" coords="263,809,449,851"/> | |||
</map> | |||
</div> | |||
</div><table class="memberdecls"> | |||
@@ -183,7 +183,7 @@ Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -121,30 +121,27 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<tr id="row_31_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_print_file.html" target="_self">PrintFile</a></td><td class="desc"><a class="el" href="class_fat_file.html" title="Basic file class. ">FatFile</a> with Print </td></tr> | |||
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd2_card.html" target="_self">Sd2Card</a></td><td class="desc">Raw access to SD and SDHC card using default SPI library </td></tr> | |||
<tr id="row_33_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_base_file.html" target="_self">SdBaseFile</a></td><td class="desc">Class for backward compatibility </td></tr> | |||
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_block_driver.html" target="_self">SdBlockDriver</a></td><td class="desc">Standard SD block driver </td></tr> | |||
<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_block_driver_e_x.html" target="_self">SdBlockDriverEX</a></td><td class="desc">Extended SD I/O block driver </td></tr> | |||
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat.html" target="_self">SdFat</a></td><td class="desc">Main file system class for SdFat library </td></tr> | |||
<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_e_x.html" target="_self">SdFatEX</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class with extended SD I/O </td></tr> | |||
<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_soft_spi.html" target="_self">SdFatSoftSpi</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using software SPI </td></tr> | |||
<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_soft_spi_e_x.html" target="_self">SdFatSoftSpiEX</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using software SPI and extended SD I/O </td></tr> | |||
<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_file.html" target="_self">SdFile</a></td><td class="desc">Class for backward compatibility </td></tr> | |||
<tr id="row_41_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_file_system.html" target="_self">SdFileSystem</a></td><td class="desc">Virtual base class for SdFat library </td></tr> | |||
<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_alt_driver.html" target="_self">SdSpiAltDriver</a></td><td class="desc">Optimized SPI class for access to SD and SDHC flash memory cards </td></tr> | |||
<tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_base_driver.html" target="_self">SdSpiBaseDriver</a></td><td class="desc">SPI base driver </td></tr> | |||
<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_card.html" target="_self">SdSpiCard</a></td><td class="desc">Raw access to SD and SDHC flash memory cards via SPI protocol </td></tr> | |||
<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_lib_driver.html" target="_self">SdSpiLibDriver</a></td><td class="desc"><a class="el" href="class_sd_spi_lib_driver.html" title="SdSpiLibDriver - use standard SPI library. ">SdSpiLibDriver</a> - use standard SPI library </td></tr> | |||
<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_soft_driver.html" target="_self">SdSpiSoftDriver</a></td><td class="desc">Software SPI class for access to SD and SDHC flash memory cards </td></tr> | |||
<tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetfill.html" target="_self">setfill</a></td><td class="desc">Type for setfill manipulator </td></tr> | |||
<tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetprecision.html" target="_self">setprecision</a></td><td class="desc">Type for setprecision manipulator </td></tr> | |||
<tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetw.html" target="_self">setw</a></td><td class="desc">Type for setw manipulator </td></tr> | |||
<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_stdio_stream.html" target="_self">StdioStream</a></td><td class="desc"><a class="el" href="class_stdio_stream.html" title="StdioStream implements a minimal stdio stream. ">StdioStream</a> implements a minimal stdio stream </td></tr> | |||
<tr id="row_51_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sys_call.html" target="_self">SysCall</a></td><td class="desc"><a class="el" href="class_sys_call.html" title="SysCall - Class to wrap system calls. ">SysCall</a> - Class to wrap system calls </td></tr> | |||
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat.html" target="_self">SdFat</a></td><td class="desc">Main file system class for SdFat library </td></tr> | |||
<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_e_x.html" target="_self">SdFatEX</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class with extended SD I/O </td></tr> | |||
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_sdio.html" target="_self">SdFatSdio</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using SDIO </td></tr> | |||
<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_soft_spi.html" target="_self">SdFatSoftSpi</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using software SPI </td></tr> | |||
<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_fat_soft_spi_e_x.html" target="_self">SdFatSoftSpiEX</a></td><td class="desc"><a class="el" href="class_sd_fat.html" title="Main file system class for SdFat library. ">SdFat</a> class using software SPI and extended SD I/O </td></tr> | |||
<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_file.html" target="_self">SdFile</a></td><td class="desc">Class for backward compatibility </td></tr> | |||
<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_file_system.html" target="_self">SdFileSystem</a></td><td class="desc">Virtual base class for SdFat library </td></tr> | |||
<tr id="row_41_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sdio_card.html" target="_self">SdioCard</a></td><td class="desc">Raw SDIO access to SD and SDHC flash memory cards </td></tr> | |||
<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_card.html" target="_self">SdSpiCard</a></td><td class="desc">Raw access to SD and SDHC flash memory cards via SPI protocol </td></tr> | |||
<tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sd_spi_card_e_x.html" target="_self">SdSpiCardEX</a></td><td class="desc">Extended SD I/O block driver </td></tr> | |||
<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetfill.html" target="_self">setfill</a></td><td class="desc">Type for setfill manipulator </td></tr> | |||
<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetprecision.html" target="_self">setprecision</a></td><td class="desc">Type for setprecision manipulator </td></tr> | |||
<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsetw.html" target="_self">setw</a></td><td class="desc">Type for setw manipulator </td></tr> | |||
<tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_stdio_stream.html" target="_self">StdioStream</a></td><td class="desc"><a class="el" href="class_stdio_stream.html" title="StdioStream implements a minimal stdio stream. ">StdioStream</a> implements a minimal stdio stream </td></tr> | |||
<tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sys_call.html" target="_self">SysCall</a></td><td class="desc"><a class="el" href="class_sys_call.html" title="SysCall - Class to wrap system calls. ">SysCall</a> - Class to wrap system calls </td></tr> | |||
</table> | |||
</div><!-- directory --> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:53 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -100,19 +100,18 @@ Include dependency graph for bufstream.h:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="bufstream_8h__incl.png" border="0" usemap="#_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2bufstream_8h" alt=""/></div> | |||
<map name="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2bufstream_8h" id="_arduino_2libraries_2_sd_fat_2src_2_fat_lib_2bufstream_8h"> | |||
<area shape="rect" id="node3" href="iostream_8h.html" title="iostream class " alt="" coords="241,95,324,121"/> | |||
<area shape="rect" id="node4" href="istream_8h.html" title="istream class " alt="" coords="245,169,321,196"/> | |||
<area shape="rect" id="node21" href="ostream_8h.html" title="ostream class " alt="" coords="345,169,425,196"/> | |||
<area shape="rect" id="node5" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="360,244,411,271"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="357,319,430,345"/> | |||
<area shape="rect" id="node9" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="418,617,523,644"/> | |||
<area shape="rect" id="node13" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="381,468,475,495"/> | |||
<area shape="rect" id="node14" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="241,393,337,420"/> | |||
<area shape="rect" id="node11" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="228,692,332,719"/> | |||
<area shape="rect" id="node15" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="156,468,255,495"/> | |||
<area shape="rect" id="node16" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="158,543,253,569"/> | |||
<area shape="rect" id="node17" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="223,617,302,644"/> | |||
<area shape="rect" id="node19" href="_sd_spi_driver_8h.html" title="SpiDriver classes. " alt="" coords="99,617,199,644"/> | |||
<area shape="rect" id="node3" href="iostream_8h.html" title="iostream class " alt="" coords="727,95,809,121"/> | |||
<area shape="rect" id="node4" href="istream_8h.html" title="istream class " alt="" coords="729,169,805,196"/> | |||
<area shape="rect" id="node23" href="ostream_8h.html" title="ostream class " alt="" coords="829,169,909,196"/> | |||
<area shape="rect" id="node5" href="ios_8h.html" title="ios_base and ios classes " alt="" coords="832,244,883,271"/> | |||
<area shape="rect" id="node6" href="_fat_file_8h.html" title="FatFile class. " alt="" coords="821,319,894,345"/> | |||
<area shape="rect" id="node9" href="_fat_lib_config_8h.html" title="configuration definitions " alt="" coords="170,468,275,495"/> | |||
<area shape="rect" id="node13" href="_fat_structs_8h.html" title="FAT file structures. " alt="" coords="937,468,1031,495"/> | |||
<area shape="rect" id="node14" href="_fat_volume_8h.html" title="FatVolume class. " alt="" coords="797,393,893,420"/> | |||
<area shape="rect" id="node11" href="_sd_fat_config_8h.html" title="configuration definitions " alt="" coords="5,557,109,584"/> | |||
<area shape="rect" id="node15" href="_block_driver_8h.html" title="Define block driver. " alt="" coords="487,468,585,495"/> | |||
<area shape="rect" id="node16" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. " alt="" coords="465,557,607,584"/> | |||
<area shape="rect" id="node17" href="_sys_call_8h.html" title="SysCall class. " alt="" coords="398,647,477,673"/> | |||
</map> | |||
</div> | |||
</div><div class="textblock"><div class="dynheader"> | |||
@@ -139,7 +138,7 @@ Classes</h2></td></tr> | |||
</div></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -2596,7 +2596,7 @@ Static Public Attributes</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -2286,7 +2286,7 @@ Static Public Attributes</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -98,7 +98,7 @@ Inheritance diagram for BaseBlockDriver:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="class_base_block_driver__inherit__graph.png" border="0" usemap="#_base_block_driver_inherit__map" alt="Inheritance graph"/></div> | |||
<map name="_base_block_driver_inherit__map" id="_base_block_driver_inherit__map"> | |||
<area shape="rect" id="node2" href="class_sd_block_driver_e_x.html" title="Extended SD I/O block driver. " alt="" coords="5,80,124,107"/> | |||
<area shape="rect" id="node2" href="class_sdio_card.html" title="Raw SDIO access to SD and SDHC flash memory cards. " alt="" coords="27,80,101,107"/> | |||
</map> | |||
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> | |||
<table class="memberdecls"> | |||
@@ -159,7 +159,7 @@ Public Member Functions</h2></td></tr> | |||
</dl> | |||
<dl class="section return"><dt>Returns</dt><dd>The value true is returned for success and the value false is returned for failure. </dd></dl> | |||
<p>Implemented in <a class="el" href="class_sd_block_driver_e_x.html#a2820c15543b0e1950961b72945ade853">SdBlockDriverEX</a>.</p> | |||
<p>Implemented in <a class="el" href="class_sdio_card.html#ac94605c428fa9258106835cceec470d8">SdioCard</a>.</p> | |||
</div> | |||
</div> | |||
@@ -211,7 +211,7 @@ Public Member Functions</h2></td></tr> | |||
</dl> | |||
<dl class="section return"><dt>Returns</dt><dd>The value true is returned for success and the value false is returned for failure. </dd></dl> | |||
<p>Implemented in <a class="el" href="class_sd_block_driver_e_x.html#a39941dac40896a2c11e49e650d0e6057">SdBlockDriverEX</a>.</p> | |||
<p>Implemented in <a class="el" href="class_sdio_card.html#a7de36d26a01dc39b7dc122c54ee03b12">SdioCard</a>.</p> | |||
</div> | |||
</div> | |||
@@ -237,7 +237,7 @@ Public Member Functions</h2></td></tr> | |||
</div><div class="memdoc"> | |||
<p>End multi-block transfer and go to idle state. </p><dl class="section return"><dt>Returns</dt><dd>The value true is returned for success and the value false is returned for failure. </dd></dl> | |||
<p>Implemented in <a class="el" href="class_sd_block_driver_e_x.html#a5386776abfa49ac81d1706f9ac1149c8">SdBlockDriverEX</a>.</p> | |||
<p>Implemented in <a class="el" href="class_sdio_card.html#affcd36a5c3a42042fe24716671f06632">SdioCard</a>.</p> | |||
</div> | |||
</div> | |||
@@ -282,7 +282,7 @@ Public Member Functions</h2></td></tr> | |||
</dl> | |||
<dl class="section return"><dt>Returns</dt><dd>The value true is returned for success and the value false is returned for failure. </dd></dl> | |||
<p>Implemented in <a class="el" href="class_sd_block_driver_e_x.html#a21411fd0ddb394d6093b284af739e46c">SdBlockDriverEX</a>.</p> | |||
<p>Implemented in <a class="el" href="class_sdio_card.html#ae53e5f72ddf9ace3f47774d968e064ed">SdioCard</a>.</p> | |||
</div> | |||
</div> | |||
@@ -334,7 +334,7 @@ Public Member Functions</h2></td></tr> | |||
</dl> | |||
<dl class="section return"><dt>Returns</dt><dd>The value true is returned for success and the value false is returned for failure. </dd></dl> | |||
<p>Implemented in <a class="el" href="class_sd_block_driver_e_x.html#ac91f223488f7b76b11f4f52335ce9730">SdBlockDriverEX</a>.</p> | |||
<p>Implemented in <a class="el" href="class_sdio_card.html#a8b811f875497e90e75fbe6c2d41d89cb">SdioCard</a>.</p> | |||
</div> | |||
</div> | |||
@@ -344,7 +344,7 @@ Public Member Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -463,7 +463,7 @@ Static Public Attributes</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -2981,7 +2981,7 @@ Modify and access timestamps may be overwritten if a date time callback function | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -98,14 +98,16 @@ Inheritance diagram for FatFileSystem:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="class_fat_file_system__inherit__graph.png" border="0" usemap="#_fat_file_system_inherit__map" alt="Inheritance graph"/></div> | |||
<map name="_fat_file_system_inherit__map" id="_fat_file_system_inherit__map"> | |||
<area shape="rect" id="node3" href="class_sd_file_system.html" title="Virtual base class for SdFat library. " alt="" coords="301,13,511,40"/> | |||
<area shape="rect" id="node4" href="class_sd_file_system.html" title="SdFileSystem\< SdBlockDriver \>" alt="" coords="301,64,511,91"/> | |||
<area shape="rect" id="node7" href="class_sd_file_system.html" title="SdFileSystem\< SdBlockDriverEX \>" alt="" coords="293,123,519,149"/> | |||
<area shape="rect" id="node2" href="class_fat_volume.html" title="Access FAT16 and FAT32 volumes on raw file devices. " alt="" coords="5,64,91,91"/> | |||
<area shape="rect" id="node5" href="class_sd_fat.html" title="Main file system class for SdFat library. " alt="" coords="627,5,685,32"/> | |||
<area shape="rect" id="node6" href="class_sd_fat_soft_spi.html" title="SdFat class using software SPI. " alt="" coords="575,57,737,98"/> | |||
<area shape="rect" id="node8" href="class_sd_fat_e_x.html" title="SdFat class with extended SD I/O. " alt="" coords="619,123,693,149"/> | |||
<area shape="rect" id="node9" href="class_sd_fat_soft_spi_e_x.html" title="SdFat class using software SPI and extended SD I/O. " alt="" coords="567,174,745,215"/> | |||
<area shape="rect" id="node3" href="class_sd_file_system.html" title="Virtual base class for SdFat library. " alt="" coords="293,5,503,32"/> | |||
<area shape="rect" id="node4" href="class_sd_file_system.html" title="SdFileSystem\< SdioCard \>" alt="" coords="307,56,489,83"/> | |||
<area shape="rect" id="node6" href="class_sd_file_system.html" title="SdFileSystem\< SdSpiCard \>" alt="" coords="303,107,493,133"/> | |||
<area shape="rect" id="node9" href="class_sd_file_system.html" title="SdFileSystem\< SdSpiCardEX \>" alt="" coords="295,195,501,221"/> | |||
<area shape="rect" id="node2" href="class_fat_volume.html" title="Access FAT16 and FAT32 volumes on raw file devices. " alt="" coords="5,81,91,108"/> | |||
<area shape="rect" id="node5" href="class_sd_fat_sdio.html" title="SdFat class using SDIO. " alt="" coords="599,27,681,53"/> | |||
<area shape="rect" id="node7" href="class_sd_fat.html" title="Main file system class for SdFat library. " alt="" coords="611,77,669,104"/> | |||
<area shape="rect" id="node8" href="class_sd_fat_soft_spi.html" title="SdFat class using software SPI. " alt="" coords="559,129,721,170"/> | |||
<area shape="rect" id="node10" href="class_sd_fat_e_x.html" title="SdFat class with extended SD I/O. " alt="" coords="603,195,677,221"/> | |||
<area shape="rect" id="node11" href="class_sd_fat_soft_spi_e_x.html" title="SdFat class using software SPI and extended SD I/O. " alt="" coords="551,246,729,287"/> | |||
</map> | |||
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> | |||
<div class="dynheader"> | |||
@@ -119,7 +121,7 @@ Collaboration diagram for FatFileSystem:</div> | |||
<table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> | |||
Public Member Functions</h2></td></tr> | |||
<tr class="memitem:a5dda20d3dcbfc8c641babbb2c9aac382"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382">begin</a> (<a class="el" href="_block_driver_8h.html#a29e32edf30724992d0ab870a56fdde6c">BlockDriver</a> *blockDev, uint8_t part=0)</td></tr> | |||
<tr class="memitem:a5dda20d3dcbfc8c641babbb2c9aac382"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382">begin</a> (<a class="el" href="_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb">BlockDriver</a> *blockDev, uint8_t part=0)</td></tr> | |||
<tr class="separator:a5dda20d3dcbfc8c641babbb2c9aac382"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a06beed4cea5e38116b58254a57125442"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_fat_volume.html#a06beed4cea5e38116b58254a57125442">blocksPerCluster</a> () const </td></tr> | |||
<tr class="separator:a06beed4cea5e38116b58254a57125442"><td class="memSeparator" colspan="2"> </td></tr> | |||
@@ -203,7 +205,7 @@ Public Member Functions</h2></td></tr> | |||
<tr> | |||
<td class="memname">bool FatFileSystem::begin </td> | |||
<td>(</td> | |||
<td class="paramtype"><a class="el" href="_block_driver_8h.html#a29e32edf30724992d0ab870a56fdde6c">BlockDriver</a> * </td> | |||
<td class="paramtype"><a class="el" href="_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb">BlockDriver</a> * </td> | |||
<td class="paramname"><em>blockDev</em>, </td> | |||
</tr> | |||
<tr> | |||
@@ -1329,7 +1331,7 @@ Public Member Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -236,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -1645,7 +1645,7 @@ Static Private Member Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -99,14 +99,16 @@ Inheritance diagram for FatVolume:</div> | |||
<div class="dyncontent"> | |||
<div class="center"><img src="class_fat_volume__inherit__graph.png" border="0" usemap="#_fat_volume_inherit__map" alt="Inheritance graph"/></div> | |||
<map name="_fat_volume_inherit__map" id="_fat_volume_inherit__map"> | |||
<area shape="rect" id="node2" href="class_fat_file_system.html" title="Integration class for the FatLib library. " alt="" coords="139,64,245,91"/> | |||
<area shape="rect" id="node3" href="class_sd_file_system.html" title="Virtual base class for SdFat library. " alt="" coords="301,13,511,40"/> | |||
<area shape="rect" id="node4" href="class_sd_file_system.html" title="SdFileSystem\< SdBlockDriver \>" alt="" coords="301,64,511,91"/> | |||
<area shape="rect" id="node7" href="class_sd_file_system.html" title="SdFileSystem\< SdBlockDriverEX \>" alt="" coords="293,123,519,149"/> | |||
<area shape="rect" id="node5" href="class_sd_fat.html" title="Main file system class for SdFat library. " alt="" coords="627,5,685,32"/> | |||
<area shape="rect" id="node6" href="class_sd_fat_soft_spi.html" title="SdFat class using software SPI. " alt="" coords="575,57,737,98"/> | |||
<area shape="rect" id="node8" href="class_sd_fat_e_x.html" title="SdFat class with extended SD I/O. " alt="" coords="619,123,693,149"/> | |||
<area shape="rect" id="node9" href="class_sd_fat_soft_spi_e_x.html" title="SdFat class using software SPI and extended SD I/O. " alt="" coords="567,174,745,215"/> | |||
<area shape="rect" id="node2" href="class_fat_file_system.html" title="Integration class for the FatLib library. " alt="" coords="139,81,245,108"/> | |||
<area shape="rect" id="node3" href="class_sd_file_system.html" title="Virtual base class for SdFat library. " alt="" coords="293,5,503,32"/> | |||
<area shape="rect" id="node4" href="class_sd_file_system.html" title="SdFileSystem\< SdioCard \>" alt="" coords="307,56,489,83"/> | |||
<area shape="rect" id="node6" href="class_sd_file_system.html" title="SdFileSystem\< SdSpiCard \>" alt="" coords="303,107,493,133"/> | |||
<area shape="rect" id="node9" href="class_sd_file_system.html" title="SdFileSystem\< SdSpiCardEX \>" alt="" coords="295,195,501,221"/> | |||
<area shape="rect" id="node5" href="class_sd_fat_sdio.html" title="SdFat class using SDIO. " alt="" coords="599,27,681,53"/> | |||
<area shape="rect" id="node7" href="class_sd_fat.html" title="Main file system class for SdFat library. " alt="" coords="611,77,669,104"/> | |||
<area shape="rect" id="node8" href="class_sd_fat_soft_spi.html" title="SdFat class using software SPI. " alt="" coords="559,129,721,170"/> | |||
<area shape="rect" id="node10" href="class_sd_fat_e_x.html" title="SdFat class with extended SD I/O. " alt="" coords="603,195,677,221"/> | |||
<area shape="rect" id="node11" href="class_sd_fat_soft_spi_e_x.html" title="SdFat class using software SPI and extended SD I/O. " alt="" coords="551,246,729,287"/> | |||
</map> | |||
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> | |||
<table class="memberdecls"> | |||
@@ -616,7 +618,7 @@ class </td><td class="memItemRight" valign="bottom"><b>FatFileSystem</b></t | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -3577,7 +3577,7 @@ Modify and access timestamps may be overwritten if a date time callback function | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -251,7 +251,7 @@ Public Member Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -3354,7 +3354,7 @@ Modify and access timestamps may be overwritten if a date time callback function | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -88,8 +88,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<p>This is the complete list of members for <a class="el" href="class_sd2_card.html">Sd2Card</a>, including all inherited members.</p> | |||
<table class="directory"> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd2_card.html#a9504c8f35b53d505e7dae33b0b2327d1">begin</a>(uint8_t chipSelectPin=SS, SPISettings spiSettings=SD_SCK_MHZ(50))</td><td class="entry"><a class="el" href="class_sd2_card.html">Sd2Card</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a7c8131750a5b1087375aa31f59564fae">SdSpiCard::begin</a>(SdSpiDriver *spiDriver)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7">begin</a>(uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))</td><td class="entry"><a class="el" href="class_sd2_card.html">Sd2Card</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7">SdSpiCard::begin</a>(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8">cardSize</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362">erase</a>(uint32_t firstBlock, uint32_t lastBlock)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#aed4591884254c9f58daa8738d7c1ccdd">eraseSingleBlockEnable</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
@@ -97,8 +97,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a50bf5f92223222beacec2b203a6b7a95">errorCode</a>() const </td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a7b1abdb8dd5254cd4af0df19ba59ce4a">errorData</a>() const </td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328">isBusy</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a2973091eeab7b6ba528f6442bc5df36e">readBlock</a>(uint32_t block, uint8_t *dst)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a5a7e12a5a076cc690885378932fa289f">readBlocks</a>(uint32_t block, uint8_t *dst, size_t count)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a">readBlock</a>(uint32_t lba, uint8_t *dst)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf">readBlocks</a>(uint32_t lba, uint8_t *dst, size_t nb)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea">readCID</a>(cid_t *cid)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290">readCSD</a>(csd_t *csd)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770">readData</a>(uint8_t *dst)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
@@ -109,17 +109,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8">SdSpiCard</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c">spiStart</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1">spiStop</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a061d92bf154a1863a6321385b7505f6e">type</a>() const </td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#acdf8c7fe62ab091971cd546c00714cee">writeBlock</a>(uint32_t blockNumber, const uint8_t *src)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#aa5ca6901525dce4b1bc1f94a95441d88">writeBlocks</a>(uint32_t block, const uint8_t *src, size_t count)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa">writeData</a>(const uint8_t *src)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2">writeStart</a>(uint32_t blockNumber)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba">writeStart</a>(uint32_t blockNumber, uint32_t eraseCount)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0">writeStop</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095">syncBlocks</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a061d92bf154a1863a6321385b7505f6e">type</a>() const </td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed">writeBlock</a>(uint32_t lba, const uint8_t *src)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913">writeBlocks</a>(uint32_t lba, const uint8_t *src, size_t nb)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa">writeData</a>(const uint8_t *src)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2">writeStart</a>(uint32_t blockNumber)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr><td class="entry"><a class="el" href="class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba">writeStart</a>(uint32_t blockNumber, uint32_t eraseCount)</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
<tr class="even"><td class="entry"><a class="el" href="class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0">writeStop</a>()</td><td class="entry"><a class="el" href="class_sd_spi_card.html">SdSpiCard</a></td><td class="entry"></td></tr> | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -112,10 +112,10 @@ Collaboration diagram for Sd2Card:</div> | |||
<table class="memberdecls"> | |||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> | |||
Public Member Functions</h2></td></tr> | |||
<tr class="memitem:a7c8131750a5b1087375aa31f59564fae"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a7c8131750a5b1087375aa31f59564fae">begin</a> (<a class="el" href="_sd_spi_driver_8h.html#abf391604c1ecfed19cdcb6c8bd626972">SdSpiDriver</a> *spiDriver)</td></tr> | |||
<tr class="separator:a7c8131750a5b1087375aa31f59564fae"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a9504c8f35b53d505e7dae33b0b2327d1"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd2_card.html#a9504c8f35b53d505e7dae33b0b2327d1">begin</a> (uint8_t chipSelectPin=SS, SPISettings spiSettings=SD_SCK_MHZ(50))</td></tr> | |||
<tr class="separator:a9504c8f35b53d505e7dae33b0b2327d1"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a824cd60ef8ac2b06262597d6f30a4ea7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7">begin</a> (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)</td></tr> | |||
<tr class="separator:a824cd60ef8ac2b06262597d6f30a4ea7"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a8506e1a2d7c4d8ec3f26e8b62ea81cd7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7">begin</a> (uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))</td></tr> | |||
<tr class="separator:a8506e1a2d7c4d8ec3f26e8b62ea81cd7"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:afca8bd6b7e465bf9c475ba375c4deec8"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8">cardSize</a> ()</td></tr> | |||
<tr class="separator:afca8bd6b7e465bf9c475ba375c4deec8"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a1caa13d19df6596b2c0dd62365c75362"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362">erase</a> (uint32_t firstBlock, uint32_t lastBlock)</td></tr> | |||
@@ -130,10 +130,10 @@ Public Member Functions</h2></td></tr> | |||
<tr class="separator:a7b1abdb8dd5254cd4af0df19ba59ce4a"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:aa3cb9139dbc1e6596c6717da2b486328"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328">isBusy</a> ()</td></tr> | |||
<tr class="separator:aa3cb9139dbc1e6596c6717da2b486328"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a2973091eeab7b6ba528f6442bc5df36e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a2973091eeab7b6ba528f6442bc5df36e">readBlock</a> (uint32_t block, uint8_t *dst)</td></tr> | |||
<tr class="separator:a2973091eeab7b6ba528f6442bc5df36e"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a5a7e12a5a076cc690885378932fa289f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a5a7e12a5a076cc690885378932fa289f">readBlocks</a> (uint32_t block, uint8_t *dst, size_t count)</td></tr> | |||
<tr class="separator:a5a7e12a5a076cc690885378932fa289f"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a4393634a82c6683ee94d1fefe0be332a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a">readBlock</a> (uint32_t lba, uint8_t *dst)</td></tr> | |||
<tr class="separator:a4393634a82c6683ee94d1fefe0be332a"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:ac630f77c3137923b47c1bd12a9bbfadf"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf">readBlocks</a> (uint32_t lba, uint8_t *dst, size_t nb)</td></tr> | |||
<tr class="separator:ac630f77c3137923b47c1bd12a9bbfadf"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:aa073dc42828164883db1b9faeff909ea"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea">readCID</a> (cid_t *cid)</td></tr> | |||
<tr class="separator:aa073dc42828164883db1b9faeff909ea"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a9fbea9525e70f6e3602fe5153a5a1290"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290">readCSD</a> (csd_t *csd)</td></tr> | |||
@@ -152,12 +152,14 @@ Public Member Functions</h2></td></tr> | |||
<tr class="separator:aa39feb6ebb269071ac6843a424ac311c"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a1033a4a68d38f52dddf6a1764fcca3e1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1">spiStop</a> ()</td></tr> | |||
<tr class="separator:a1033a4a68d38f52dddf6a1764fcca3e1"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a1b6d5f412c4ad75c2f575ca75c56c095"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095">syncBlocks</a> ()</td></tr> | |||
<tr class="separator:a1b6d5f412c4ad75c2f575ca75c56c095"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a061d92bf154a1863a6321385b7505f6e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a061d92bf154a1863a6321385b7505f6e">type</a> () const </td></tr> | |||
<tr class="separator:a061d92bf154a1863a6321385b7505f6e"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:acdf8c7fe62ab091971cd546c00714cee"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#acdf8c7fe62ab091971cd546c00714cee">writeBlock</a> (uint32_t blockNumber, const uint8_t *src)</td></tr> | |||
<tr class="separator:acdf8c7fe62ab091971cd546c00714cee"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:aa5ca6901525dce4b1bc1f94a95441d88"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#aa5ca6901525dce4b1bc1f94a95441d88">writeBlocks</a> (uint32_t block, const uint8_t *src, size_t count)</td></tr> | |||
<tr class="separator:aa5ca6901525dce4b1bc1f94a95441d88"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a03a0bdb0f37a88076f24a2133cf5b4ed"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed">writeBlock</a> (uint32_t lba, const uint8_t *src)</td></tr> | |||
<tr class="separator:a03a0bdb0f37a88076f24a2133cf5b4ed"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a181d96fe44891b7caabcd47dd29ac913"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913">writeBlocks</a> (uint32_t lba, const uint8_t *src, size_t nb)</td></tr> | |||
<tr class="separator:a181d96fe44891b7caabcd47dd29ac913"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a9495c0b148eb380358bb4a9721c0dffa"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa">writeData</a> (const uint8_t *src)</td></tr> | |||
<tr class="separator:a9495c0b148eb380358bb4a9721c0dffa"><td class="memSeparator" colspan="2"> </td></tr> | |||
<tr class="memitem:a56d4750a5d2f693943eec985cb61ffe2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2">writeStart</a> (uint32_t blockNumber)</td></tr> | |||
@@ -170,7 +172,7 @@ Public Member Functions</h2></td></tr> | |||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> | |||
<div class="textblock"><p>Raw access to SD and SDHC card using default SPI library. </p> | |||
</div><h2 class="groupheader">Member Function Documentation</h2> | |||
<a class="anchor" id="a7c8131750a5b1087375aa31f59564fae"></a> | |||
<a class="anchor" id="a824cd60ef8ac2b06262597d6f30a4ea7"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -180,9 +182,25 @@ Public Member Functions</h2></td></tr> | |||
<tr> | |||
<td class="memname">bool SdSpiCard::begin </td> | |||
<td>(</td> | |||
<td class="paramtype"><a class="el" href="_sd_spi_driver_8h.html#abf391604c1ecfed19cdcb6c8bd626972">SdSpiDriver</a> * </td> | |||
<td class="paramname"><em>spiDriver</em></td><td>)</td> | |||
<td class="paramtype">SdSpiDriver * </td> | |||
<td class="paramname"><em>spi</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
<td></td> | |||
<td class="paramtype">uint8_t </td> | |||
<td class="paramname"><em>csPin</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
<td></td> | |||
<td class="paramtype">SPISettings </td> | |||
<td class="paramname"><em>spiSettings</em> </td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
<td>)</td> | |||
<td></td><td></td> | |||
</tr> | |||
</table> | |||
</td> | |||
@@ -193,7 +211,9 @@ Public Member Functions</h2></td></tr> | |||
</div><div class="memdoc"> | |||
<p>Initialize the SD card. </p><dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">spiDriver</td><td>SPI driver for card. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">spi</td><td>SPI driver for card. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">csPin</td><td>card chip select pin. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">spiSettings</td><td>SPI speed, mode, and bit order. </td></tr> | |||
</table> | |||
</dd> | |||
</dl> | |||
@@ -201,7 +221,7 @@ Public Member Functions</h2></td></tr> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a9504c8f35b53d505e7dae33b0b2327d1"></a> | |||
<a class="anchor" id="a8506e1a2d7c4d8ec3f26e8b62ea81cd7"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -212,13 +232,13 @@ Public Member Functions</h2></td></tr> | |||
<td class="memname">bool Sd2Card::begin </td> | |||
<td>(</td> | |||
<td class="paramtype">uint8_t </td> | |||
<td class="paramname"><em>chipSelectPin</em> = <code>SS</code>, </td> | |||
<td class="paramname"><em>csPin</em> = <code>SS</code>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
<td></td> | |||
<td class="paramtype">SPISettings </td> | |||
<td class="paramname"><em>spiSettings</em> = <code>SD_SCK_MHZ(50)</code> </td> | |||
<td class="paramname"><em>settings</em> = <code>SD_SCK_MHZ(50)</code> </td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
@@ -234,8 +254,8 @@ Public Member Functions</h2></td></tr> | |||
</div><div class="memdoc"> | |||
<p>Initialize the SD card. </p><dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">chipSelectPin</td><td>SD chip select pin. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">spiSettings</td><td>SPI speed, mode, and bit order. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">csPin</td><td>SD chip select pin. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">settings</td><td>SPI speed, mode, and bit order. </td></tr> | |||
</table> | |||
</dd> | |||
</dl> | |||
@@ -387,7 +407,7 @@ Public Member Functions</h2></td></tr> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
<dl class="section return"><dt>Returns</dt><dd>code for the last error. See <a class="el" href="_sd_spi_card_8h.html" title="SdSpiCard class for V2 SD/SDHC cards. ">SdSpiCard.h</a> for a list of error codes. </dd></dl> | |||
<dl class="section return"><dt>Returns</dt><dd>code for the last error. See SdInfo.h for a list of error codes. </dd></dl> | |||
</div> | |||
</div> | |||
@@ -440,7 +460,7 @@ Public Member Functions</h2></td></tr> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a2973091eeab7b6ba528f6442bc5df36e"></a> | |||
<a class="anchor" id="a4393634a82c6683ee94d1fefe0be332a"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -451,7 +471,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="memname">bool SdSpiCard::readBlock </td> | |||
<td>(</td> | |||
<td class="paramtype">uint32_t </td> | |||
<td class="paramname"><em>block</em>, </td> | |||
<td class="paramname"><em>lba</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
@@ -474,7 +494,7 @@ Public Member Functions</h2></td></tr> | |||
<p>Read a 512 byte block from an SD card.</p> | |||
<dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">block</td><td>Logical block to be read. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">lba</td><td>Logical block to be read. </td></tr> | |||
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>Pointer to the location that will receive the data. </td></tr> | |||
</table> | |||
</dd> | |||
@@ -483,7 +503,7 @@ Public Member Functions</h2></td></tr> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a5a7e12a5a076cc690885378932fa289f"></a> | |||
<a class="anchor" id="ac630f77c3137923b47c1bd12a9bbfadf"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -494,7 +514,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="memname">bool SdSpiCard::readBlocks </td> | |||
<td>(</td> | |||
<td class="paramtype">uint32_t </td> | |||
<td class="paramname"><em>block</em>, </td> | |||
<td class="paramname"><em>lba</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
@@ -506,7 +526,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="paramkey"></td> | |||
<td></td> | |||
<td class="paramtype">size_t </td> | |||
<td class="paramname"><em>count</em> </td> | |||
<td class="paramname"><em>nb</em> </td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
@@ -523,8 +543,8 @@ Public Member Functions</h2></td></tr> | |||
<p>Read multiple 512 byte blocks from an SD card.</p> | |||
<dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">block</td><td>Logical block to be read. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>Number of blocks to be read. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">lba</td><td>Logical block to be read. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">nb</td><td>Number of blocks to be read. </td></tr> | |||
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>Pointer to the location that will receive the data. </td></tr> | |||
</table> | |||
</dd> | |||
@@ -796,6 +816,30 @@ Public Member Functions</h2></td></tr> | |||
</div><div class="memdoc"> | |||
<p>Set CS high and deactivate the card. </p> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a1b6d5f412c4ad75c2f575ca75c56c095"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
<tr> | |||
<td class="mlabels-left"> | |||
<table class="memname"> | |||
<tr> | |||
<td class="memname">bool SdSpiCard::syncBlocks </td> | |||
<td>(</td> | |||
<td class="paramname"></td><td>)</td> | |||
<td></td> | |||
</tr> | |||
</table> | |||
</td> | |||
<td class="mlabels-right"> | |||
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td> | |||
</tr> | |||
</table> | |||
</div><div class="memdoc"> | |||
<dl class="section return"><dt>Returns</dt><dd>success if sync successful. Not for user apps. </dd></dl> | |||
</div> | |||
</div> | |||
<a class="anchor" id="a061d92bf154a1863a6321385b7505f6e"></a> | |||
@@ -822,7 +866,7 @@ Public Member Functions</h2></td></tr> | |||
</div> | |||
</div> | |||
<a class="anchor" id="acdf8c7fe62ab091971cd546c00714cee"></a> | |||
<a class="anchor" id="a03a0bdb0f37a88076f24a2133cf5b4ed"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -833,7 +877,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="memname">bool SdSpiCard::writeBlock </td> | |||
<td>(</td> | |||
<td class="paramtype">uint32_t </td> | |||
<td class="paramname"><em>blockNumber</em>, </td> | |||
<td class="paramname"><em>lba</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
@@ -856,7 +900,7 @@ Public Member Functions</h2></td></tr> | |||
<p>Writes a 512 byte block to an SD card.</p> | |||
<dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">blockNumber</td><td>Logical block to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">lba</td><td>Logical block to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Pointer to the location of the data to be written. </td></tr> | |||
</table> | |||
</dd> | |||
@@ -865,7 +909,7 @@ Public Member Functions</h2></td></tr> | |||
</div> | |||
</div> | |||
<a class="anchor" id="aa5ca6901525dce4b1bc1f94a95441d88"></a> | |||
<a class="anchor" id="a181d96fe44891b7caabcd47dd29ac913"></a> | |||
<div class="memitem"> | |||
<div class="memproto"> | |||
<table class="mlabels"> | |||
@@ -876,7 +920,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="memname">bool SdSpiCard::writeBlocks </td> | |||
<td>(</td> | |||
<td class="paramtype">uint32_t </td> | |||
<td class="paramname"><em>block</em>, </td> | |||
<td class="paramname"><em>lba</em>, </td> | |||
</tr> | |||
<tr> | |||
<td class="paramkey"></td> | |||
@@ -888,7 +932,7 @@ Public Member Functions</h2></td></tr> | |||
<td class="paramkey"></td> | |||
<td></td> | |||
<td class="paramtype">size_t </td> | |||
<td class="paramname"><em>count</em> </td> | |||
<td class="paramname"><em>nb</em> </td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
@@ -905,8 +949,8 @@ Public Member Functions</h2></td></tr> | |||
<p>Write multiple 512 byte blocks to an SD card.</p> | |||
<dl class="params"><dt>Parameters</dt><dd> | |||
<table class="params"> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">block</td><td>Logical block to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>Number of blocks to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">lba</td><td>Logical block to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">nb</td><td>Number of blocks to be written. </td></tr> | |||
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Pointer to the location of the data to be written. </td></tr> | |||
</table> | |||
</dd> | |||
@@ -1054,7 +1098,7 @@ Public Member Functions</h2></td></tr> | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | |||
</table></div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |
@@ -3279,7 +3279,7 @@ Modify and access timestamps may be overwritten if a date time callback function | |||
</div><!-- contents --> | |||
<!-- start footer part --> | |||
<hr class="footer"/><address class="footer"><small> | |||
Generated on Fri Aug 19 2016 08:28:00 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
Generated on Mon Sep 5 2016 10:18:52 for SdFat by  <a href="http://www.doxygen.org/index.html"> | |||
<img class="footer" src="doxygen.png" alt="doxygen"/> | |||
</a> 1.8.10 | |||
</small></address> |