Soldered SD Card Arduino Library 1.0.0
Easily read and write files to and form the SD card breakout! A fork of the original SDFat library by Bill Greiman.
Loading...
Searching...
No Matches
SdSpiDriver.h
Go to the documentation of this file.
1
29#ifndef SdSpiDriver_h
30#define SdSpiDriver_h
31#include "../common/SysCall.h"
37void sdCsInit(SdCsPin_t pin);
44void sdCsWrite(SdCsPin_t pin, bool level);
45//------------------------------------------------------------------------------
47const uint8_t SHARED_SPI = 0;
48#if ENABLE_DEDICATED_SPI
50const uint8_t DEDICATED_SPI = 1;
55inline bool spiOptionShared(uint8_t opt)
56{
57 return !(opt & DEDICATED_SPI);
58}
59#else // ENABLE_DEDICATED_SPI
64inline bool spiOptionShared(uint8_t opt)
65{
66 (void)opt;
67 return true;
68}
69#endif // ENABLE_DEDICATED_SPI
70//------------------------------------------------------------------------------
72#define SD_SCK_HZ(maxSpeed) (maxSpeed)
74#define SD_SCK_MHZ(maxMhz) (1000000UL * (maxMhz))
75// SPI divisor constants - obsolete.
77#define SPI_FULL_SPEED SD_SCK_MHZ(50)
79#define SPI_DIV3_SPEED SD_SCK_MHZ(16)
81#define SPI_HALF_SPEED SD_SCK_MHZ(4)
83#define SPI_DIV6_SPEED SD_SCK_MHZ(8)
85#define SPI_QUARTER_SPEED SD_SCK_MHZ(2)
87#define SPI_EIGHTH_SPEED SD_SCK_MHZ(1)
89#define SPI_SIXTEENTH_SPEED SD_SCK_HZ(500000)
90//------------------------------------------------------------------------------
91#if SPI_DRIVER_SELECT < 2
92#include "SPI.h"
94typedef SPIClass SpiPort_t;
95#elif SPI_DRIVER_SELECT == 2
96class SdSpiSoftDriver;
99#elif SPI_DRIVER_SELECT == 3
100class SdSpiBaseClass;
103#else // SPI_DRIVER_SELECT
104typedef void *SpiPort_t;
105#endif // SPI_DRIVER_SELECT
106//------------------------------------------------------------------------------
112{
113 public:
121 SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)
122 : csPin(cs), options(opt), maxSck(maxSpeed), spiPort(port)
123 {
124 }
125
132 SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed) : csPin(cs), options(opt), maxSck(maxSpeed)
133 {
134 }
140 SdSpiConfig(SdCsPin_t cs, uint8_t opt) : csPin(cs), options(opt)
141 {
142 }
147 explicit SdSpiConfig(SdCsPin_t cs) : csPin(cs)
148 {
149 }
150
154 const uint8_t options = 0;
156 const uint32_t maxSck = SD_SCK_MHZ(50);
158 SpiPort_t *spiPort = nullptr;
159};
160#if SPI_DRIVER_SELECT < 2
161#include "SdSpiArduinoDriver.h"
162#elif SPI_DRIVER_SELECT == 2
163#include "SdSpiSoftDriver.h"
164#elif SPI_DRIVER_SELECT == 3
165#include "SdSpiBaseClass.h"
167#else // SPI_DRIVER_SELECT
168#error Invalid SPI_DRIVER_SELECT
169#endif // SPI_DRIVER_SELECT
170#endif // SdSpiDriver_h
uint8_t SdCsPin_t
Definition SdFatConfig.h:139
SpiDriver classes for Arduino compatible systems.
Base class for external SPI driver.
bool spiOptionShared(uint8_t opt)
Definition SdSpiDriver.h:55
SdSpiBaseClass SdSpiDriver
Definition SdSpiDriver.h:166
void sdCsWrite(SdCsPin_t pin, bool level)
Definition SdSpiChipSelect.cpp:34
void sdCsInit(SdCsPin_t pin)
Definition SdSpiChipSelect.cpp:29
const uint8_t DEDICATED_SPI
Definition SdSpiDriver.h:50
const uint8_t SHARED_SPI
Definition SdSpiDriver.h:47
SPIClass SpiPort_t
Definition SdSpiDriver.h:94
Class for software SPI.
Base class for external SPI drivers.
Definition SdSpiBaseClass.h:36
SPI card configuration.
Definition SdSpiDriver.h:112
SdSpiConfig(SdCsPin_t cs)
Definition SdSpiDriver.h:147
const SdCsPin_t csPin
Definition SdSpiDriver.h:152
SdSpiConfig(SdCsPin_t cs, uint8_t opt)
Definition SdSpiDriver.h:140
SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed, SpiPort_t *port)
Definition SdSpiDriver.h:121
const uint8_t options
Definition SdSpiDriver.h:154
const uint32_t maxSck
Definition SdSpiDriver.h:156
SdSpiConfig(SdCsPin_t cs, uint8_t opt, uint32_t maxSpeed)
Definition SdSpiDriver.h:132
SpiPort_t * spiPort
Definition SdSpiDriver.h:158
Base class for external soft SPI.
Definition SdSpiSoftDriver.h:37
static uint8_t bool level
Definition DigitalPin.h:110