여기에서 최신 안정적인 릴리스를 다운로드하십시오. 문제의 버그를보고하십시오.
이 Arduino 라이브러리는 SPI 프로토콜을 사용하여 통신하는 Flash 및 Fram 메모리 칩과 함께 사용됩니다. 현재 형태에서는 플래시/프램 칩과 다양한 기능을 식별하는 것을 지원합니다. 자동 주소 할당 및 관리; 8 비트 ~ 32 비트 (서명 및 부호없는) 값, 부유물, 문자열, 바이트/숯 및 스트러크의 다양한 위치에 대한 다양한 유형의 데이터를 작성하고 읽습니다. 부문, 블록 및 칩 지우기; 저전력 작동을 위해 전원을 공급합니다.
| 마이크로 컨트롤러 | 시험 보드 | 메모 |
|---|---|---|
| Atmega328p | Arduino Uno, Arduino Micro, Arduino Fio, Arduino Nano | - |
| ATMEGA32U4 | Arduino Leonardo, Arduino Fio V3 | - |
| ATMEGA2560 | Arduino Mega | - |
| ATSAMD21G18 (팔 피질 M0+) | Adafruit Feather M0, Adafruit Feather M0 Express, adafruit itsybitsy m0 Express | - |
| AT91SAM3X8E (ARM Cortex M3) | Arduino 마감 | - |
| NRF52832 (팔 피질 M4F) | Adafruit nrf52 깃털 | - |
| ATSAMD51J19 (ARM Cortex M4) | Adafruit Metro M4 | - |
| STM32F091RCT6 | Nucleo-F091RC | |
| STM32L0 | Nucleo-L031K6 | |
| ESP8266 | Adafruit ESP8266 깃털, Sparkfun ESP8266 | - |
| ESP32 | Adafruit ESP32 깃털, Sparkfun ESP32 | 온보드 플래시 메모리. 아래에서 각주 £ 를 참조하십시오. |
| Simblee | Sparkfun Simblee | - |
£ ESP32 보드는 일반적으로 SPI 플래시가 이미 기본 SS 핀에 첨부되어 있으므로 사용자는 생성자와 함께 사용되는 ChipSelect 핀을 명시 적으로 선언해야합니다.
| 제조업체 | 플래시 IC | 메모 |
|---|---|---|
| 윈 본드 | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | W25QXXXBV, W25QXXXFV &와 함께 작동해야합니다. W25QXXXJV 가족 |
| 마이크로 칩 | SST25VF064C SST26VF016B SST26VF032B SST26VF064B | SST25 및 SST26 가족과 협력해야합니다 |
| 사이프러스/스팬션 | S25FL032P S25FL116K S25FL127S | S25FL 제품군과 함께 일해야합니다 |
| 반도체에서 | LE25U40CMC | |
| 아미 | A25L512A0 | |
| 미크론 | M25P40 | |
| Adesto | AT25SF041 | |
| 마크로 닉스 | MX25L4005 MX25L4005 | |
| 기가 장치 | GD25Q16C | (Adafruit itsybitsy M0 Express에서 사용) |
| 제조업체 | 플래시 IC | 메모 |
|---|---|---|
| 사이프러스/스팬션 | FM25W256 | FM25W 가족과 함께 일해야합니다 |
라이브러리는 SPIFlash flash(csPin*) 생성자를 선언하여 호출됩니다. 여기서 '플래시'를 선택한 사용자 생성자로 대체 할 수 있고 'CSPIN'은 플래시 모듈의 칩 선택 핀입니다.
* 선택 사항. 보드에 기본 슬레이브 선택 핀을 사용하는 경우 CSPIN을 포함하지 마십시오.
라이브러리의 모든 버전> = v3.0.0은 여러 SPI 인터페이스를 사용하는 기능을 지원합니다 (마이크로 컨트롤러가 지원하는 경우). 다른 SPI 인터페이스를 사용하도록 전환하는 것은 SPIFlash flash(csPin, &SPI1); SPIFlash flash(csPin) 대신 (또는 SPI2 등).
* 참고 : 현재 SAMD 및 STM32 아키텍처에서만 지원됩니다.
생성자의 대체 버전 SPIFlash flash (SPIPinsArray) 사용자 정의 SPI 핀을 사용할 수 있도록 (현재 ESP32 보드에서만)를 사용할 수 있습니다. SPIPinsArray 다음 순서로 사용자 정의 SPI 핀 번호 (서명 된 정수 -INT8_T)를 포함하는 4 개의 요소 배열이어야합니다. SCK, MISO, MOSI, SS.
또한 void setup() 에 flash.begin(CHIPSIZE*) 포함하십시오. 이를 통해 라이브러리는 설치된 플래시 칩의 유형을 감지하고 올바른 매개 변수를로드 할 수 있습니다.
* 선택 사항
v3.2.1 기준으로 SFDP 매개 변수 검색은 사용자 제어 옵션입니다. 라이브러리에서 공식적으로 지원되지 않는 SFDP 호환 플래시 메모리 칩과 함께 도서관이 작동하도록하려면 'Spimemory.h'에서 '//#define use_sfdp'를 타락해야합니다.
라이브러리에는 기본적으로 오버 플로우가 활성화되어 있습니다. 즉, 마지막 주소에서/to, 모든 함수에서 읽은 마지막 주소가 0xfffff 인 경우 다음 주소는 읽기/~ 0x00000입니다. #define DISABLEOVERFLOW in spimemory.h에서 비활성화하여 비활성화 할 수 있습니다. (주소 오버 플로우는 읽기 / 쓰기 기능에만 작동합니다. 지우기 함수는 오버플로에 관계없이 정해진 블록 / 섹터 만 지우는 것입니다.)
모든 쓰기 기능에는 기본적으로 오류 확인이 켜져 있습니다. 즉, 플래시 메모리에 작성된 모든 바이트는 Arduino에 저장된 데이터에 대해 확인됩니다. 더 큰 쓰기 속도가 필요한 사용자는 모든 쓰기 기능에서 Noerrchk에 옵션의 마지막 'ErrorCheck'인수를 설정 하여이 기능을 비활성화 할 수 있습니다. writeByte(address, *data_buffer, NOERRCHK) 대신 함수 writeByte(address, *data_buffer) 를 호출하십시오.
라이브러리는 SPIFram fram(csPin*) 생성자를 선언하여 'FRAM'을 선택한 사용자 생성자로 대체 할 수 있고 'CSPIN'은 FRAM 모듈의 칩 선택 핀입니다.
* 선택 사항. 보드에 기본 슬레이브 선택 핀을 사용하는 경우 CSPIN을 포함하지 마십시오.
라이브러리의 모든 버전> = v3.0.0은 여러 SPI 인터페이스를 사용하는 기능을 지원합니다 (마이크로 컨트롤러가 지원하는 경우). 다른 SPI 인터페이스를 사용하도록 전환하는 것은 SPIFram fram(csPin, &SPI1); SPIFram fram(csPin) 대신 (또는 SPI2 등).
* 참고 : 현재 SAMD 및 STM32 아키텍처에서만 공식적으로 지원됩니다.
또한 void setup() 에 fram.begin(CHIPSIZE*) 포함시켜야합니다. 이를 통해 라이브러리는 설치된 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)모든 쓰기 명령은 이전 버전의 라이브러리에서 옵션 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 | 당신은 RAM에서 낮게 달리고 있습니다. 더 나은 RAM 사용을 위해 코드를 최적화하십시오 |
| 0x09 | 작업 중단/재개 할 수 없습니다. 문제를 제기하십시오. |
| 0x0A | 쓰기 기능이 실패했습니다. 문제를 제기하십시오. |
| 0x0b | 배선을 확인하십시오. 플래시 칩은 응답하지 않습니다. |
| 0x0c | 이 기능은 메모리 하드웨어에서 지원하지 않습니다. |
| 0x0D | 4 바이트 주소를 활성화 할 수 없습니다. 문제를 제기하십시오. |
| 0x0E | 4 바이트 주소를 비활성화 할 수 없습니다. 문제를 제기하십시오. |
| 0x0f | 칩은 현재 전원이 켜져 있습니다. |
| 0x10 | 플래시 칩은 SFDP를 지원하지 않습니다. |
| 0x11 | Chip의 지우기 매개 변수를 읽을 수 없습니다. 라이브러리 기본값으로 되돌아갑니다. |
| 0x12 | 플래시 메모리에서 지우기 시간을 읽을 수 없습니다. 라이브러리 기본값으로 되돌아갑니다. |
| 0x13 | 플래시 메모리에서 프로그램 시간을 읽을 수 없습니다. 라이브러리 기본값으로 되돌아갑니다. |
| 0x14 | 사용자 정의 SPI 배열에 정의 된 칩 선택 핀 없음. 사용자 정의 SPI 핀 사용 방법에 대한 정보는 생성자에 대한 섹션을 참조하십시오. |
| 0xfe | 알 수없는 오류. 문제를 제기하십시오. |