소스 검색

Teensy 3.5/3.6 SDIO

main
Bill Greiman 8 년 전
부모
커밋
0a1f307ca7
100개의 변경된 파일1558개의 추가작업 그리고 812개의 파일을 삭제
  1. +16
    -1
      README.md
  2. +1
    -1
      SdFat/examples/QuickStart/QuickStart.ino
  3. +34
    -9
      SdFat/examples/SdFormatter/SdFormatter.ino
  4. +15
    -0
      SdFat/examples/SdInfo/SdInfo.ino
  5. +110
    -0
      SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino
  6. +13
    -1
      SdFat/examples/bench/bench.ino
  7. +5
    -167
      SdFat/src/BlockDriver.h
  8. +20
    -1
      SdFat/src/FatLib/BaseBlockDriver.h
  9. +141
    -63
      SdFat/src/SdCard/SdInfo.h
  10. +12
    -25
      SdFat/src/SdCard/SdSpiCard.cpp
  11. +98
    -20
      SdFat/src/SdCard/SdSpiCard.h
  12. +6
    -6
      SdFat/src/SdCard/SdSpiCardEX.cpp
  13. +135
    -0
      SdFat/src/SdCard/SdioCard.h
  14. +557
    -0
      SdFat/src/SdCard/SdioTeensy.cpp
  15. +55
    -46
      SdFat/src/SdFat.h
  16. +7
    -0
      SdFat/src/SdFatConfig.h
  17. +0
    -0
      SdFat/src/SpiDriver/DigitalPin.h
  18. +1
    -2
      SdFat/src/SpiDriver/SdSpiBaseDriver.h
  19. +2
    -2
      SdFat/src/SpiDriver/SdSpiDriver.h
  20. +0
    -0
      SdFat/src/SpiDriver/SdSpiESP8266.cpp
  21. +0
    -0
      SdFat/src/SpiDriver/SdSpiSAM3X.cpp
  22. +0
    -0
      SdFat/src/SpiDriver/SdSpiSTM32F1.cpp
  23. +0
    -0
      SdFat/src/SpiDriver/SdSpiTeensy3.cpp
  24. +0
    -0
      SdFat/src/SpiDriver/SoftSPI.h
  25. +0
    -0
      SdFat/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h
  26. +0
    -0
      SdFat/src/SpiDriver/boards/BobuinoGpioPinMap.h
  27. +0
    -0
      SdFat/src/SpiDriver/boards/GpioPinMap.h
  28. +0
    -0
      SdFat/src/SpiDriver/boards/LeonardoGpioPinMap.h
  29. +0
    -0
      SdFat/src/SpiDriver/boards/MegaGpioPinMap.h
  30. +0
    -0
      SdFat/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h
  31. +0
    -0
      SdFat/src/SpiDriver/boards/Standard1284GpioPinMap.h
  32. +0
    -0
      SdFat/src/SpiDriver/boards/Teensy2GpioPinMap.h
  33. +0
    -0
      SdFat/src/SpiDriver/boards/Teensy2ppGpioPinMap.h
  34. +0
    -0
      SdFat/src/SpiDriver/boards/UnoGpioPinMap.h
  35. +8
    -0
      changes.txt
  36. +9
    -10
      html/_arduino_files_8h.html
  37. BIN
      html/_arduino_files_8h__incl.png
  38. +14
    -15
      html/_arduino_stream_8h.html
  39. BIN
      html/_arduino_stream_8h__incl.png
  40. +9
    -21
      html/_block_driver_8h.html
  41. BIN
      html/_block_driver_8h__incl.png
  42. +8
    -9
      html/_fat_file_8h.html
  43. BIN
      html/_fat_file_8h__incl.png
  44. +16
    -17
      html/_fat_file_system_8h.html
  45. BIN
      html/_fat_file_system_8h__incl.png
  46. +1
    -1
      html/_fat_lib_config_8h.html
  47. +1
    -1
      html/_fat_structs_8h.html
  48. +7
    -8
      html/_fat_volume_8h.html
  49. BIN
      html/_fat_volume_8h__incl.png
  50. +1
    -1
      html/_free_stack_8h.html
  51. +1
    -1
      html/_minimum_serial_8h.html
  52. +11
    -9
      html/_sd_fat_8h.html
  53. BIN
      html/_sd_fat_8h__incl.png
  54. +29
    -18
      html/_sd_fat_config_8h.html
  55. BIN
      html/_sd_fat_config_8h__dep__incl.png
  56. +12
    -10
      html/_sd_spi_card_8h.html
  57. BIN
      html/_sd_spi_card_8h__dep__incl.png
  58. BIN
      html/_sd_spi_card_8h__incl.png
  59. +0
    -188
      html/_sd_spi_driver_8h.html
  60. BIN
      html/_sd_spi_driver_8h__dep__incl.png
  61. BIN
      html/_sd_spi_driver_8h__incl.png
  62. +9
    -10
      html/_stdio_stream_8h.html
  63. BIN
      html/_stdio_stream_8h__incl.png
  64. +17
    -17
      html/_sys_call_8h.html
  65. BIN
      html/_sys_call_8h__dep__incl.png
  66. +16
    -19
      html/annotated.html
  67. +13
    -14
      html/bufstream_8h.html
  68. BIN
      html/bufstream_8h__incl.png
  69. +1
    -1
      html/class_arduino_in_stream-members.html
  70. +1
    -1
      html/class_arduino_in_stream.html
  71. +1
    -1
      html/class_arduino_out_stream-members.html
  72. +1
    -1
      html/class_arduino_out_stream.html
  73. +1
    -1
      html/class_base_block_driver-members.html
  74. +7
    -7
      html/class_base_block_driver.html
  75. BIN
      html/class_base_block_driver__inherit__graph.png
  76. +1
    -1
      html/class_fat_cache-members.html
  77. +1
    -1
      html/class_fat_cache.html
  78. +1
    -1
      html/class_fat_file-members.html
  79. +1
    -1
      html/class_fat_file.html
  80. +1
    -1
      html/class_fat_file_system-members.html
  81. +13
    -11
      html/class_fat_file_system.html
  82. BIN
      html/class_fat_file_system__inherit__graph.png
  83. +1
    -1
      html/class_fat_stream_base-members.html
  84. +1
    -1
      html/class_fat_stream_base.html
  85. +1
    -1
      html/class_fat_volume-members.html
  86. +11
    -9
      html/class_fat_volume.html
  87. BIN
      html/class_fat_volume__inherit__graph.png
  88. +1
    -1
      html/class_file-members.html
  89. +1
    -1
      html/class_file.html
  90. +1
    -1
      html/class_minimum_serial-members.html
  91. +1
    -1
      html/class_minimum_serial.html
  92. +1
    -1
      html/class_print_file-members.html
  93. +1
    -1
      html/class_print_file.html
  94. +13
    -12
      html/class_sd2_card-members.html
  95. +83
    -39
      html/class_sd2_card.html
  96. +1
    -1
      html/class_sd_base_file-members.html
  97. +1
    -1
      html/class_sd_base_file.html
  98. BIN
      html/class_sd_block_driver__coll__graph.png
  99. BIN
      html/class_sd_block_driver__inherit__graph.png
  100. +0
    -0
      html/class_sd_block_driver_e_x-members.html

