FatFS na PIC32 - zagadka

Jak wcześniej pisałem - próbuję uruchomić FatFS na PIC32. Na AVR-ach nie miałem najmniejszego problemu z tą biblioteką, tutaj za chwilę osiwieję...

Nic nie działa jak powinno, a w sposobie hmm... niedziałania nie mogę się doszukać żadnej logiki, która dałaby mi jakiś punkt zaczepienia przy debugowaniu problemu.

1) Komunikacja po SPI najwyraźniej działa. Funkcja disk_initialize(0) przy każdym wywołaniu zwraca FR_OK. No chyba, że w slocie nie ma karty - wtedy otrzymuję FR_NOT_READY. Czyli wszystko tak, jak być powinno. Niektóre karty zwracają co prawda FR_DISK_ERR, ale to pomijam, bo dokładnie z tymi samymi egzemplarzami miałem także problem na AVR-ach i szukanie przyczyny pozostawiam na później. Fakt, że inicjacja karty kończy się komunikatem FR_OK świadczy o tym, że mikrokontroler potrafi się dogadać z kartą. 2) O tym, że między dwoma urządzeniami występuje przepływ danych świadczy też wynik badania analizatorem stanów logicznych. wyraźnie widać pracę linii CS, SCK, MISO i MOSI. 3) Problem zaczyna się nieco później. Próba odczytania kilku sektorów z karty za pomocą disk_read(0, bufor, 1, 5) kończy się zwróceniem RES_ERROR. Analizator stanów pokazuje, że po wywołaniu tej komendy występuje szybka komunikacja pomiędzy tymi urządzeniami. Pomyślałem, że może SPI pracuje za szybko dla karty, jednak przestawienie interfejsu na wolną transmisję nic nie zmieniło. 4) Funkcje wyższego poziomu nie działają, albo nie działają jak powinny. f_mkfs() zwraca za każdym razem błąd FR_DISK_ERR, a f_mount() FR_NO_FILESYSTEM. No może nie za każdym razem - jeszcze parę dni temu od czasu do czasu (dość rzadko i raczej losowo) obserwowałem przypadki "zaskakiwania" systemu plików - na karcie pojawiał się plik, do którego były zapisywane dane. 5) Wypróbowałem kilka różnych modułów ze slotem na karty SD i micro SD. W tym jeden zlutowany samodzielnie. Poprawność połączeń stwierdziłem kilkadziesiąt razy. Ktoś ma jakiś pomysł co do możliwej przyczyny? CO jeszcze mogę sprawdzić?

Port SPI jest iicjowany z następującymi ustawieniami: SpiChnOpen(SPI_CHANNEL2,SPI_OPEN_MSTEN|SPI_OPEN_CKP_HIGH|SPI_OPEN_SMP_END|SPI_OPEN_MODE8,142);

Reply to
Atlantis
Loading thread data ...

Aha, żeby nie było - karta zasilana jest przez port LC (22uH, 1uF), a wszystkie linie interfejsu SPI są podciągnięte do VCC.

Reply to
Atlantis

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.