- zastosowano pamięć FRAM typu FM24LC16B o pojemności 2 kB,
- zawiera zegar RTC z kalendarzem typu DS1338 z dołączoną baterią podtrzymującą jego zasilanie,
- komunikacja odbywa się poprzez magistralę I2C doprowadzoną do złącza zgodnego ze standardem Grove.
W module zastosowano pamięć FRAM typu FM24LC16B firmy Cypress/Infineon, której blokowy schemat wewnętrzny został pokazany na rysunku 1. Charakteryzuje się ona małym poborem prądu – 100 μA oraz wysoką liczbą cykli zapisu – 1014. Będzie przydatna w aplikacjach zapisujących większą ilość danych (konfigurację) np. podczas zaniku zasilania, gdy czas zapisu jest krytyczny dla aplikacji lub gdy chcemy zapisywać dane często, a zależy nam na długiej trwałości układu pamięci nieulotnej.
Budowa i działanie
Schemat minimodułu został pokazany na rysunku 2. Układ U1 to zegar RTC typu DS1338 z dołączoną baterią podtrzymującą jego zasilanie – BAT, typu CR1220. Oprócz funkcji zegara czasu rzeczywistego realizuje też kalendarz i dodatkowo daje do dyspozycji 56 bajtów pamięci RAM. Współpracuje z miniaturowym rezonatorem kwarcowym 32,768 kHz i zawiera zintegrowany układ klucza zasilania bateryjnego.
Układ U2 zawiera 2 kB pamięci FRAM. Komunikacja odbywa się poprzez magistralę I2C doprowadzoną do złącza zgodnego ze standardem Grove, co ułatwia połączenie z różnymi systemami uruchomieniowymi. Rezystory R1, R2 zapewniają właściwą polaryzację magistrali.
Montaż i uruchomienie
Moduł zmontowano na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3. Sposób montażu jest klasyczny i nie wymaga opisu. Dla szybkiego sprawdzenia działania moduł można podłączyć do magistrali I2C komputerka Raspberry Pi.
Posługując się biblioteką i2ctools, sprawdzamy obecność układów na magistrali (rysunek 4), za pomocą polecenia:
Pod adresem 0x68 znajduje się układ RTC DS1338, znaczenie poszczególnych rejestrów pokazuje fragment dokumentacji układu – rysunek 5.
Wpisując polecenie:
uzyskamy efekt kasowania liczników sekund, natomiast:
spowoduje uruchomienie oscylatora, z kolei polecenie:
pozwala na odczyt liczników sekund. Powtórzenie odczytu powinno skutkować aktualizacją stanu licznika sekund.
Skuteczniejszą metodą korzystania z RTC w przypadku Raspberry Pi jest użycie zgodnego z DS1307 drivera systemowego. Wymaga to wprowadzenia konfiguracji w pliku /boot/config.txt:
Po restarcie i ustawieniu aktualnej daty poleceniem:
można ją zapisać do RTC poleceniem:
i odczytać poprzez:
Sprawdzenie pamięci FRAM jest także możliwe przy użyciu poleceń i2cset/get. W celu zapisu bloku z adresu 0x50, w komórce 0x00, wartości 0xA0, wykonujemy polecenie:
Weryfikacja zapisu następuje poleceniem:
W efekcie powinna zostać odczytana wartość 0xA0.
Polecenie odczytu bloku to:
W podobny sposób odczytujemy i zapisujemy pozostałe banki pamięci. Jeżeli wszystko działa poprawnie, można moduł zastosować we własnej aplikacji.
Adam Tatuś, EP
- R1, R2: 4,7 kΩ SMD0603
- C1, C2: 0,1 μF SMD603
- C3: 10 μF SMD0603
- U1: DS1338U33 (MSOP8)
- U2: FM24CL16B (SO8)
- XT: rezonator kwarcowy 32,768 kHz
- BAT: podstawka KEYS1056 + bateria CR1220