+ 16
- 1
README.md 파일 보기

@@ -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
- 1
SdFat/examples/QuickStart/QuickStart.ino 파일 보기

@@ -1,4 +1,4 @@
// Quick hardware test.
// Quick hardware test for SPI card access.
//
#include <SPI.h>
#include "SdFat.h"

+ 34
- 9
SdFat/examples/SdFormatter/SdFormatter.ino 파일 보기

@@ -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");

+ 15
- 0
SdFat/examples/SdInfo/SdInfo.ino 파일 보기

@@ -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();

+ 110
- 0
SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino 파일 보기

@@ -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() {
}

+ 13
- 1
SdFat/examples/bench/bench.ino 파일 보기

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

+ 5
- 167
SdFat/src/BlockDriver.h 파일 보기

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

+ 20
- 1
SdFat/src/FatLib/BaseBlockDriver.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

SdFat/src/SdSpiCard/SdInfo.h → SdFat/src/SdCard/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
*
@@ -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

SdFat/src/SdSpiCard/SdSpiCard.cpp → SdFat/src/SdCard/SdSpiCard.cpp 파일 보기

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

SdFat/src/SdSpiCard/SdSpiCard.h → SdFat/src/SdCard/SdSpiCard.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
*
@@ -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

SdFat/src/BlockDriver.cpp → SdFat/src/SdCard/SdSpiCardEX.cpp 파일 보기

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

