Mam urządzenie zbudowane na STM32F107 (to samo, które opisywałem w kilku poprzednich postach). Jest ono wyposażone w dwie możliwości podłączenia pamięci masowych: slot kart microSD oraz gniazdo USB do podłaczenia PenDrive'a. Karta micorSD pracuje na magistrali SPI. FatFS jest skonfigurowany i do tej pory działał perfekcyjnie z PenDrive'ami (dysk 0:). Przeprowadziłem też parę testów z różnymi kartami microSD (dysk 1:), które też zdawały się pracować poprawnie.
Dzisiaj zainstalowałem w urządzeniu kartę SDXC 128GB SanDiska. Ma ona pełnić podwójną funkcję: z jednej strony magazynu na media odtwarzane przez urządzenie, z drugiej będą się na niej znajdowały pliki konfiguracyjne.
Po włączeniu zasilania system plików na karcie SD został zamontowany. Jednak przy próbie otwarcia pliku konfiguracyjnego został zwrócony błąd FR_NO_FILE, chociaż ścieżka była poprawna i plik znajdował się na karcie. Spróbowałem na próbę wyłączyć LFN i UTF w konfiguracji FatFS - nie pomogło. Przywróciłem w kodzie działanie w oparciu o PenDrive i momentalnie wszystko zaczęło działać.
Z ciekawości postanowiłem przeprowadzić eksperyment z inną kartą - starą
4GB, chyba nawet był to jakiś NoName. Ta karta nie tylko się zamontowała, ale też urządzenie bez problemu zaczęło otwierać i czytać zapisane na niej pliki konfiguracyjne.Tak więc sytuacja jest dziwna, bo:
- Karta SDXC przechodzi poprawnie inicjalizację.
- Karta jest poprawnie montowana.
- Przy próbie otwarcia pliku nie jest zwracany błąd wskazujący na jakiś problem z komunikacją lub systemem plików (np. FR_DISK_ERR, FR_INT_ERR albo FR_NOT_READY) ale błąd informujący, że pliku nie ma.
- Przy innej (mniejszej i dużo starszej) karcie problem magicznie znika.
- Nie chodzi też raczej o sam rozmiar nośnika albo konfigurację FatFS, bo przy identycznej konfiguracji bez problemu obsługiwany jest PenDrive
Ktoś kiedyś zetknął się z takim problemem?