mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-02 07:00:38 +08:00
80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
// An example of the SoftSpiDriver template class.
|
|
// This example is for an old Adafruit Data Logging Shield on a Mega.
|
|
// Software SPI is required on Mega since this shield connects to pins 10-13.
|
|
// This example will also run on an Uno and other boards using software SPI.
|
|
//
|
|
#include "SdFat.h"
|
|
|
|
using namespace sdfat;
|
|
|
|
#if SPI_DRIVER_SELECT == 2 // Must be set in SdFat/SdFatConfig.h
|
|
|
|
// SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h,
|
|
// 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.
|
|
#define SD_FAT_TYPE 0
|
|
//
|
|
// Chip select may be constant or RAM variable.
|
|
const uint8_t SD_CS_PIN = 10;
|
|
//
|
|
// Pin numbers in templates must be constants.
|
|
const uint8_t SOFT_MISO_PIN = 12;
|
|
const uint8_t SOFT_MOSI_PIN = 11;
|
|
const uint8_t SOFT_SCK_PIN = 13;
|
|
|
|
// SdFat software SPI template
|
|
SoftSpiDriver<SOFT_MISO_PIN, SOFT_MOSI_PIN, SOFT_SCK_PIN> softSpi;
|
|
// Speed argument is ignored for software SPI.
|
|
#define SD_CONFIG SdSpiConfig(SD_CS_PIN, DEDICATED_SPI, SD_SCK_MHZ(0), &softSpi)
|
|
|
|
#if SD_FAT_TYPE == 0
|
|
SdFat sd;
|
|
File file;
|
|
#elif SD_FAT_TYPE == 1
|
|
SdFat32 sd;
|
|
File32 file;
|
|
#elif SD_FAT_TYPE == 2
|
|
SdExFat sd;
|
|
ExFile file;
|
|
#elif SD_FAT_TYPE == 3
|
|
SdFs sd;
|
|
FsFile file;
|
|
#else // SD_FAT_TYPE
|
|
#error Invalid SD_FAT_TYPE
|
|
#endif // SD_FAT_TYPE
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
// Wait for USB Serial
|
|
while (!Serial) {
|
|
SysCall::yield();
|
|
}
|
|
Serial.println("Type any character to start");
|
|
while (!Serial.available()) {
|
|
SysCall::yield();
|
|
}
|
|
|
|
if (!sd.begin(SD_CONFIG)) {
|
|
sd.initErrorHalt();
|
|
}
|
|
|
|
if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) {
|
|
sd.errorHalt(F("open failed"));
|
|
}
|
|
file.println(F("This line was printed using software SPI."));
|
|
|
|
file.rewind();
|
|
|
|
while (file.available()) {
|
|
Serial.write(file.read());
|
|
}
|
|
|
|
file.close();
|
|
|
|
Serial.println(F("Done."));
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
void loop() {}
|
|
#else // SPI_DRIVER_SELECT
|
|
#error SPI_DRIVER_SELECT must be two in SdFat/SdFatConfig.h
|
|
#endif //SPI_DRIVER_SELECT
|