(2) Mikrokontrolery MSP430: wprowadzenie do kursowego sprzętu (jak zacząć z MSP430 – zestaw MSP-EXP430FR5739)
W tabeli 2 prezentujemy porównanie parametrów pamięci FRAM, SRAM i Flash. Zapis danych do pamięci FRAM jest ponad 100 razy szybszy niż do pamięci Flash. Podczas zapisu danych do pamięci FRAM z prędkością 1,4 MB/s pobór prądu wynosi 720 µA. Zapis danych do pamięci Flash z prędkością 14 kB/s wymaga prądu o natężeniu 2200 µA. Ponieważ dane w pamięci FRAM zapisywane są 100 razy szybciej przy 3 razy mniejszym zużyciu energii to zysk energetyczny FRAM względem Flash jest 300-krotny.
Tab. 2. Porównanie parametrów pamięci FRAM, SRAM (seria FR57xx) z Flash (seria 2xx)
Parametr | FRAM | SRAM | Flash |
Maksymalna prędkość zapisu 1 bajta danych | 16 MB/s 62,5 ns | 48 MB/s 20,8 ns | 0,014 MB/s 71400 ns |
Maksymalna liczba cykli zapisu pamięci | 1015 | Nie dotyczy | 104 |
Pamięć nie ulotna | + | – | + |
Konieczność kasowania przed zapisem | – | – | + |
Swobodny dostęp | + | + | – |
Zamontowanie pamięci FRAM w mikrokontrolerze całkowicie zmienia podejście do tworzenia aplikacji. Dotychczas najczęściej stosowany był schemat, w którym zmienne programu (również stos i sterta) umieszczane były w pamięci SRAM mikrokontrolera. Kod programu wgrywany był do pamięci Flash/ROM mikrokontrolera. Dane konfiguracyjne programu, oraz dane rejestrowane (próbki loggera, zdarzenia) przechowywane były w pamięci FLASH mikrokontrolera, albo na zewnętrznym nośniku pamięci (np.: dołączona do mikrokontrolera karta SD/MMC, czy też kość pamięci Flash/EEPROM). Teraz pisząc oprogramowanie zmienne, kodu programu, oraz dane można umieścić w zamontowanej w procesorze pamięci FRAM. Dodatkowo pamięć można podzielić na partycje (zmienne, program, dane), a rozmiar partycji można dynamicznie zmieniać w trakcie działania programu. Kiedy przyjrzymy się współczesnym mikrokontrolerom zauważymy prawidłowość, że stosunek pamięci SRAM do Flash/ROM jest jak 1:4, 1:8, 1:16.
Rys. 6. Pamięć FRAM w MSP430 można swobodnie konfigurować, dzieląc ją pomiędzy część przeznaczoną na kod i dane
W przypadku, gdy w projekcie potrzebujemy układu, który będzie miał 1 kB pamięci SRAM (zmienne, stos, sterta), a rozmiar kodu wynikowego programu wynosi 2 kB, to niestety zamiast „małego” i taniego układu będziemy zmuszeni zamontować „duży” i drogi (np.: 1 kB SRAM, 16 kB Flash). W przypadku mikrokontrolerów z pamięci FRAM taki problem nie istnieje (możemy dowolnie dzielić dostępną pamięć FRAM – jak to pokazano na rysunku 6). Zastosowanie w mikrokontrolerach uniwersalnej pamięci FRAM „do wszystkiego” to spełnienie marzeń każdego konstruktora.
Pamięć FRAM w MSP430FR5739
Pamięcią FRAM w MSP430FR5739 zarządza moduł RFCTL (FRAM Controller), którego schemat blokowy pokazano na rysunku 7. Dostęp do pamięci może być 8- bądź 16-bitowy (bajt/słowo). Operacja zapisu nie wymaga wcześniejszego kasowania komórki pamięci (w pamięci Flash można zmienić poziom logiczny z „1” na „0”. Zmiana z „0” na „1” wymaga wcześniejszego skasowania całego sektora pamięci, którego wielkość w MSP430 wynosi 512 B. W momencie przerwania zapisu do pamięci (zanik zasilania), dane (bajt/słowo) zapisywane są poprawnie. Kontroler pamięci wyposażono w mechanizm wykrywania i korekty błędów zapisu do pamięci (ECC – Error Correction Code). Jeśli wystąpił błąd, który można skorygować, dane w pamięci są poprawiane i ustawiana jest flaga przerwania CBDIFG. Wystąpienie błędu, którego nie można poprawić powoduje ustawienie flagi przerwania UBDIFG. Obie flagi można „przechwycić” i w procedurze obsługi przerwania zareagować na błąd zapisu do pamięci.
Rys. 7. Schemat blokowy kontrolera pamięci FRAM w mikrokontrolerach MSP430
Integralną część modułu FRCTL stanowi układ MPU (Memory Protection Unit). Korzystając z układu MPU możemy podzielić pamięć FRAM mikrokontrolera na sektory i nadać im prawa dostępu: wykonanie, tylko odczyt, odczyt/zapis (po starcie mikrokontrolera MPU jest wyłączony, a pamięć FRAM ma prawa odczyt + zapis + wykonanie). W momencie niedozwolonego dostępu do pamięci (np.: próba zapisu danych do sektora z prawami tylko do odczytu), ustawiana jest flaga przerwania informująca o zaistniałym zdarzeniu (można w taki sposób skonfigurować MSP430FR5739, aby naruszenie praw dostępu do pamięci wywoływało restart mikrokontrolera).
Firmy Texas Instruments oraz Mouser przygotowały i bezpłatnie udostępniają książki „Texas Instruments FRAM MCUs for dummies”, które można zamówić pod adresem http://pl.mouser.com/framfordummies/. |
Maksymalna prędkość dostępu do pamięci FRAM (odczyt/zapis) wynosi 8 MHz. Transmitując dane 16-bitowe (2 bajty), oraz korzystając z mechanizmu DMA możemy uzyskać prędkość transferu danych równą 16 MB/s.
Dopuszczalna liczba cykli zapisu pamięci FRAM wynosi 1 biliard (1015). Trzeba jednak pamiętać, że odczyt komórki pamięci wiąże się z jej ponownym zapisem (odczyt zużywa pamięć). Przykładowo, gdyby komórka pamięci była odczytywana z częstotliwością 1 MHz, to uległa by zużyciu po około 3 latach. W praktyce taka sytuacja jest mało prawdopodobna. Energooszczędne aplikacje (a w takich stosowane są MSP430) przez większość czasu swojego działania przebywają w trybie uśpienia. Uwzględniając to założenie inżynierowie z Texas Instruments przeprowadzili obliczenia z których wynika, że wytrzymałość pamięci FRAM sięga 80 lat użytkowania.