+ 135
- 0
SdFat/src/SdCard/SdioCard.h 파일 보기

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

+ 557
- 0
SdFat/src/SdCard/SdioTeensy.cpp 파일 보기

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

+ 55
- 46
SdFat/src/SdFat.h 파일 보기

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

+ 7
- 0
SdFat/src/SdFatConfig.h 파일 보기

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

SdFat/src/AltSpiDrivers/DigitalPin.h → SdFat/src/SpiDriver/DigitalPin.h 파일 보기


SdFat/src/SdSpiCard/SdSpiBaseDriver.h → SdFat/src/SpiDriver/SdSpiBaseDriver.h 파일 보기

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

SdFat/src/SdSpiDriver.h → SdFat/src/SpiDriver/SdSpiDriver.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

SdFat/src/AltSpiDrivers/SdSpiESP8266.cpp → SdFat/src/SpiDriver/SdSpiESP8266.cpp 파일 보기


SdFat/src/AltSpiDrivers/SdSpiSAM3X.cpp → SdFat/src/SpiDriver/SdSpiSAM3X.cpp 파일 보기


SdFat/src/AltSpiDrivers/SdSpiSTM32F1.cpp → SdFat/src/SpiDriver/SdSpiSTM32F1.cpp 파일 보기


SdFat/src/AltSpiDrivers/SdSpiTeensy3.cpp → SdFat/src/SpiDriver/SdSpiTeensy3.cpp 파일 보기


SdFat/src/AltSpiDrivers/SoftSPI.h → SdFat/src/SpiDriver/SoftSPI.h 파일 보기


SdFat/src/AltSpiDrivers/boards/AvrDevelopersGpioPinMap.h → SdFat/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/BobuinoGpioPinMap.h → SdFat/src/SpiDriver/boards/BobuinoGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/GpioPinMap.h → SdFat/src/SpiDriver/boards/GpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/LeonardoGpioPinMap.h → SdFat/src/SpiDriver/boards/LeonardoGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/MegaGpioPinMap.h → SdFat/src/SpiDriver/boards/MegaGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/SleepingBeautyGpioPinMap.h → SdFat/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/Standard1284GpioPinMap.h → SdFat/src/SpiDriver/boards/Standard1284GpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/Teensy2GpioPinMap.h → SdFat/src/SpiDriver/boards/Teensy2GpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/Teensy2ppGpioPinMap.h → SdFat/src/SpiDriver/boards/Teensy2ppGpioPinMap.h 파일 보기


SdFat/src/AltSpiDrivers/boards/UnoGpioPinMap.h → SdFat/src/SpiDriver/boards/UnoGpioPinMap.h 파일 보기


+ 8
- 0
changes.txt 파일 보기

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

+ 9
- 10
html/_arduino_files_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_arduino_files_8h__incl.png 파일 보기

Before After
Width: 686  |  Height: 575  |  Size: 51KB Width: 1007  |  Height: 455  |  Size: 64KB

+ 14
- 15
html/_arduino_stream_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_arduino_stream_8h__incl.png 파일 보기

Before After
Width: 624  |  Height: 873  |  Size: 59KB Width: 1007  |  Height: 753  |  Size: 73KB

+ 9
- 21
html/_block_driver_8h.html 파일 보기

