我尝试使用Sqlite3 for ESP8266 lib,它告诉我应该从vfs_mount("/SD0", D8);
开始,我一直在这样做,直到我突然打不开DB。我试图找出原因,然后意识到这个函数返回NULL,这意味着没有创建vfs。
我不知道为什么会发生这种情况,我没有改变我的任何代码,但这里是设置以防万一:
void setup(void) {
Serial.begin(115200);
Wire.begin();
RTC.begin();
SPI.begin();
nfc.begin();
if (vfs_mount("/SD0", SS) == NULL)
Serial.println("Unable to set vfs");
if (RTC.lostPower())
RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
sqlite3_initialize();
Serial.println("System initialized");
}
奇怪的是,与SD.h
的常规SD通信工作,所以肯定不是接线的问题,但同样,以防万一,我正在接线:
- D5 →
SCK
- D6 →
MISO
- D7 →
MOSI
- D8 →
CS
我还尝试过重新安装库及其依赖项,ESP8266和SdFat的Sqlite3。
我真的很感激你能提供的任何帮助!
如果你还想看我的代码请告诉我。
1条答案
按热度按时间0s7z1bwu1#
问题似乎与返回NULL的vfs_mount函数有关,这意味着没有创建虚拟文件系统(VFS)。这可能是由于指定的挂载点“/SD 0”或使用的片选引脚(D8)有问题。
您可以尝试的一件事是检查SD卡是否正确插入并连接到ESP8266。此外,确保芯片选择引脚(D8)是否正确连接到SD卡的CS管脚。另一件需要检查的事情是,库SdFat是否正确安装,其版本是否与ESP8266的Sqlite3版本兼容。您可能还需要查看库文档,以了解任何其他已知问题或疑难解答提示。如果问题仍然存在,请提供有关错误消息的详细信息或您可能拥有的任何其他相关信息