Mam problem z rejestracją strumienia danych na karcie flash.
Chcę na bieżąco zapisywać strumień danych w dużej pamięci nieulotnej (logowanie danych pomiarowych). Maksymalnie ma to być 100kB/s (niby niedużo :)). Użyłem karty mikro SD (zwykłe uSD, Kingston, 1GB), z którą komunikuję się przez SPI (wiadomo, bo najprościej dla mikrokontrolera). Jednak ta sztuka mi się nie udaje - układ gubi dane. Zrobiłem kilka analiz szybkościowych i już wiem dlaczego. Zastosowana przeze mnie karta uSD w testach może zapisywać dane ze średnią prędkością dochodzącą do 130kB/s, niby OK, ale cały problem tkwi w czasie zapisu sektora w pamięci flash. Dla wspomnianej karty jest to max. _139ms_!!! (najszybciej sektor zaprogramował się w 2,6ms - zadziwiający rozrzut...). Kupiłem inną (jakiś no-name uSD, też 1GB) i tu nieco lepiej: bo min.
2,1ms, ale max. 86ms! W desperacji przetestowałem jeszcze 2 bardzo stare (ok. 4-5 lat) karty MMC (32MB i 128MB) - wyniki: min. czas zapisu sektora: 2,8ms., a max.: 6,6ms. Czyli stare MMC jest dużo lepsze i ma znacznie mniejszy rozrzut czasów (ale nie chciałbym ich stosować, bo chyba powoli wymierają - znikają z ofert sklepowych). Zbadałem jeszcze kartę CF (standardowa 1GB, Pretec) i tu podobnie: min. czas zapisu sektora: 1,35ms, ale max. 153ms.(!) Ten rozrzut czasów rozkłada mi układ. Mogę zbuforować 1, max.2 sektory (mikrokontroler TMS320LF2406A bez zewnętrznej pamięci), mam 2 karty uSD w systemie, żeby do nich zapisywać naprzemiennie, ale to wszystko za mało wobec czasu zapisu sektora rzędu >100ms.Zanim zainwestuję w nowoczesne odmiany kart klasy uSD Ultra, SD2.0, czy SDHC, albo CF -Ultra/Extreme/x333 itp. chciałbym się zapytać bardziej doświadczonych kolegów, czy to ma szansę powodzenia i czy uzyskam max. czas zapisu sektora nie większy niż 5...10ms?
Gdzie te 3, 5, czy 15MB/s, które widzę w parametrach kart? Czy to kwestia interfejsu SPI? (chyba nie, bo CF dawała podobne wyniki)
Może puścić się w równoległe flash'e? Mogłoby być szybciej, ale potrzebuję min. 320MB - tu problem, gdzie kupić tak duże kostki? (dlatego wybrałem karty flash)
Sorki, za przydługi tekst, ale chciałem opisać problem. Pozdrawiam, Qmexx.