@@ -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> &#124;
<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 &quot;<a class="el" href="_sd_spi_card_8h.html">SdSpiCard.h</a>&quot;</code><br />
<code>#include &quot;FatLib/BaseBlockDriver.h&quot;</code><br />
<div class="textblock"><code>#include &quot;FatLib/BaseBlockDriver.h&quot;</code><br />
<code>#include &quot;<a class="el" href="_sd_spi_card_8h.html">SdCard/SdSpiCard.h</a>&quot;</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 &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</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">&#160;</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">&#160;</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>&#160;</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">&#160;</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>&#160;</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">&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_block_driver_8h__incl.png 파일 보기

Before After
Width: 506  |  Height: 351  |  Size: 12KB Width: 897  |  Height: 231  |  Size: 21KB

+ 8
- 9
html/_fat_file_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_fat_file_8h__incl.png 파일 보기

Before After
Width: 595  |  Height: 500  |  Size: 39KB Width: 1024  |  Height: 380  |  Size: 56KB

+ 16
- 17
html/_fat_file_system_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_fat_file_system_8h__incl.png 파일 보기

Before After
Width: 629  |  Height: 948  |  Size: 79KB Width: 969  |  Height: 828  |  Size: 94KB

+ 1
- 1
html/_fat_lib_config_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/_fat_structs_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 7
- 8
html/_fat_volume_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_fat_volume_8h__incl.png 파일 보기

Before After
Width: 529  |  Height: 425  |  Size: 28KB Width: 1101  |  Height: 305  |  Size: 40KB

+ 1
- 1
html/_free_stack_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/_minimum_serial_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 11
- 9
html/_sd_fat_8h.html 파일 보기

@@ -96,17 +96,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_sys_call_8h.html">SysCall.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="_block_driver_8h.html">BlockDriver.h</a>&quot;</code><br />
<code>#include &quot;FatLib.h&quot;</code><br />
<code>#include &quot;FatLib/FatLib.h&quot;</code><br />
<code>#include &quot;SdCard/SdioCard.h&quot;</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 &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_fat_soft_spi.html">SdFatSoftSpi&lt; MisoPin, MosiPin, SckPin &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</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">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210">SD_FAT_VERSION</a>&#160;&#160;&#160;20160801</td></tr>
<tr class="memitem:aca25ecce379f446043bdee2c55304210"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210">SD_FAT_VERSION</a>&#160;&#160;&#160;20160905</td></tr>
<tr class="separator:aca25ecce379f446043bdee2c55304210"><td class="memSeparator" colspan="2">&#160;</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&#160;&#160;&#160;20160801</td>
<td class="memname">#define SD_FAT_VERSION&#160;&#160;&#160;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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_sd_fat_8h__incl.png 파일 보기

Before After
Width: 506  |  Height: 425  |  Size: 16KB Width: 865  |  Height: 305  |  Size: 27KB

+ 29
- 18
html/_sd_fat_config_8h.html 파일 보기

@@ -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">&#160;</td></tr>
<tr class="memitem:aad4f0ecbc65cdc3a7be544225b44f86a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a">ENABLE_EXTENDED_TRANSFER_CLASS</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:aad4f0ecbc65cdc3a7be544225b44f86a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d106f3a0ba8577abdcc9ce3961ef90b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b">ENABLE_SDIO_CLASS</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a1d106f3a0ba8577abdcc9ce3961ef90b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc3d779d87b785bb7236b9b3acf7e619"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619">ENABLE_SOFTWARE_SPI_CLASS</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:acc3d779d87b785bb7236b9b3acf7e619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a270eefdaec4778f2a491658f34f61b17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17">ENDL_CALLS_FLUSH</a>&#160;&#160;&#160;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&#160;&#160;&#160;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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_sd_fat_config_8h__dep__incl.png 파일 보기

Before After
Width: 765  |  Height: 1035  |  Size: 70KB Width: 796  |  Height: 856  |  Size: 61KB

+ 12
- 10
html/_sd_spi_card_8h.html 파일 보기

@@ -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 &lt;stddef.h&gt;</code><br />
<code>#include &quot;<a class="el" href="_sys_call_8h.html">SysCall.h</a>&quot;</code><br />
<code>#include &quot;SdInfo.h&quot;</code><br />
<code>#include &quot;<a class="el" href="_sd_spi_driver_8h.html">SdSpiDriver.h</a>&quot;</code><br />
<code>#include &quot;../FatLib/BaseBlockDriver.h&quot;</code><br />
<code>#include &quot;../SpiDriver/SdSpiDriver.h&quot;</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 &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</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">&#160;</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">&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_sd_spi_card_8h__dep__incl.png 파일 보기

