قم بتنزيل أحدث إصدار مستقر من هنا. الرجاء الإبلاغ عن أي أخطاء في القضايا.
مكتبة Arduino هذه مخصصة للاستخدام مع رقائق ذاكرة Flash و Fram التي تتواصل باستخدام بروتوكول SPI. في شكله الحالي ، يدعم تحديد شريحة Flash/Fram وميزاته المختلفة ؛ تخصيص العنوان التلقائي وإدارته ؛ كتابة وقراءة عدد من الأنواع المختلفة من البيانات ، تتراوح من 8 بت إلى 32 بت (موقعة وغير موقعة) ، العوامات ، السلاسل ، صفائف البايت/الشورات والهياكل من وإلى مواقع مختلفة ؛ القطاع والكتل والرقاقة محو ؛ وتزويد بتقليل الطاقة المنخفضة.
| وحدات التحكم الصغيرة | تم اختبار لوحات DEV مع | ملحوظات |
|---|---|---|
| Atmega328p | Arduino Uno ، Arduino Micro ، Arduino Fio ، Arduino Nano | - |
| ATMEGA32U4 | Arduino Leonardo ، Arduino Fio V3 | - |
| ATMEGA2560 | أردوينو ميجا | - |
| ATSAMD21G18 (ARM Cortex M0+) | Adafruit Feather M0 ، Adafruit Feather M0 Express ، adafruit itsybitsy M0 Express | - |
| at91sam3x8e (ذراع القشرة M3) | أردوينو بسبب | - |
| NRF52832 (ARM Cortex M4F) | Adafruit NRF52 Feather | - |
| ATSAMD51J19 (ARM Cortex M4) | Adafruit Metro M4 | - |
| STM32F091RCT6 | Nucleo-F091RC | |
| STM32L0 | Nucleo-L031K6 | |
| ESP8266 | Adafruit ESP8266 Feather ، Sparkfun ESP8266 شيء | - |
| ESP32 | Adafruit ESP32 Feather ، Sparkfun ESP32 شيء | ذاكرة فلاش على متن الطائرة. الرجوع إلى الحاشية £ أدناه. |
| simblee | Sparkfun Simblee | - |
عادةً ما تحتوي لوحات £ ESP32 على فلاش SPI بالفعل على دبوس SS الافتراضي ، لذلك يتعين على المستخدم أن يعلن بشكل صريح أن دبوس ChipSelect المستخدمة مع المُنشئ
| الشركة المصنعة | فلاش IC | ملحوظات |
|---|---|---|
| وينبوند | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | يجب أن تعمل مع W25QXXXBV ، W25QXXXFV و W25QXXXJV العائلات |
| رقاقة | SST25VF064C SST26VF016B SST26VF032B SST26VF064B | يجب أن تعمل مع عائلات SST25 و SST26 |
| Cypress/Spansion | S25FL032P S25FL116K S25FL127S | يجب أن تعمل مع عائلة S25FL |
| على أشباه الموصلات | LE25U40cmc | |
| أميك | A25L512A0 | |
| ميكرون | M25P40 | |
| أديستو | AT25SF041 | |
| Macronix | MX25L4005 MX25L4005 | |
| أجهزة Giga | GD25Q16C | (تستخدم على adafruit ItsyBitsy M0 Express) |
| الشركة المصنعة | فلاش IC | ملحوظات |
|---|---|---|
| Cypress/Spansion | FM25W256 | يجب أن تعمل مع عائلة FM25W |
يتم استدعاء المكتبة من خلال إعلان مُنشئ SPIFlash flash(csPin*) حيث يمكن استبدال "Flash" بمنشئ المستخدم المفضل و "Cspin" هو رقم دبوس الرقائق لوحدة الفلاش.
* خياري. لا تقم بتضمين CSPIN إذا كان استخدام PIN SELECT SELECT الافتراضي للوحة الخاصة بك.
كل إصدار من المكتبة> = v3.0.0 يدعم القدرة على استخدام أي من واجهات SPI المتعددة (إذا كان السيطرة الصغيرة الخاصة بك يدعمها). يتم التبديل لاستخدام واجهة SPI أخرى عن طريق استدعاء SPIFlash flash(csPin, &SPI1); (أو & spi2 وما إلى ذلك) ، بدلاً من SPIFlash flash(csPin) .
* ملاحظة: يتم دعم هذا حاليًا فقط في بنيات SAMD و STM32.
يمكن استخدام نسخة بديلة SPIFlash flash (SPIPinsArray) للمركبة (فقط مع لوحة ESP32 حتى الآن) لتمكين استخدام دبابيس SPI المخصصة. يجب أن يكون SPIPinsArray مجموعة من العناصر المكونة من 4 عناصر تحتوي على أرقام دبوس SPI المخصصة (كما هو الحال في الأعداد الصحيحة الموقعة - int8_t) بالترتيب التالي - SCK ، MISO ، MOSI ، SS.
تأكد أيضًا من تضمين flash.begin(CHIPSIZE*) في void setup() . يمكّن ذلك المكتبة من اكتشاف نوع شريحة الفلاش المثبتة وتحميل المعلمات الصحيحة.
* خياري
اعتبارًا من V3.2.1 ، يعد اكتشاف معلمة SFDP خيارًا يتم التحكم فيه عن المستخدم. للحصول على المكتبة للعمل مع رقائق ذاكرة الفلاش المتوافقة مع SFDP والتي لا يتم دعمها رسميًا من قبل المكتبة ، يجب على المستخدم إلغاء تحديد "//#define use_sfdp" في "spimemory.h".
تمت تمكين المكتبة على العنوان بشكل افتراضي - أي إذا كان العنوان الأخير قراءة/مكتوبة من/إلى ، في أي وظيفة ، هو 0xFFFFF ثم ، العنوان التالي قراءة/مكتوبة من/إلى IS 0x00000. يمكن تعطيل ذلك عن طريق عدم التخلص #define DISABLEOVERFLOW في spimemory.h. (العنوان الزائد يعمل فقط لوظائف القراءة / الكتابة. محو وظائف محو عدد محدد فقط من الكتل / القطاعات بغض النظر عن الفائض.)
جميع وظائف الكتابة لديها فحص خطأ تم تشغيله افتراضيًا - أي أن كل بايت مكتوبة إلى ذاكرة الفلاش سيتم التحقق منه مقابل البيانات المخزنة على Arduino. يمكن للمستخدمين الذين يحتاجون إلى سرعات كتابة أكبر تعطيل هذه الوظيفة عن طريق تعيين وسيطة "ErrorCheck" الاختيارية في أي وظيفة كتابة إلى noerrchk - على سبيل المثال. اتصل بالوظيفة writeByte(address, *data_buffer, NOERRCHK) بدلاً من writeByte(address, *data_buffer) .
يتم استدعاء المكتبة من خلال الإعلان عن مُنشئ SPIFram fram(csPin*) حيث يمكن استبدال "Fram" بمنشئ المستخدم المفضل و "Cspin" هو رقم دبوس الرقائق لوحدة Fram.
* خياري. لا تقم بتضمين CSPIN إذا كان استخدام PIN SELECT SELECT الافتراضي للوحة الخاصة بك.
كل إصدار من المكتبة> = v3.0.0 يدعم القدرة على استخدام أي من واجهات SPI المتعددة (إذا كان السيطرة الصغيرة الخاصة بك يدعمها). يتم التبديل لاستخدام واجهة SPI أخرى عن طريق استدعاء SPIFram fram(csPin, &SPI1); (OR & SPI2 وما إلى ذلك) ، بدلاً من SPIFram fram(csPin) .
* ملاحظة: يتم دعم هذا حاليًا فقط رسميًا في بنيات SAMD و STM32.
تأكد أيضًا من تضمين fram.begin(CHIPSIZE*) في void setup() . يمكّن هذا المكتبة من اكتشاف نوع شريحة Fram المثبتة وتحميل المعلمات الصحيحة.
^ حاليا في بيتا. الأساليب في 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)جميع أوامر الكتابة تأخذ فقط متغير عنوان 32 بت بدلاً من رقم الصفحة الاختياري 16 بت ومتغيرات إزاحة 8 بت في الإصدارات السابقة من المكتبة (<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()ملاحظة: إذا لم تتمكن من إصلاح الخطأ/s ، فيرجى إثارة مشكلة هنا مع تفاصيل شريحة الفلاش الخاصة بك وما الذي كنت تفعله عند حدوث هذا الخطأ. يرجى اتباع قالب الإصدار الذي يظهر على الرابط
| رمز الخطأ | توضيح |
|---|---|
| 0x00 | وظيفة تنفذ بنجاح |
| 0x01 | void setup() *constructor_of_choice*.begin() |
| 0x02 | غير قادر على تحديد الرقاقة. هل هذه الشريحة مدعومة رسميا؟ |
| 0x03 | غير قادر على تحديد السعة. هل هذه الشريحة مدعومة رسميا؟ إذا لم يكن كذلك ، يرجى تحديد CAPACITY ثابتة وإدراجها في flash.begin(CAPACITY) . |
| 0x04 | رقاقة مشغول. تأكد من توصيل جميع المسامير بشكل صحيح. |
| 0x05 | تم تعطيل تدفق الصفحة والعنوان المسمى يتجاوز الذاكرة |
| 0x06 | غير قادر على تمكين الكتابة إلى رقاقة. يرجى التأكد من سحب دبابيس Hold & WriteProtect إلى VCC. |
| 0x07 | يحتوي هذا القطاع بالفعل على بيانات. يرجى التأكد من محو القطاعات التي يتم كتابتها. |
| 0x08 | أنت تنخفض على ذاكرة الوصول العشوائي. يرجى تحسين الكود الخاص بك للحصول على أفضل استخدام ذاكرة الوصول العشوائي |
| 0x09 | غير قادر على تعليق/استئناف العملية. يرجى إثارة قضية. |
| 0x0A | فشلت وظيفة الكتابة خطأ errorcheck. يرجى إثارة قضية. |
| 0x0B | تحقق من الأسلاك الخاصة بك. شريحة فلاش غير مستجيبة. |
| 0x0C | لا يتم دعم هذه الوظيفة بواسطة أجهزة الذاكرة. |
| 0x0D | غير قادر على تمكين 4 بايت. يرجى إثارة قضية. |
| 0x0e | غير قادر على تعطيل 4 بايت. يرجى إثارة قضية. |
| 0x0F | الشريحة مدعومة حاليا. |
| 0x10 | رقاقة فلاش لا تدعم SFDP. |
| 0x11 | غير قادر على قراءة المعلمات محو من رقاقة. العودة إلى الافتراضات المكتبة. |
| 0x12 | غير قادر على قراءة أوقات محو من ذاكرة الفلاش. العودة إلى الافتراضات المكتبة. |
| 0x13 | غير قادر على قراءة أوقات البرنامج من ذاكرة الفلاش. العودة إلى الافتراضات المكتبة. |
| 0x14 | لا رقائق تحديد PIN محددة في صفيف SPI المخصص. ارجع إلى القسم حول مُنشئ للحصول على معلومات حول كيفية استخدام دبابيس SPI المخصصة. |
| 0xfe | خطأ غير معروف. يرجى إثارة قضية. |