Téléchargez la dernière version stable d'ici. Veuillez signaler tout bug dans les problèmes.
Cette bibliothèque Arduino est à utiliser avec des puces de mémoire flash et fram qui communiquent à l'aide du protocole SPI. Dans sa forme actuelle, il prend en charge l'identification de la puce Flash / Fram et ses différentes fonctionnalités; Attribution automatique d'adresse et gestion; Rédaction et lecture d'un certain nombre de types de données différents, allant des valeurs 8 bits à 32 bits (signées et non signées), flotteurs, chaînes, tableaux d'octets / chars et structures vers et depuis divers endroits; Le secteur, le bloc et l'effacement des puces; et alimenter le fonctionnement de faible puissance.
| Micro contrôleurs | Les planches de développement testées avec | Notes |
|---|---|---|
| Atmega328p | Arduino Uno, Arduino Micro, Arduino Fio, Arduino Nano | - |
| Atmega32u4 | Arduino Leonardo, Arduino Fio V3 | - |
| Atmega2560 | Arduino mega | - |
| ATSAMD21G18 (ARM Cortex M0 +) | Adafruit Feather M0, Adafruit Feather M0 Express, Adafruit itsybitsy m0 express | - |
| AT91SAM3X8E (ARM Cortex M3) | Arduino dû | - |
| NRF52832 (ARM Cortex M4F) | Plume adafruit nrf52 | - |
| ATSAMD51J19 (ARM Cortex M4) | Adafruit Metro M4 | - |
| STM32F091RCT6 | Nucléo-f091rc | |
| STM32L0 | Nucléo-l031k6 | |
| ESP8266 | Adafruit ESP8266 Feather, Sparkfun ESP8266 chose | - |
| ESP32 | Adafruit ESP32 Feather, Chose Sparkfun ESP32 | Mémoire flash à bord. Reportez-vous à la note de bas de page ci-dessous. |
| Secouer | Sparkfun Simblee | - |
Les tableaux £ ESP32 ont généralement un flash SPI déjà attaché à sa broche SS par défaut, donc l'utilisateur doit déclarer explicitement la broche ChipSelect utilisée avec le constructeur
| Fabricant | Flash ic | Notes |
|---|---|---|
| Vigilant | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | Devrait travailler avec le W25QXXXBV, W25QXXXFV & Familles W25QXXXJV |
| Puce | Sst25vf064c Sst26vf016b Sst26vf032b Sst26vf064b | Devrait travailler avec les familles SST25 et SST26 |
| Cyprès / spansion | S25fl032p S25FL116K S25FL127 | Devrait travailler avec la famille S25FL |
| En semi-conducteur | LE25U40CMC | |
| Amic | A25L512A0 | |
| Micron | M25p40 | |
| Adesto | At25sf041 | |
| Macronix | MX25L4005 MX25L4005 | |
| Dispositifs Giga | GD25Q16C | (Utilisé sur l'adafruit itsybitsy m0 express) |
| Fabricant | Flash ic | Notes |
|---|---|---|
| Cyprès / spansion | FM25W256 | Devrait travailler avec la famille FM25W |
La bibliothèque est appelée en déclarant le constructeur SPIFlash flash(csPin*) où «flash» peut être remplacé par un constructeur utilisateur de choix et «cspin» est la broche de sélection de puce pour le module Flash.
* Facultatif. N'incluez pas CSPIN si vous utilisez la broche d'esclave par défaut pour votre carte.
Chaque version de la bibliothèque> = v3.0.0 prend en charge la possibilité d'utiliser l'une de plusieurs interfaces SPI (si votre micro-contrôleur les prend en charge). La commutation pour utiliser une autre interface SPI est effectuée en appelant SPIFlash flash(csPin, &SPI1); (ou & spi2 et ainsi de suite), au lieu de SPIFlash flash(csPin) .
* Remarque: Ceci n'est actuellement pris en charge que sur les architectures SAMD et STM32.
Une autre version SPIFlash flash (SPIPinsArray) du constructeur peut être utilisée (uniquement avec la carte ESP32 à partir de maintenant) pour activer l'utilisation de broches SPI personnalisées. SPIPinsArray doit être un tableau de 4 éléments contenant les numéros de broches SPI personnalisés (en tant qu'entiers signés - int8_t) dans l'ordre suivant - SCK, Miso, Mosi, SS.
Assurez-vous également d'inclure flash.begin(CHIPSIZE*) dans void setup() . Cela permet à la bibliothèque de détecter le type de puce flash installée et de charger les bons paramètres.
* Facultatif
Depuis la v3.2.1, la découverte de paramètres SFDP est une option contrôlée par l'utilisateur. Pour faire fonctionner la bibliothèque avec des puces de mémoire flash compatibles SFDP qui ne sont pas officiellement prises en charge par la bibliothèque, l'utilisateur doit décommer '// # define use_sfdp' dans 'SPIMEMORY.H'.
La bibliothèque a un débordement d'adresse activé par défaut - c'est-à-dire que si la dernière adresse lue / écrite de / à, dans n'importe quelle fonction, est 0xfffff alors, l'adresse suivante lecture / écrite de / à est 0x00000. Ceci peut être désactivé par la non-éphémère #define DISABLEOVERFLOW dans Spimemory.h. (Address Overflow fonctionne uniquement pour les fonctions de lecture / écriture. Effacer les fonctions Effacer uniquement un nombre de blocs / secteurs, quel que soit le débordement.)
Toutes les fonctions d'écriture ont la vérification des erreurs activée par défaut - c'est-à-dire que chaque octet écrit dans la mémoire flash sera vérifié par rapport aux données stockées sur l'Arduino. Les utilisateurs qui ont besoin de plus grandes vitesses d'écriture peuvent désactiver cette fonction en définissant un dernier argument «ErrorCheck» facultatif dans n'importe quelle fonction d'écriture sur NoerRChk - pour EG. Appelez la fonction writeByte(address, *data_buffer, NOERRCHK) au lieu de writeByte(address, *data_buffer) .
La bibliothèque est appelée en déclarant le constructeur SPIFram fram(csPin*) où «Fram» peut être remplacé par un constructeur utilisateur de choix et «cspin» est la broche de sélection de puce pour le module FRAM.
* Facultatif. N'incluez pas CSPIN si vous utilisez la broche d'esclave par défaut pour votre carte.
Chaque version de la bibliothèque> = v3.0.0 prend en charge la possibilité d'utiliser l'une de plusieurs interfaces SPI (si votre micro-contrôleur les prend en charge). La commutation pour utiliser une autre interface SPI est effectuée en appelant SPIFram fram(csPin, &SPI1); (ou & spi2 et ainsi de suite), au lieu de SPIFram fram(csPin) .
* Remarque: Ceci n'est actuellement pris en charge officiellement que sur les architectures SAMD et STM32.
Assurez-vous également d'inclure fram.begin(CHIPSIZE*) dans void setup() . Cela permet à la bibliothèque de détecter le type de puce FRAM installée et de charger les bons paramètres.
^ Actuellement en version bêta. Les méthodes de SPIFRAM ne sont pas finales et sujettes à changer au cours des prochaines révisions.
La bibliothèque permet les fonctions suivantes:
begin(_chipsize)setClock(clockSpeed)error(_verbosity)getManID()getJEDECID()getUniqueID()getAddress(sizeOfData)sizeofStr()getCapacity()getMaxPage()functionRunTime()readAnything(address, value)readByte(address)readChar(address)readWord(address)readShort(address)readULong(address)readLong(address)readFloat(address)readStr(address, outputStr)readAnything(address, value)Toutes les commandes d'écriture ne prennent qu'une variable d'adresse 32 bits au lieu du numéro de page 16 bits en option et des variables de décalage 8 bits dans les versions précédentes de la bibliothèque (<v3.0.0)
writeByte(address, data)writeChar(address, data)writeWord(address, data)writeShort(address, data)writeULong(address, data)writeLong(address, data)writeFloat(address, data)writeStr(address, data)writeAnything(address, value)readByteArray(address, *data_buffer, bufferSize)writeByteArray(address, *data_buffer, bufferSize)readCharArray(address, *data_buffer, bufferSize)writeCharArray(address, *data_buffer, bufferSize)eraseSector(address)eraseBlock32K(address)eraseBlock64K(address)eraseChip()eraseSection(address, sizeOfData)suspendProg()resumeProg()powerDown()powerUp()Remarque: Si vous n'êtes pas en mesure de corriger l'erreur / s, veuillez soulever un problème ici avec les détails de votre puce flash et ce que vous faisiez lorsque cette erreur s'est produite. Veuillez suivre le modèle de problème qui apparaît sur le lien
| Code d'erreur | Explication |
|---|---|
| 0x00 | Fonction exécutée avec succès |
| 0x01 | *constructor_of_choice*.begin() n'a pas été appelé dans void setup() |
| 0x02 | Impossible d'identifier la puce. Cette puce est-elle officiellement soutenue? |
| 0x03 | Impossible d'identifier la capacité. Cette puce est-elle officiellement soutenue? Sinon, veuillez définir une CAPACITY constante et l'inclure dans flash.begin(CAPACITY) . |
| 0x04 | Chip est occupé. Assurez-vous que toutes les broches ont été correctement connectées. |
| 0x05 | Le débordement de la page a été désactivé et l'adresse appelée dépasse la mémoire |
| 0x06 | Impossible d'activer l'écriture à la puce. Veuillez vous assurer que les épingles Hold & WriteProtect sont tirées vers VCC. |
| 0x07 | Ce secteur contient déjà des données. Veuillez vous assurer que les secteurs écrits sont effacés. |
| 0x08 | Vous courez bas sur RAM. Veuillez optimiser votre code pour une meilleure utilisation de RAM |
| 0x09 | Impossible de suspendre / reprendre le fonctionnement. Veuillez soulever un problème. |
| 0x0a | La fonction d'écriture a échoué Errorcheck. Veuillez soulever un problème. |
| 0x0b | Vérifiez votre câblage. La puce flash ne répond pas. |
| 0x0c | Cette fonction n'est pas prise en charge par le matériel de mémoire. |
| 0x0d | Impossible d'activer l'adresse de 4 octets. Veuillez soulever un problème. |
| 0x0e | Impossible de désactiver l'adressage de 4 octets. Veuillez soulever un problème. |
| 0x0f | La puce est actuellement alimentée. |
| 0x10 | La puce flash ne prend pas en charge SFDP. |
| 0x11 | Impossible de lire les paramètres d'effacement de la puce. Retour aux paramètres de la bibliothèque. |
| 0x12 | Impossible de lire les temps d'effacement de la mémoire flash. Retour aux paramètres de la bibliothèque. |
| 0x13 | Impossible de lire les temps du programme à partir de la mémoire flash. Retour aux paramètres de la bibliothèque. |
| 0x14 | Pas de broche de sélection de puce définie dans le réseau SPI personnalisé. Reportez-vous à la section About Constructor pour plus d'informations sur la façon d'utiliser des broches SPI personnalisées. |
| 0xfe | Erreur inconnue. Veuillez soulever un problème. |