Before After
Width: 872  |  Height: 856  |  Size: 55KB Width: 872  |  Height: 856  |  Size: 55KB

BIN
html/_sd_spi_card_8h__incl.png 파일 보기

Before After
Width: 506  |  Height: 276  |  Size: 10KB Width: 467  |  Height: 127  |  Size: 7.0KB

+ 0
- 188
html/_sd_spi_driver_8h.html 파일 보기

@@ -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&#160;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&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;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> &#124;
<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 &lt;Arduino.h&gt;</code><br />
<code>#include &quot;SPI.h&quot;</code><br />
<code>#include &quot;SdSpiCard/SdSpiBaseDriver.h&quot;</code><br />
<code>#include &quot;<a class="el" href="_sd_fat_config_8h.html">SdFatConfig.h</a>&quot;</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 &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</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">&#160;</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">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_sd_spi_soft_driver.html">SdSpiSoftDriver&lt; MisoPin, MosiPin, SckPin &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</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">&#160;</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>&#160;</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">&#160;</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>&#160;</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">&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

BIN
html/_sd_spi_driver_8h__dep__incl.png 파일 보기

Before After
Width: 872  |  Height: 945  |  Size: 56KB

BIN
html/_sd_spi_driver_8h__incl.png 파일 보기

Before After
Width: 296  |  Height: 201  |  Size: 5.1KB

+ 9
- 10
html/_stdio_stream_8h.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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_stdio_stream_8h__incl.png 파일 보기

Before After
Width: 587  |  Height: 575  |  Size: 43KB Width: 1149  |  Height: 455  |  Size: 62KB

+ 17
- 17
html/_sys_call_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/_sys_call_8h__dep__incl.png 파일 보기

Before After
Width: 872  |  Height: 945  |  Size: 58KB Width: 1124  |  Height: 945  |  Size: 59KB

+ 16
- 19
html/annotated.html 파일 보기

@@ -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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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;">&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:53 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 13
- 14
html/bufstream_8h.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/bufstream_8h__incl.png 파일 보기

Before After
Width: 529  |  Height: 799  |  Size: 50KB Width: 1069  |  Height: 679  |  Size: 66KB

+ 1
- 1
html/class_arduino_in_stream-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_arduino_in_stream.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_arduino_out_stream-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_arduino_out_stream.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_base_block_driver-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 7
- 7
html/class_base_block_driver.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/class_base_block_driver__inherit__graph.png 파일 보기

Before After
Width: 129  |  Height: 112  |  Size: 1.3KB Width: 128  |  Height: 112  |  Size: 1.2KB

+ 1
- 1
html/class_fat_cache-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_cache.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_file-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_file.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_file_system-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 13
- 11
html/class_fat_file_system.html 파일 보기

@@ -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\&lt; SdBlockDriver \&gt;" alt="" coords="301,64,511,91"/>
<area shape="rect" id="node7" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdBlockDriverEX \&gt;" 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\&lt; SdioCard \&gt;" alt="" coords="307,56,489,83"/>
<area shape="rect" id="node6" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdSpiCard \&gt;" alt="" coords="303,107,493,133"/>
<area shape="rect" id="node9" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdSpiCardEX \&gt;" 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&#160;</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&#160;</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">&#160;</td></tr>
<tr class="memitem:a06beed4cea5e38116b58254a57125442"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</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">&#160;</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> *&#160;</td>
<td class="paramtype"><a class="el" href="_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb">BlockDriver</a> *&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/class_fat_file_system__inherit__graph.png 파일 보기

Before After
Width: 751  |  Height: 221  |  Size: 12KB Width: 735  |  Height: 293  |  Size: 16KB

+ 1
- 1
html/class_fat_stream_base-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_stream_base.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_fat_volume-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 11
- 9
html/class_fat_volume.html 파일 보기

