SdFat
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Macros | Variables
SdFatConfig.h File Reference

configuration definitions More...

#include <stdint.h>
Include dependency graph for SdFatConfig.h:
This graph shows which files directly or indirectly include this file:

Macros

#define ARDUINO_FILE_USES_STREAM   1
 
#define DESTRUCTOR_CLOSES_FILE   0
 
#define ENABLE_SPI_TRANSACTION   0
 
#define ENABLE_SPI_YIELD   0
 
#define ENDL_CALLS_FLUSH   0
 
#define FAT12_SUPPORT   0
 
#define SD_SPI_CONFIGURATION   0
 
#define USE_LONG_FILE_NAMES   1
 
#define USE_MULTI_BLOCK_IO   1
 
#define USE_SD_CRC   0
 
#define USE_SEPARATE_FAT_CACHE   0
 

Variables

uint8_t const SOFT_SPI_MISO_PIN = 12
 
uint8_t const SOFT_SPI_MOSI_PIN = 11
 
uint8_t const SOFT_SPI_SCK_PIN = 13
 
const uint8_t SPI_SCK_INIT_DIVISOR = 128
 

Detailed Description

configuration definitions

Macro Definition Documentation

#define ARDUINO_FILE_USES_STREAM   1

Set ARDUINO_FILE_USES_STREAM nonzero to use Stream as the base class for the Arduino File class. If ARDUINO_FILE_USES_STREAM is zero, Print will be used as the base class for the Arduino File class.

You can save some flash if you do not use Stream input functions such as find(), findUntil(), readBytesUntil(), readString(), readStringUntil(), parseInt(), and parseFloat().

#define DESTRUCTOR_CLOSES_FILE   0

Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor.

Causes use of lots of heap in ARM.

#define ENABLE_SPI_TRANSACTION   0

Set ENABLE_SPI_TRANSACTION nonzero to enable the SPI transaction feature of the standard Arduino SPI library. You must include SPI.h in your programs when ENABLE_SPI_TRANSACTION is nonzero.

#define ENABLE_SPI_YIELD   0

Set ENABLE_SPI_YIELD nonzero to enable release of the SPI bus during SD card busy waits.

This will allow interrupt routines to access the SPI bus if ENABLE_SPI_TRANSACTION is nonzero.

Setting ENABLE_SPI_YIELD will introduce some extra overhead and will slightly slow transfer rates. A few older SD cards may fail when ENABLE_SPI_YIELD is nonzero.

#define ENDL_CALLS_FLUSH   0

Call flush for endl if ENDL_CALLS_FLUSH is nonzero

The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

SdFat has a single 512 byte buffer for SD I/O so it must write the current data block to the SD, read the directory block from the SD, update the directory entry, write the directory block to the SD and read the data block back into the buffer.

The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

#define FAT12_SUPPORT   0

Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. FAT12 has not been well tested and requires additional flash.

#define SD_SPI_CONFIGURATION   0

The symbol SD_SPI_CONFIGURATION defines SPI access to the SD card.

IF SD_SPI_CONFIGUTATION is define to be zero, only the SdFat class is define and SdFat uses a fast custom SPI implementation.

If SD_SPI_CONFIGURATION is define to be one, only the SdFat class is define and SdFat uses the standard Arduino SD.h library.

If SD_SPI_CONFIGURATION is define to be two, only the SdFat class is define and SdFat uses software SPI on the pins defined below.

If SD_SPI_CONFIGURATION is define to be three, the three classes, SdFat, SdFatLibSpi, and SdFatSoftSpi are defined. SdFat uses the fast custom SPI implementation. SdFatLibSpi uses the standard Arduino SPI library. SdFatSoftSpi is a template class that uses Software SPI. The template parameters define the software SPI pins. See the ThreeCard example for simultaneous use of all three classes.

#define USE_LONG_FILE_NAMES   1

Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). Long File Name are limited to a maximum length of 255 characters.

This implementation allows 7-bit characters in the range 0X20 to 0X7E except the following characters are not allowed:

< (less than)

(greater than)

: (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

  • (asterisk)
#define USE_MULTI_BLOCK_IO   1

Set USE_MULTI_BLOCK_IO nonzero to use multi-block SD read/write.

Don't use mult-block read/write on small AVR boards.

#define USE_SD_CRC   0

To enable SD card CRC checking set USE_SD_CRC nonzero.

Set USE_SD_CRC to 1 to use a smaller slower CRC-CCITT function.

Set USE_SD_CRC to 2 to used a larger faster table driven CRC-CCITT function.

#define USE_SEPARATE_FAT_CACHE   0

Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache for FAT table entries. This improves performance for large writes that are not a multiple of 512 bytes.

Variable Documentation

uint8_t const SOFT_SPI_MISO_PIN = 12

Software SPI Master In Slave Out pin

uint8_t const SOFT_SPI_MOSI_PIN = 11

If SD_SPI_CONFIGURATION is defined to be two, these definitions will define the pins used for software SPI.

The default definition allows Uno shields to be used on other boards.Software SPI Master Out Slave In pin

uint8_t const SOFT_SPI_SCK_PIN = 13

Software SPI Clock pin

const uint8_t SPI_SCK_INIT_DIVISOR = 128

SPI SCK divisor for SD initialization commands. or greater