switch to using QSPI bus for external flash

This commit is contained in:
taco
2025-08-02 08:31:23 +10:00
parent c5180d4588
commit bdfe9ad27b
8 changed files with 27 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
#include <Arduino.h> #include <Arduino.h>
#include "DataStore.h" #include "DataStore.h"
#if defined(EXTRAFS) || defined(SPIFLASH) #if defined(EXTRAFS) || defined(QSPIFLASH)
#define MAX_BLOBRECS 100 #define MAX_BLOBRECS 100
#else #else
#define MAX_BLOBRECS 20 #define MAX_BLOBRECS 20
@@ -49,7 +49,9 @@ void DataStore::begin() {
#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
// #include <InternalFileSystem.h> // disabled for now, leaving here for dual fs branch // #include <InternalFileSystem.h> // disabled for now, leaving here for dual fs branch
#include <CustomLFS.h> #include <CustomLFS.h>
#include <CustomLFS_SPIFlash.h> #if defined(QSPIFLASH)
#include <CustomLFS_QSPIFlash.h>
#endif
#endif #endif
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)

View File

@@ -14,11 +14,9 @@ static uint32_t _atoi(const char* sp) {
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
#include <InternalFileSystem.h> #include <InternalFileSystem.h>
#if defined(SPIFLASH) #if defined(QSPIFLASH)
#include <CustomLFS_SPIFlash.h> #include <CustomLFS_QSPIFlash.h>
const int chipSelect = PIN_QSPI_CS; DataStore store(QSPIFlash, rtc_clock);
SPIClass SPI_2(NRF_SPIM2, PIN_QSPI_IO1, PIN_QSPI_SCK, PIN_QSPI_IO0);
DataStore store(FlashFS, rtc_clock);
#else #else
#if defined(EXTRAFS) #if defined(EXTRAFS)
#include <CustomLFS.h> #include <CustomLFS.h>
@@ -131,12 +129,12 @@ void setup() {
fast_rng.begin(radio_get_rng_seed()); fast_rng.begin(radio_get_rng_seed());
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
#if defined(SPIFLASH) #if defined(QSPIFLASH)
if (!FlashFS.begin(chipSelect, SPI_2)) { if (!QSPIFlash.begin()) {
// debug output might not be available at this point, might be too early. maybe should fall back to InternalFS here? // debug output might not be available at this point, might be too early. maybe should fall back to InternalFS here?
MESH_DEBUG_PRINTLN("CustomLFS_SPIFlash: failed to initialize"); MESH_DEBUG_PRINTLN("CustomLFS_QSPIFlash: failed to initialize");
} else { } else {
MESH_DEBUG_PRINTLN("CustomLFS_SPIFlash: initialized successfully"); MESH_DEBUG_PRINTLN("CustomLFS_QSPIFlash: initialized successfully");
} }
#else #else
InternalFS.begin(); InternalFS.begin();

View File

@@ -4,9 +4,9 @@
#include <FS.h> #include <FS.h>
#define FILESYSTEM fs::FS #define FILESYSTEM fs::FS
#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM) #elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
#if defined(SPIFLASH) #if defined(QSPIFLASH)
#include <CustomLFS_SPIFlash.h> #include <CustomLFS_QSPIFlash.h>
#define FILESYSTEM CustomLFS_SPIFlash #define FILESYSTEM CustomLFS_QSPIFlash
#elif defined(EXTRAFS) #elif defined(EXTRAFS)
#include <CustomLFS.h> #include <CustomLFS.h>
#define FILESYSTEM CustomLFS #define FILESYSTEM CustomLFS

View File

@@ -42,6 +42,7 @@ build_flags =
-D OFFLINE_QUEUE_SIZE=256 -D OFFLINE_QUEUE_SIZE=256
-D DISPLAY_CLASS=SH1106Display -D DISPLAY_CLASS=SH1106Display
-D PIN_BUZZER=4 -D PIN_BUZZER=4
-D QSPIFLASH=1
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Nano_G2_Ultra.build_src_filter} build_src_filter = ${Nano_G2_Ultra.build_src_filter}

View File

@@ -80,6 +80,7 @@ build_flags =
-D OFFLINE_QUEUE_SIZE=256 -D OFFLINE_QUEUE_SIZE=256
-D PIN_BUZZER=6 -D PIN_BUZZER=6
-D AUTO_SHUTDOWN_MILLIVOLTS=3300 -D AUTO_SHUTDOWN_MILLIVOLTS=3300
-D QSPIFLASH=1
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${ThinkNode_M1.build_src_filter} build_src_filter = ${ThinkNode_M1.build_src_filter}

View File

@@ -110,6 +110,15 @@ extern const int MISO;
extern const int MOSI; extern const int MOSI;
extern const int SCK; extern const int SCK;
////////////////////////////////////////////////////////////////////////////////
// QSPI
#define PIN_QSPI_SCK (46)
#define PIN_QSPI_CS (47)
#define PIN_QSPI_IO0 (44) // MOSI if using two bit interface
#define PIN_QSPI_IO1 (45) // MISO if using two bit interface
#define PIN_QSPI_IO2 (7) // WP if using two bit interface (i.e. not used)
#define PIN_QSPI_IO3 (5) // HOLD if using two bit interface (i.e. not used)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Display // Display

View File

@@ -86,6 +86,7 @@ build_flags = ${WioTrackerL1.build_flags}
-D OFFLINE_QUEUE_SIZE=256 -D OFFLINE_QUEUE_SIZE=256
-D DISPLAY_CLASS=SH1106Display -D DISPLAY_CLASS=SH1106Display
-D PIN_BUZZER=12 -D PIN_BUZZER=12
-D QSPIFLASH=1
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${WioTrackerL1.build_src_filter} build_src_filter = ${WioTrackerL1.build_src_filter}

View File

@@ -66,7 +66,7 @@ build_flags =
; -D BLE_DEBUG_LOGGING=1 ; -D BLE_DEBUG_LOGGING=1
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
-D MESH_DEBUG=1 -D MESH_DEBUG=1
-D SPIFLASH=1 -D QSPIFLASH=1
build_src_filter = ${Xiao_nrf52.build_src_filter} build_src_filter = ${Xiao_nrf52.build_src_filter}
+<helpers/nrf52/SerialBLEInterface.cpp> +<helpers/nrf52/SerialBLEInterface.cpp>
+<../examples/companion_radio/*.cpp> +<../examples/companion_radio/*.cpp>