@@ -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\&lt; SdBlockDriver \&gt;" alt="" coords="301,64,511,91"/>
<area shape="rect" id="node7" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdBlockDriverEX \&gt;" 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\&lt; SdioCard \&gt;" alt="" coords="307,56,489,83"/>
<area shape="rect" id="node6" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdSpiCard \&gt;" alt="" coords="303,107,493,133"/>
<area shape="rect" id="node9" href="class_sd_file_system.html" title="SdFileSystem\&lt; SdSpiCardEX \&gt;" 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&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/class_fat_volume__inherit__graph.png 파일 보기

Before After
Width: 751  |  Height: 221  |  Size: 11KB Width: 735  |  Height: 293  |  Size: 16KB

+ 1
- 1
html/class_file-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_file.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_minimum_serial-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_minimum_serial.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_print_file-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_print_file.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 13
- 12
html/class_sd2_card-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 83
- 39
html/class_sd2_card.html 파일 보기

@@ -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&#160;</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">&#160;</td></tr>
<tr class="memitem:a9504c8f35b53d505e7dae33b0b2327d1"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a824cd60ef8ac2b06262597d6f30a4ea7"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a8506e1a2d7c4d8ec3f26e8b62ea81cd7"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:afca8bd6b7e465bf9c475ba375c4deec8"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</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">&#160;</td></tr>
<tr class="memitem:a1caa13d19df6596b2c0dd62365c75362"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:aa3cb9139dbc1e6596c6717da2b486328"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a2973091eeab7b6ba528f6442bc5df36e"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a5a7e12a5a076cc690885378932fa289f"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a4393634a82c6683ee94d1fefe0be332a"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:ac630f77c3137923b47c1bd12a9bbfadf"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:aa073dc42828164883db1b9faeff909ea"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a9fbea9525e70f6e3602fe5153a5a1290"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a1033a4a68d38f52dddf6a1764fcca3e1"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</td></tr>
<tr class="memitem:a1b6d5f412c4ad75c2f575ca75c56c095"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a061d92bf154a1863a6321385b7505f6e"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
<tr class="memitem:acdf8c7fe62ab091971cd546c00714cee"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:aa5ca6901525dce4b1bc1f94a95441d88"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a03a0bdb0f37a88076f24a2133cf5b4ed"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a181d96fe44891b7caabcd47dd29ac913"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a9495c0b148eb380358bb4a9721c0dffa"><td class="memItemLeft" align="right" valign="top">bool&#160;</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">&#160;</td></tr>
<tr class="memitem:a56d4750a5d2f693943eec985cb61ffe2"><td class="memItemLeft" align="right" valign="top">bool&#160;</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> *&#160;</td>
<td class="paramname"><em>spiDriver</em></td><td>)</td>
<td class="paramtype">SdSpiDriver *&#160;</td>
<td class="paramname"><em>spi</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>csPin</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">SPISettings&#160;</td>
<td class="paramname"><em>spiSettings</em>&#160;</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&#160;</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&#160;</td>
<td class="paramname"><em>spiSettings</em> = <code>SD_SCK_MHZ(50)</code>&#160;</td>
<td class="paramname"><em>settings</em> = <code>SD_SCK_MHZ(50)</code>&#160;</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&#160;</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&#160;</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&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
<td class="paramname"><em>nb</em>&#160;</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&#160;</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&#160;</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&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
<td class="paramname"><em>nb</em>&#160;</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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_sd_base_file-members.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

+ 1
- 1
html/class_sd_base_file.html 파일 보기

@@ -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 &#160;<a href="http://www.doxygen.org/index.html">
Generated on Mon Sep 5 2016 10:18:52 for SdFat by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>

BIN
html/class_sd_block_driver__coll__graph.png 파일 보기

Before After
Width: 113  |  Height: 112  |  Size: 1.3KB

BIN
html/class_sd_block_driver__inherit__graph.png 파일 보기

Before After
Width: 113  |  Height: 112  |  Size: 1.3KB

+ 0
- 0
html/class_sd_block_driver_e_x-members.html 파일 보기


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.

Loading…
취소
저장