ここから最新の安定したリリースをダウンロードしてください。問題のバグを報告してください。
このArduinoライブラリは、SPIプロトコルを使用して通信するフラッシュおよびフラムメモリチップで使用するためです。現在の形式では、フラッシュ/フラムチップとそのさまざまな機能の識別をサポートしています。自動アドレスの割り当てと管理。 8ビットから32ビット(署名および署名されていない)値、フロート、文字列、バイト/charおよび構造体の配列、さまざまな場所への範囲のさまざまな種類のデータを作成および読み取ります。セクター、ブロック、チップ消去。低電力操作のために電源を入れます。
| マイクロコントローラー | テストされた開発ボード | メモ |
|---|---|---|
| ATMEGA328P | Arduino Uno、Arduino Micro、 Arduino Fio、Arduino Nano | - |
| ATMEGA32U4 | Arduino Leonardo、Arduino Fio V3 | - |
| Atmega2560 | Arduino Mega | - |
| ATSAMD21G18(ARM皮質M0+) | Adafruit Feather M0、 Adafruit Feather M0 Express、 Adafruit Itsybitsy M0 Express | - |
| AT91SAM3X8E(ARM皮質M3) | Arduino Due | - |
| NRF52832(ARM皮質M4F) | Adafruit NRF52フェザー | - |
| ATSAMD51J19(アーム皮質M4) | Adafruit Metro M4 | - |
| STM32F091RCT6 | ヌクレオ-F091RC | |
| STM32L0 | ヌクレオ-L031K6 | |
| ESP8266 | Adafruit ESP8266フェザー、 SparkFun ESP8266のこと | - |
| ESP32 | Adafruit ESP32フェザー、 SparkFun ESP32のこと | オンボードフラッシュメモリ。以下の脚注£を参照してください。 |
| Simblee | Sparkfun Simblee | - |
£ ESP32ボードには通常、デフォルトのSSピンにSPIフラッシュが既に接続されているため、ユーザーはコンストラクターで使用されているChipSelectピンを明示的に宣言する必要があります
| メーカー | フラッシュIC | メモ |
|---|---|---|
| ウィンボンド | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | w25qxxxbv、w25qxxxfv& W25QXXXJVファミリ |
| マイクロチップ | SST25VF064C SST26VF016B SST26VF032B SST26VF064B | SST25およびSST26ファミリと連携する必要があります |
| サイプレス/スパンション | S25FL032P S25FL116K S25FL127S | S25FLファミリーと連携する必要があります |
| 半導体について | LE25U40CMC | |
| アミック | A25L512A0 | |
| ミクロン | M25P40 | |
| アデスト | AT25SF041 | |
| マクロニックス | MX25L4005 MX25L4005 | |
| ギガデバイス | GD25Q16C | (Adafruit Itsybitsy M0 Expressで使用) |
| メーカー | フラッシュIC | メモ |
|---|---|---|
| サイプレス/スパンション | FM25W256 | FM25Wファミリーと連携する必要があります |
ライブラリは、「フラッシュ」を選択したユーザーコンストラクターに置き換えることができ、「cspin」がフラッシュモジュールのチップ選択ピンに置き換えることができるSPIFlash flash(csPin*)コンストラクターを宣言することにより呼び出されます。
*オプション。ボードにデフォルトのスレーブ選択ピンを使用する場合、CSPINを含めないでください。
ライブラリのすべてのバージョン> = v3.0.0は、複数のSPIインターフェイスのいずれかを使用する機能をサポートしています(マイクロコントローラーがそれらをサポートしている場合)。別のSPIインターフェイスを使用するために切り替えることはSPIFlash flash(csPin, &SPI1); (または&&spi2など)、 SPIFlash flash(csPin)の代わりに。
*注:これは現在、SAMDおよびSTM32アーキテクチャでのみサポートされています。
コンストラクターの代替バージョンのSPIFlash flash (SPIPinsArray)を使用して(現在はESP32ボードでのみ)、カスタムSPIピンの使用を可能にします。 SPIPinsArray 、次の順序でカスタムSPIピン番号(署名された整数-INT8_Tとして)を含む4要素アレイでなければなりません - SCK、MISO、MOSI、SS。
また、 void setup()にflash.begin(CHIPSIZE*)を含めるようにしてください。これにより、ライブラリはインストールされているフラッシュチップの種類を検出し、適切なパラメーターをロードできます。
*オプション
v3.2.1の時点で、SFDPパラメーター発見はユーザー制御オプションです。ライブラリがライブラリによって公式にサポートされていないSFDP互換フラッシュメモリチップで動作させるには、ユーザーは「spimemory.h」のuses_sfdp 'を定義する必要があります。
ライブラリには、デフォルトで有効にされているアドレスオーバーフローがあります - 任意の関数で、または任意の関数で読み取り/書き込まれた最後のアドレスが0xfffffである場合、次のアドレスは/from/to is 0x00000です。これは、spimemory.hで#define DISABLEOVERFLOWを開始することで無効にすることができます。 (アドレスオーバーフローは、読み取り /書き込み関数に対してのみ機能します。関数を消去してください。オーバーフローに関係なく、セット数のブロック /セクターのみを消去します。)
すべての書き込み関数には、デフォルトでオンになっているエラーチェックがあります。つまり、フラッシュメモリに書き込まれたすべてのバイトがArduinoに保存されているデータに対してチェックされます。より大きな書き込み速度が必要なユーザーは、noerrchkの書き込み関数にオプションの最後の「エラーチェック」引数を設定することにより、この関数を無効にすることができます。 writeByte(address, *data_buffer) writeByte(address, *data_buffer, NOERRCHK)を呼び出します。
ライブラリは、「フラム」を選択したユーザーコンストラクターに置き換えることができるSPIFram fram(csPin*)コンストラクターを宣言することで呼び出され、「cspin」はフラムモジュールのチップ選択ピンです。
*オプション。ボードにデフォルトのスレーブ選択ピンを使用する場合、CSPINを含めないでください。
ライブラリのすべてのバージョン> = v3.0.0は、複数のSPIインターフェイスのいずれかを使用する機能をサポートしています(マイクロコントローラーがそれらをサポートしている場合)。別のSPIインターフェイスを使用するために切り替えることはSPIFram fram(csPin, &SPI1); (または&&spi2など)、 SPIFram fram(csPin)の代わりに。
*注:これは現在、SAMDおよびSTM32アーキテクチャでのみ正式にサポートされています。
また、 void setup()にfram.begin(CHIPSIZE*)を含めるようにしてください。これにより、ライブラリはインストールされているフラムチップの種類を検出し、適切なパラメーターをロードできます。
^現在ベータ版です。 Spiframの方法は最終的なものではなく、次の数回の改訂にわたって変更される場合があります。
ライブラリは次の機能を有効にします。
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)すべての書き込みコマンドは、ライブラリの以前のバージョンのオプションの16ビットページ番号と8ビットオフセット変数の代わりに32ビットアドレス変数のみを取得します(<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()注:エラーを修正できない場合は、フラッシュチップの詳細と、このエラーが発生したときに何をしていたかについて、ここで問題を提起してください。リンクに表示される問題テンプレートに従ってください
| エラーコード | 説明 |
|---|---|
| 0x00 | 正常に実行された関数 |
| 0x01 | *constructor_of_choice*.begin() void setup()で呼び出されませんでした |
| 0x02 | チップを識別できません。 このチップは正式にサポートされていますか? |
| 0x03 | 容量を特定できません。 このチップは正式にサポートされていますか? そうでない場合は、 CAPACITY定数を定義して、 flash.begin(CAPACITY)に含めてください。 |
| 0x04 | チップはビジーです。すべてのピンが適切に接続されていることを確認してください。 |
| 0x05 | ページオーバーフローは無効になり、呼び出されたアドレスがメモリを超えています |
| 0x06 | チップに書き込みを有効にすることができません。 Hold&WriteProtectピンがVCCに引き上げられていることを確認してください。 |
| 0x07 | このセクターにはすでにデータが含まれています。 書かれているセクターが消去されていることを確認してください。 |
| 0x08 | あなたはラムで低く走っています。 ラムの使用を改善するために、コードを最適化してください |
| 0x09 | 操作を一時停止/再開できません。 問題を提起してください。 |
| 0x0a | 書き込み関数はエラーチェックに失敗しました。 問題を提起してください。 |
| 0x0b | 配線を確認してください。フラッシュチップは反応しません。 |
| 0x0c | この関数は、メモリハードウェアによってサポートされていません。 |
| 0x0d | 4バイトアドレス指定を有効にすることができません。 問題を提起してください。 |
| 0x0e | 4バイトアドレス指定を無効にすることができません。 問題を提起してください。 |
| 0x0f | 現在、チップは電源を入れています。 |
| 0x10 | フラッシュチップはSFDPをサポートしていません。 |
| 0x11 | チップから消去パラメーターを読み取ることができません。 ライブラリに戻るデフォルト。 |
| 0x12 | フラッシュメモリから消去時間を読み取ることができません。 ライブラリに戻るデフォルト。 |
| 0x13 | フラッシュメモリからプログラム時間を読むことができません。 ライブラリに戻るデフォルト。 |
| 0x14 | カスタムSPIアレイで定義されたチップ選択ピンはありません。 カスタムSPIピンの使用方法については、コンストラクターに関するセクションを参照してください。 |
| 0xfe | 不明なエラー。 問題を提起してください。 |