引入库
#include "FS.h"
#include "SD.h"
#include "SPI.h"
cpp建立SD卡操作类
class SdCard
{
private:
char buf[128];
public:
void init();
void listDir(const char *dirname, uint8_t levels);
void createDir(const char *path);
void removeDir(const char *path);
void readFile(const char *path);
String readFileLine(const char *path, int num);
void writeFile(const char *path, const char *message);
void appendFile(const char *path, const char *message);
void renameFile(const char *path1, const char *path2);
void deleteFile(const char *path);
void readBinFromSd(const char *path, uint8_t *buf);
void writeBinToSd(const char *path, uint8_t *buf);
void appendBinToSd(const char *path, uint8_t *buf, size_t size);
void fileIO(const char *path);
};
实现类方法
注意:初始化中 sd_spi->begin(CLK, MISO, MOSI, CS);不同硬件设计导致不同的引脚初始化
void SdCard::init()
{
SPIClass *sd_spi = new SPIClass(HSPI);
sd_spi->begin(CLK, MISO, MOSI, CS);
if (!SD.begin(CS, *sd_spi))
{
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if (cardType == CARD_NONE)
{
Serial.println("No SD card attached");
return;
}
Serial.print("SD Card Type: ");
if (cardType == CARD_MMC)
{
Serial.println("MMC");
}
else if (cardType == CARD_SD)
{
Serial.println("SDSC");
}
else if (cardType == CARD_SDHC)
{
Serial.println("SDHC");
}
else
{
Serial.println("UNKNOWN"