我正在使用Arduino IDE,我想调用位于
sd_diskio.cpp中的内部Arduino
SD.h
库函数
这是我的代码:
#include <sd_diskio.h>
#include <SPI.h>
#define SD_MMC_CLK 7
#define SD_MMC_CMD 9
#define SD_MMC_D0 8
#define SD_MMC_D3_CS 21
void setup() {
Serial.begin(9600);
uint8_t ssPin = SD_MMC_D3_CS;
SPI.begin(SD_MMC_CLK, SD_MMC_D0 ,SD_MMC_CMD, SD_MMC_D3_CS);
SPIClass spi = SPI;
uint32_t frequency = 4000000;
uint8_t pdrv = sdcard_init(ssPin, &spi, frequency);
if (!sdSelectCard(pdrv)) {
return 0;
}
if (!sdCommand(pdrv, SEND_CID, 0, NULL)) {
char cid[16];
bool success = sdReadBytes(pdrv, cid, 16);
sdDeselectCard(pdrv);
if (success) {
Serial.println(cid);
}
}
}
我得到的错误是:
错误:“sdcard_init”未在此范围内声明
更新:
最后一个错误不再显示(不知道为什么)还有另一个错误:
错误:“sdSelectCard”未在此范围内声明
'sdSelectCard' 不是由
sd_diskio.h
定义的,如何告诉 Arduino IDE 将 sd_diskio.cpp
添加到编译中? (我尝试了 Sketch->Add File...但它不能解决问题)
您需要初始化SD库。此代码在 ESP32 Feather 上运行,并确认读卡器已正确初始化并且存在卡。
#include <SPI.h>
#include <SD.h>
#ifdef ESP32
#define SD_CS 14 //SD card chip select
#else ifdef ESP8266
#define SD_CS 2
#endif
void initSDcard() {
if (!SD.begin(SD_CS)) {
Serial.println(F("SD Card not found"));
Serial.println(F("Remember MISO to MISO & MOSI to MOSI"));
while (!SD.begin(SD_CS)) {
delay(10);
}
}
Serial.println(F("SD Card OK"));
}
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println("Started");
initSDcard();
}
void loop() {
delay(10);
}