Faça o download do último lançamento estável daqui. Por favor, relate quaisquer bugs nos problemas.
Esta biblioteca Arduino é para uso com chips de memória Flash e Fram que se comunicam usando o protocolo SPI. Na sua forma atual, ele suporta identificar o chip Flash/Fram e seus vários recursos; alocação e gerenciamento de endereços automáticos; Escrever e ler vários tipos diferentes de dados, variando de valores de 8 bits a 32 bits (assinados e não assinados), carros alegóricos, cordas, matrizes de bytes/chars e estruturas de e para vários locais; setor, bloco e apagamento de chip; e desligando para a operação de baixa potência.
| Micro controladores | Placas de dev testadas com | Notas |
|---|---|---|
| ATMEGA328P | Arduino Uno, Arduino Micro, Arduino Fio, Arduino Nano | - |
| ATMEGA32U4 | Arduino Leonardo, Arduino Fio V3 | - |
| ATMEGA2560 | Arduino Mega | - |
| Atsamd21g18 (córtex ARM M0+) | Adafruit Feather M0, Adafruit Feather M0 Express, Adafruit Itsybitsy M0 Express | - |
| AT91SAM3X8E (ARM Cortex M3) | Arduino devido | - |
| 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 Coisa | - |
| Esp32 | Adafruit Esp32 Feather, Sparkfun Esp32 Coisa | A bordo da memória flash. Consulte a nota de rodapé £ abaixo. |
| Simblee | Sparkfun Simblee | - |
As placas £ esp32 geralmente têm um flash spi já conectado ao seu pino SS padrão, então o usuário precisa declarar explicitamente o pino ChipSelect que está sendo usado com o construtor
| Fabricante | Flash IC | Notas |
|---|---|---|
| Winbond | W25Q16BV W25Q64FV W25Q64JV W25Q80BV W25Q256FV | Deve funcionar com o w25qxxxbv, w25qxxxfv & Famílias W25qxxxjv |
| Microchip | SST25VF064C SST26VF016B SST26VF032B SST26VF064B | Deve trabalhar com as famílias SST25 e SST26 |
| CYPRESS/SPANSÃO | S25FL032P S25FL116K S25FL127S | Deve trabalhar com a família S25FL |
| Em semicondutor | LE25U40CMC | |
| Amic | A25L512A0 | |
| Micron | M25P40 | |
| ADESTO | AT25SF041 | |
| Macronix | MX25L4005 MX25L4005 | |
| Dispositivos giga | GD25Q16C | (Usado no Adafruit Itsybitsy M0 Express) |
| Fabricante | Flash IC | Notas |
|---|---|---|
| CYPRESS/SPANSÃO | FM25W256 | Deve trabalhar com a família FM25W |
A biblioteca é chamada declarando o construtor SPIFlash flash(csPin*) , onde 'flash' pode ser substituído por um construtor de usuário de escolha e 'cspin' é o pino de seleção do chip para o módulo Flash.
* Opcional. Não inclua CSPIN se usar o PIN de seleção de escravo padrão para sua placa.
Toda versão da biblioteca> = v3.0.0 suporta a capacidade de usar qualquer uma das várias interfaces SPI (se o seu microcontrolador os suportar). A mudança para usar outra interface SPI é feita chamando SPIFlash flash(csPin, &SPI1); (ou & spi2 e assim por diante), em vez de SPIFlash flash(csPin) .
* Nota: atualmente é suportada apenas nas arquiteturas SAMD e STM32.
Uma versão alternativa SPIFlash flash (SPIPinsArray) do construtor pode ser usada (apenas com a placa ESP32 a partir de agora) para permitir o uso de pinos SPI personalizados. SPIPinsArray deve ser uma matriz de 4 elementos contendo os números de pinos SPI personalizados (como números inteiros assinados - Int8_T) na seguinte ordem - SCK, MISO, MOSI, SS.
Certifique -se de incluir flash.begin(CHIPSIZE*) no void setup() . Isso permite à biblioteca detectar o tipo de chip flash instalado e carregar os parâmetros corretos.
* Opcional
A partir da v3.2.1, a descoberta do parâmetro SFDP é uma opção controlada pelo usuário. Para fazer com que a biblioteca funcione com os chips de memória flash compatíveis com SFDP que não são oficialmente suportados pela biblioteca, o usuário deve descomentar '//#define usa_sfdp' em 'spimemory.h'.
A biblioteca possui excesso de endereço ativado por padrão - ou seja, se o último endereço lido/escrito de/para, em qualquer função, for 0xfffff, então, o próximo endereço leia/escrito de/para IS 0x00000. Isso pode ser desativado por #define DISABLEOVERFLOW em espimemory.h. (O excesso de endereço funciona apenas para funções de leitura / gravação. As funções apagam apenas um número definido de blocos / setores, independentemente do transbordamento.)
Todas as funções de gravação têm a verificação de erros ativadas por padrão - ou seja, todos os bytes escritos na memória flash serão verificados com os dados armazenados no Arduino. Os usuários que exigem maiores velocidades de gravação podem desativar essa função definindo um argumento opcional do último 'ErrorCheck' em qualquer função de gravação para Noerrchk - para por exemplo. Chame a função writeByte(address, *data_buffer, NOERRCHK) em vez de writeByte(address, *data_buffer) .
A biblioteca é chamada declarando o construtor SPIFram fram(csPin*) , onde 'Fram' pode ser substituído por um construtor de usuário de escolha e 'cspin' é o pino de seleção do chip para o módulo FRAM.
* Opcional. Não inclua CSPIN se usar o PIN de seleção de escravo padrão para sua placa.
Toda versão da biblioteca> = v3.0.0 suporta a capacidade de usar qualquer uma das várias interfaces SPI (se o seu microcontrolador os suportar). A mudança para usar outra interface SPI é feita chamando SPIFram fram(csPin, &SPI1); (ou & spi2 e assim por diante), em vez de SPIFram fram(csPin) .
* NOTA: Atualmente, isso é apoiado apenas oficialmente nas arquiteturas SAMD e STM32.
Certifique -se de incluir fram.begin(CHIPSIZE*) no void setup() . Isso permite que a biblioteca detecte o tipo de chip Fram instalado e carregue os parâmetros corretos.
^ Atualmente na versão beta. Os métodos no Spifram não são finais e estão sujeitos a alterações nas próximas revisões.
A biblioteca permite as seguintes funções:
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)Todos os comandos de gravação têm apenas uma variável de endereço de 32 bits em vez do número opcional de página de 16 bits e variáveis de deslocamento de 8 bits nas versões anteriores da biblioteca (<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()NOTA: Se você não conseguir corrigir os erros, levante um problema aqui com os detalhes do seu chip flash e o que você estava fazendo quando ocorreu esse erro. Siga o modelo de problema que aparece no link
| Código de erro | Explicação |
|---|---|
| 0x00 | Função executada com sucesso |
| 0x01 | *constructor_of_choice*.begin() não foi chamado na void setup() |
| 0x02 | Não é possível identificar chip. Este chip é oficialmente apoiado? |
| 0x03 | Incapaz de identificar capacidade. Este chip é oficialmente apoiado? Caso contrário, defina uma constante CAPACITY e inclua -a no flash.begin(CAPACITY) . |
| 0x04 | Chip está ocupado. Verifique se todos os pinos foram conectados corretamente. |
| 0x05 | O excesso de página foi desativado e o endereço chamado excede a memória |
| 0x06 | Incapaz de permitir que a escrita chip. Certifique -se de que os pinos Hold & WriteProtect sejam puxados para o VCC. |
| 0x07 | Este setor já contém dados. Certifique -se de que os setores que estão sendo escritos sejam apagados. |
| 0x08 | Você está com pouca RAM. Otimize seu código para melhor uso da RAM |
| 0x09 | Não é possível suspender/retomar a operação. Por favor, levante um problema. |
| 0x0a | A função de gravação falhou com errorCheck. Por favor, levante um problema. |
| 0x0b | Verifique sua fiação. O chip flash não responde. |
| 0x0c | Esta função não é suportada pelo hardware da memória. |
| 0x0d | Não é possível ativar o endereço de 4 bytes. Por favor, levante um problema. |
| 0x0e | Não é possível desativar o endereço de 4 bytes. Por favor, levante um problema. |
| 0x0f | O chip está atualmente desligado. |
| 0x10 | O chip flash não suporta SFDP. |
| 0x11 | Não é possível ler parâmetros de apagar a partir do chip. Revertendo para os padrões da biblioteca. |
| 0x12 | Não é possível ler os tempos de apagar a partir da memória flash. Revertendo para os padrões da biblioteca. |
| 0x13 | Não é possível ler os horários do programa da memória flash. Revertendo para os padrões da biblioteca. |
| 0x14 | Nenhum pino de seleção de chip definido na matriz SPI personalizada. Consulte a seção sobre o construtor para obter informações sobre como usar pinos SPI personalizados. |
| 0xfe | Erro desconhecido. Por favor, levante um problema. |