| @@ -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> | |||