W tym artykule przyjrzymy się, jak zapisywać i czytać z pamięci flash za pomocą Arduino na przykładzie mikroukładu 25L8005.
Niezbędny
- - układ pamięci flash z obsługą SPI;
- - adapter do pamięci lub panelu z zerowym wzmocnieniem (panel ZIF);
- - Arduino;
- - komputer;
- - przewody łączące.
Instrukcje
Krok 1
Najpierw musimy to zrobić, aby móc łatwo podłączyć się do mikroukładu. Aby to zrobić, możesz użyć specjalnego adaptera, do którego musisz przylutować mikroukład, lub (co jest preferowane) użyć panelu o zerowym wzmocnieniu (tzw. Panel ZIF).
Krok 2
Teraz skompletujmy schemat elektryczny podłączenia układu pamięci flash do Arduino. Do programowania pamięci wykorzystamy interfejs SPI, więc połączymy się ze standardowymi pinami:
- CS - cyfrowy pin 10, - MOSI - cyfrowy pin 11, - MISO - cyfrowy pin 12, - SCK - cyfrowy pin 13.
Krok 3
Przed zapisaniem danych do pamięci należy skasować sektor lub stronę, do której będziemy pisać. Jeśli nie ma zbyt wiele danych do zapisania (w naszym przykładzie z samouczka będzie to tylko 16 bajtów), wystarczy skasować 1 sektor. Z dokumentacji mikroukładu widzimy, że sekwencja kasowania jest następująca: ustaw uprawnienie do zapisu (1 bajt), wyślij polecenie kasowania (1 bajt) i adres (3 bajty), ustaw zakaz zapisu (1 bajt). To jest dokładnie to, co robi powyższy szkic. Załadujmy go do Arduino. Po zakończeniu szkicu dysk flash jest gotowy do nagrywania.
Krok 4
Teraz zapiszmy dane. Weźmy jako przykład małą tablicę 16 bajtów. Jak widać z dokumentacji, najpierw należy ustawić uprawnienia do zapisu (1 bajt), następnie wysłać polecenie zapisu (1 bajt), adres startowy (3 bajty) i dane (w naszym przykładzie 16 bajtów), na adres koniec ustaw zakaz zapisu (1 bajt).
Prześlij szkic do Arduino. Po wykonaniu tego szkicu nasza tablica testowa powinna zostać zapisana do pamięci flash. Sprawdźmy, czy tak jest.
Krok 5
Napiszmy szkic, aby odczytać 16 bajtów z pamięci flash. Załadujmy go do Arduino i otwórzmy monitor portu szeregowego. W monitorze zgodnie z oczekiwaniami nasza tablica odczytana z pamięci za pomocą Arduino będzie wyświetlana 1 raz na sekundę.