Die TTGO Lora Boards haben einige Probleme, wenn sie zusammen mit SD -Karten verwendet werden. Sowohl die SX1278- als auch die SD -Karten verwenden SPI als Kommunikationsbus. SPI ist eine Protokollfamilie kann in vielen verschiedenen Konfigurationen arbeiten.
Das ESP32 auf der TTGO LORA -Karte verfügt über eine integrierte Hardware SPI (HSPI) und kann auch durch Emulation virtuelle / Software -SPI (VSPI) durchführen. Auch die VSPI -Busse sowie der HSPI können an eine der Stifte weitergeleitet werden.

In der Standardkonfiguration verwendet sowohl SX1278 als auch die SD -Bibliothek den HSPI und behindern sich dadurch.
Um die SX1278- und SD -Karte funktionieren zu lassen, müssen zwei SPI -Busse verwendet werden. Während des Experimentierens mit dem Board wurde auch offensichtlich, dass der SX1278 auf der Hardware-SPI fehleranfällig ist und bei der Verwendung der SD-Karte auf einem VSPI nicht funktioniert hat.
Die endgültige Lösung verwendet den HSPI -Bus für die Kommunikation mit SD und einen Software -SPI für den SX1278. Es ist auch eine Option, zwei separate Software -SPI -Busse zu verwenden.
#define SD_CS 23
#define SD_SCK 17
#define SD_MOSI 12
#define SD_MISO 13
SPIClass sd_spi ( HSPI );
sd_spi . begin ( SD_SCK , SD_MISO , SD_MOSI , SD_CS );
if (! SD . begin ( SD_CS , sd_spi ))
Serial . println ( "SD Card: mounting failed." );
else
Serial . println ( "SD Card: mounted." ); RHSoftwareSPI sx1278_spi ;
RH_RF95 rf95 ( LORA_CS , LORA_IRQ , sx1278_spi );
sx1278_spi . setPins ( LORA_MISO , LORA_MOSI , LORA_SCK );
if (! rf95 . init ())
Serial . println ( "LoRa Radio: init failed." );
else
Serial . println ( "LoRa Radio: init OK!" );