Witam.
Mam taki problem że funkcja f_write zapisuje mi poprawnie jednorazowo tylko do 512B danych.
Przykładowe wywołanie:
fresult = f_write( &plik, ( const void * ) &Audio_L[Audio_L_pos_RD], 512, &zapisanych_bajtow );
Funkcja nie zwraca błędu a zmienna zapisanych_bajtow przyjmuje wartość 512.
Gdy zmienię na 1024 to jest podobnie. Brak błędu i zapisanych_bajtow = 1024.
Czyli niby wszystko ok. Ale jednak w pliku mam krzaki, i to dość nietypowe. Bo pierwsze 512B są zawsze zapisane poprawnie a krzaki są dopiero później.
Czyli jak zrobię zapis 1024B to mam 512B dobrych danych i 512B krzaków, a jak dam zapis 2048B to mam 512B dobrych danych i 1536B krzaków.
I nie wiem jak namierzyć problem. Myślałem że może coś jest przekazywane przez stos, więc go zwiększyłem. Nic się nie zmieniło.
W ustawieniach FatFS jest takie coś:
Jednak to chyba jest ustawienie bloków systemu plików, a nie rozmiaru fizycznych bloków na karcie SD. Więc nie powinno to mieć znaczenia.
Używam tego na procesorze STM32F439 i zapis realizuję przez SDIO. Jedyny przykład dla SDIO jaki znalazłem był na HALu, a że go mocno nie lubię to mocno zedytowałem projekt żeby użyć z HALa tylko tego co jest konieczne (a na przyszłość chcę to wywalić całkowicie robiąc konfigurację na rejestrach).
W załączniku daję uproszczony na maxa projekt w którym ciągle występuje problem. Problem występuje na różnych kartach SD.
Ma ktoś pomysł co może być problemem? Albo co sprawdzić żeby namierzyć ten problem?
Mam taki problem że funkcja f_write zapisuje mi poprawnie jednorazowo tylko do 512B danych.
Przykładowe wywołanie:
fresult = f_write( &plik, ( const void * ) &Audio_L[Audio_L_pos_RD], 512, &zapisanych_bajtow );
Funkcja nie zwraca błędu a zmienna zapisanych_bajtow przyjmuje wartość 512.
Gdy zmienię na 1024 to jest podobnie. Brak błędu i zapisanych_bajtow = 1024.
Czyli niby wszystko ok. Ale jednak w pliku mam krzaki, i to dość nietypowe. Bo pierwsze 512B są zawsze zapisane poprawnie a krzaki są dopiero później.
Czyli jak zrobię zapis 1024B to mam 512B dobrych danych i 512B krzaków, a jak dam zapis 2048B to mam 512B dobrych danych i 1536B krzaków.
I nie wiem jak namierzyć problem. Myślałem że może coś jest przekazywane przez stos, więc go zwiększyłem. Nic się nie zmieniło.
W ustawieniach FatFS jest takie coś:
Kod: C / C++
Jednak to chyba jest ustawienie bloków systemu plików, a nie rozmiaru fizycznych bloków na karcie SD. Więc nie powinno to mieć znaczenia.
Używam tego na procesorze STM32F439 i zapis realizuję przez SDIO. Jedyny przykład dla SDIO jaki znalazłem był na HALu, a że go mocno nie lubię to mocno zedytowałem projekt żeby użyć z HALa tylko tego co jest konieczne (a na przyszłość chcę to wywalić całkowicie robiąc konfigurację na rejestrach).
W załączniku daję uproszczony na maxa projekt w którym ciągle występuje problem. Problem występuje na różnych kartach SD.
Ma ktoś pomysł co może być problemem? Albo co sprawdzić żeby namierzyć ten problem?