diff --git a/README.md b/README.md index f730003..d00622a 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ This Arduino library is for use with flash and FRAM memory chips that communicat | ATSAMD51J19 (ARM Cortex M4) | Adafruit Metro M4 | - | | STM32F091RCT6 | Nucleo-F091RC | | | STM32L0 | Nucleo-L031K6 | | +| STM32F4 | STM32F407VET6 | | | ESP8266 | Adafruit ESP8266 Feather,
Sparkfun ESP8266 Thing | - | | ESP32 | Adafruit ESP32 Feather,
Sparkfun ESP32 Thing | Onboard flash memory. Refer to footnote£ below. | | Simblee | Sparkfun Simblee | - | @@ -46,7 +47,7 @@ This Arduino library is for use with flash and FRAM memory chips that communicat | Manufacturer | Flash IC | Notes | | ------------ | -------- | ----- | -| Winbond | W25Q16BV
W25Q64FV
W25Q64JV
W25Q80BV
W25Q256FV | Should work with the W25QXXXBV, W25QXXXFV &
W25QXXXJV families | +| Winbond | W25Q16BV
W25Q64FV
W25Q64JV
W25Q80BV
W25Q256FV
W25Q16JV| Should work with the W25QXXXBV, W25QXXXFV &
W25QXXXJV families | | Microchip | SST25VF064C
SST26VF016B
SST26VF032B
SST26VF064B | Should work with the SST25 & SST26 families | | Cypress/Spansion | S25FL032P
S25FL116K
S25FL127S | Should work with the S25FL family | | ON Semiconductor | LE25U40CMC | | diff --git a/src/SPIFlashIO.cpp b/src/SPIFlashIO.cpp index 083ed29..e3e2833 100644 --- a/src/SPIFlashIO.cpp +++ b/src/SPIFlashIO.cpp @@ -154,7 +154,7 @@ #if defined (ARDUINO_ARCH_SAM) due.SPIInit(DUE_SPI_CLK); - #elif defined (ARDUINO_ARCH_SAMD) + #elif defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) #ifdef SPI_HAS_TRANSACTION _spi->beginTransaction(_settings); #else @@ -231,7 +231,7 @@ //Reads/Writes next byte. Call 'n' times to read/write 'n' number of bytes. Should be called after _beginSPI() uint8_t SPIFlash::_nextByte(char IOType, uint8_t data) { - #if defined (ARDUINO_ARCH_SAMD) + #if defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) #ifdef ENABLEZERODMA union { uint8_t dataBuf[1]; @@ -250,7 +250,7 @@ //Reads/Writes next int. Call 'n' times to read/write 'n' number of integers. Should be called after _beginSPI() uint16_t SPIFlash::_nextInt(uint16_t data) { - #if defined (ARDUINO_ARCH_SAMD) + #if defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) return _spi->transfer16(data); #else return SPI.transfer16(data); @@ -267,7 +267,7 @@ case READDATA: #if defined (ARDUINO_ARCH_SAM) due.SPIRecByte(&(*data_buffer), size); - #elif defined (ARDUINO_ARCH_SAMD) + #elif defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) #ifdef ENABLEZERODMA spi_read(&(*data_buffer), size); #else @@ -286,7 +286,7 @@ case PAGEPROG: #if defined (ARDUINO_ARCH_SAM) due.SPISendByte(&(*data_buffer), size); - #elif defined (ARDUINO_ARCH_SAMD) + #elif defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) #ifdef ENABLEZERODMA spi_write(&(*data_buffer), size); #else @@ -313,7 +313,7 @@ } #ifdef SPI_HAS_TRANSACTION - #if defined (ARDUINO_ARCH_SAMD) + #if defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32) _spi->endTransaction(); #else SPI.endTransaction(); diff --git a/src/SPIMemory.h b/src/SPIMemory.h index cd1fcd9..36f8afd 100644 --- a/src/SPIMemory.h +++ b/src/SPIMemory.h @@ -69,12 +69,32 @@ //#define ZERO_SPISERCOM SERCOM4 // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// - #include - #include - #include "defines.h" - #include "SPIFlash.h" - #include "SPIFram.h" - #include "diagnostics.h" +#ifndef ARCH_STM32 + #if defined(ARDUINO_ARCH_STM32) || defined(ARDUINO_ARCH_STM32L0) || defined(__STM32F1__) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4) || defined(STM32F0xx) + #define ARCH_STM32 + #endif +#endif +#if defined (ARDUINO_ARCH_SAM) || defined (ARDUINO_ARCH_SAMD) || defined (ARDUINO_ARCH_ESP8266) || defined (SIMBLEE) || defined (ARDUINO_ARCH_ESP32) || defined (BOARD_RTL8195A) || defined(ARCH_STM32) || defined(ESP32) || defined(NRF52) +// RTL8195A included - @boseji 02.03.17 + #define _delay_us(us) delayMicroseconds(us) +#else + #include +#endif + +#define SPIFLASH_LIBVER 3 +#define SPIFLASH_LIBSUBVER 4 +#define SPIFLASH_REVVER 0 + +#define SPIFRAM_LIBVER 0 +#define SPIFRAM_LIBSUBVER 0 +#define SPIFRAM_REVVER 1 + +#include +#include +#include "defines.h" +#include "SPIFlash.h" +#include "SPIFram.h" +#include "diagnostics.h" #if defined (ARDUINO_ARCH_SAM) #include @@ -102,25 +122,6 @@ #endif #endif -#ifndef ARCH_STM32 - #if defined(ARDUINO_ARCH_STM32) || defined(ARDUINO_ARCH_STM32L0) || defined(__STM32F1__) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4) || defined(STM32F0xx) - #define ARCH_STM32 - #endif -#endif -#if defined (ARDUINO_ARCH_SAM) || defined (ARDUINO_ARCH_SAMD) || defined (ARDUINO_ARCH_ESP8266) || defined (SIMBLEE) || defined (ARDUINO_ARCH_ESP32) || defined (BOARD_RTL8195A) || defined(ARCH_STM32) || defined(ESP32) || defined(NRF52) -// RTL8195A included - @boseji 02.03.17 - #define _delay_us(us) delayMicroseconds(us) -#else - #include -#endif - -#define SPIFLASH_LIBVER 3 -#define SPIFLASH_LIBSUBVER 4 -#define SPIFLASH_REVVER 0 - -#define SPIFRAM_LIBVER 0 -#define SPIFRAM_LIBSUBVER 0 -#define SPIFRAM_REVVER 1 class SPIMemory { public: