Sugestie dotyczące pamięci dla MSP430

9

Tworzę aplikację pomiarową za pomocą TI MSP430 i chciałbym usłyszeć sugestie dotyczące tego, jakiego rodzaju pamięci mogę użyć.

Chodzi o to, aby użyć go do logowania przez określony czas, a następnie pobrać dane na komputer, gdy urządzenie jest podłączone przez USB. Szacuje się, że pomieści do 5 MB danych, przy czym każda próbka ma około 25 bajtów danych.

Czy wystarczy prosty układ EEPROM, czy może jest coś lepszego?

Padu Merloti
źródło
1
Wygląda na to, że urządzenie będzie zasilane przez większość czasu, gdy masz prawidłowe dane. Czy zatem pamięć SRAM z podtrzymaniem bateryjnym nie jest bardziej odpowiednia niż pamięć EEPROM (lub lepsza, Flash)?
Federico Russo,

Odpowiedzi:

7

Użyłem AT45D serię chipów szeregowych flash. Posiadają wewnętrzny bufor SRAM do konfiguracji strony do kasowania / programowania. Interfejs SPI do wczytywania i wyprowadzania danych.

Robert
źródło
5

5 MB to dużo danych do przechowywania. Odczyt to przez USB oznacza, że ​​używasz jednej z nowych części z wbudowanym interfejsem urządzenia USB. Jeśli nie, będziesz używać konwertera USB na szeregowy (FTDI lub podobny) i będzie ograniczony do asynchronicznego portu szeregowego szybkości przesyłania danych do odczytu danych.

Czy rozważałeś podłączenie karty pamięci SD do MSP, przechowywanie w niej danych, a następnie przeniesienie karty do komputera w celu odczytania zapisanych danych. Nie napisałem interfejsu do tego urządzenia, ale jest ich wiele.

uɐɪ
źródło
Tak, zamierzam użyć jednej z części z wbudowanym USB. Idealne byłoby użycie protokołu MSC, ale to bardzo komplikuje mój projekt. Prawdopodobnie zadowolę się szybkościami przesyłania danych HID. Myślałem o kartach SD, ale to dodatkowo komplikuje obudowę, ponieważ musi być odporna na zachlapanie wodą.
Padu Merloti,
2
Proponuję tę trasę, ponieważ karty SD zapewnią ci najwięcej miejsca do przechowywania. Mówisz teraz 5 MB, ale jeśli chcesz więcej później, przekraczasz limity szeregowej pamięci flash (i jesteś znacznie powyżej limitów pamięci EEPROM). Jeśli problemem jest wodoodporność (i masz odpowiednią opcję USB, która wydaje się mieć miejsce), możesz odczytać kartę SD przez USB i włożyć ją na stałe do obudowy. Widziałem kilka projektów, które przylutowały kartę SD do płyty (uwaga: działało, ale nie polecam).
Kevin Vermeer
Rozumiem, ma sens. Rozważę tę opcję. Dzięki
Padu Merloti,
Czy istnieje specjalistyczny układ, który zajmuje się interfejsem SD i implementuje system plików, czy też nadal musiałbym implementować system plików i klasę MSC za pomocą MSP430?
Padu Merloti,
@Padu - czułem, że potrzebuje trochę więcej miejsca i formatowania niż komentarz, więc dodałem swoją odpowiedź jako odpowiedź.
Kevin Vermeer
3

Błysk szeregowy jest lepszy od EEPROM w tej aplikacji. Atmel stanowi świetny skład . Twój wybór będzie zależeć w dużej mierze od dwóch rzeczy: (1) Konieczności edycji / sektora dzienników na mikro i (2) Dostępność pamięci RAM na MSP430.

Flash, w przeciwieństwie do EEPROM, może być zapisywany tylko z 1 na 0. Zmiana danych z 0 na 1 wymaga usunięcia części części, która zazwyczaj jest dostępna tylko dla stron lub bloków danych. Musisz buforować tę stronę do pamięci RAM, usunąć stronę, dokonać edycji w pamięci RAM, a następnie zapisać ją z powrotem, jeśli chcesz coś zmienić.

Jak już wspomniano, seria AT45D oferuje szereg części, które mają bufory pamięci RAM na układzie, aby ułatwić ten proces bez użycia pamięci RAM na mikrokontrolerze.

Ostatecznie cała seria jest kompatybilna z pinami, więc po prostu odłóż 8-SOIC (150mil), a następnie możesz wymienić części, jeśli później będziesz potrzebować różnych opcji.

Kevin Vermeer
źródło
Zgadzam się z tym, co mówisz, ale możesz po prostu skopiować dane ze źródłowej strony flash na docelową stronę flash, modyfikując bajty, które chcesz zmienić przed skasowaniem źródła.
mjh2007
@mjh - Co jeśli twoje źródło i miejsce docelowe są takie same i / lub nie masz darmowej strony? Jest to również powolne: wyślij polecenie odczytu, wyślij adres, przeczytaj bajt, zmień w razie potrzeby, usuń, wyślij polecenie zapisu, wyślij adres, napisz bajt, powtórz x256, x512 lub x4k. Inną opcją jest wysłanie polecenia odczytu, wysłanie adresu odczytu, zegara dla N cykli, zmodyfikowanie bajtów, które chcesz zmienić, usunięcie, wysłanie polecenia zapisu, wysłanie adresu zapisu, zegar dla N cykli. Zajmuje to około 1/3 czasu potrzebnego na bufor RAM.
Kevin Vermeer
Dlaczego rejestrator danych miałby kiedykolwiek edytować dzienniki na karcie micro?
davidcary,
@davidcary - Jeśli twój rejestrator danych robi tylko jeden długi strumień bajtów, masz rację - nigdy nie będziesz musiał wprowadzać zmian. Jeśli ma kilka konfiguracji lub plików dziennika, które mogą przekraczać granice strony / bloku, lub jeśli chcesz wprowadzić zmiany w nagłówku pliku, musisz edytować pamięć bez wymazywania istniejących danych.
Kevin Vermeer
W tym momencie muszę tylko utworzyć kilka plików dziennika, nie trzeba ich modyfikować, z wyjątkiem sytuacji, gdy użytkownik podłącza urządzenie do USB i pobiera je, a następnie muszę usunąć (lub ponownie udostępnić to miejsce) staremu dziennikowi.
Padu Merloti,
2

Sugerowałbym serię AT25D, ponieważ wydaje się nieco łatwiejsza w użyciu niż AT45D. Chociaż jest nieco wolniejszy i nie oferuje tylu opcji przesyłania danych ani buforów SRAM. Ma tę zaletę, że jest tańszy i wciąż jest wystarczająco szybki dla większości aplikacji, takich jak rejestrowanie danych.

Jeśli potrzebujesz 5 MB danych, mało prawdopodobne jest, że pamięć EEPROM będzie działać, ponieważ zazwyczaj są one dostarczane w pakietach <1 Mb. Chipy Flash firmy Atmel obsługują do 64-bitów lub 8 MB.

mjh2007
źródło
1
Nie zgadzam się. Najmniejsza usuwalna sekcja w AT25D to strona 4kB, a niewiele mikrosów ma tyle dostępnej pamięci RAM. Użyłem serii układów AT25FS, które mają małe (256 bajtów) usuwanie strony, ale mają mniej niż 5 MB. Zastosowanie buforowanego systemu oznacza, że ​​nie musisz się tak bardzo martwić o zarządzanie pamięcią RAM. Oczywiście, jeśli nie musisz edytować swoich dzienników, seria AT25 będzie działać dobrze.
Kevin Vermeer
Tak, duże strony usuwania są denerwujące, gdy aplikacja musi napisać bajt, a następnie zmienić ten bajt. Ale dlaczego rejestrator danych miałby to robić? Wydaje mi się, że w przypadku aplikacji do rejestrowania danych nie ma znaczenia, czy najmniejsza usuwalna sekcja ma 256 bajtów lub 1 megabajt.
davidcary,
1

[Jest to odpowiedź na komentarze po odpowiedzi Iana].
Karta SD to tylko urządzenie SPI, więc nie jest potrzebny żaden układ / interfejs. Inne protokoły obejmują interfejs 2-przewodowy (jak I2C) i interfejs 4-przewodowy (ze złożonym CRC), ale najczęściej używany jest SPI.

Jest uwaga zastosowanie kart SD dostępne dla MSP430 z TI tutaj . Jest krótki, ale zawiera przykładowy kod. Obsługuje odczytywanie i zapisywanie w różnych sektorach na karcie SD, co może być wszystkim, czego nie chcesz, jeśli nie zamierzasz podłączać jej do komputera. Zobacz także implementacje Fousta (zalecane) lub Evansa z MSU.

Gdy będziesz mieć podstawowe funkcje do odczytu i zapisu sektora, możesz albo wyodrębnić prosty, niestandardowy system plików przez USB, albo użyć istniejącej biblioteki systemu plików. FatFS , EFSL lub DOSF to wszystkie opcje dla tego drugiego. Jeśli wdrożenie wszystkich wymaganych funkcji wydaje się zbyt trudne, pamiętaj, że wszystkie oprócz kilku mogą / będą skrótami.

Jednak system plików zostanie do pewnego stopnia wyodrębniony przez interfejs USB. Będzie to łatwiejsze, jeśli masz prawdziwą bibliotekę systemu plików, a twoja karta jest w czytelnym systemie plików, ale to wymaga pracy. Jeśli chcesz napisać własny „system plików” i zaoszczędzić pracę / czas / pamięć dla implementacji USB, możesz uczynić jego definicję tak prostą i nieelastyczną, jak log 1 zaczyna się od 0x0, log 2 zaczyna się od 0x10 0000, log 3 zaczyna się od 0x20 0000 i zaloguj 4 pod adresem 0x30 0000. Następnie możesz wysłać te dane przez USB.

Interfejs USB może być tak złożony, jak chcesz - od interfejsu szeregowego po urządzenie pamięci masowej.

Kevin Vermeer
źródło