Skocz do zawartości

STM32 SPI zakłóca odczyt ADC? + pytanie o FATFS


Pomocna odpowiedź

Czesc,

udalo mi sie ostatnio napisac na blue pillu prosty voice recorder, ale przy odtwarzaniu nagrania slyszalem mase stukow (mimo to glos jest calkiem rozpoznawalny). Myslalem ze to moze byc problem z zasilaniem czy cos, ale zrzucilem sobie nagranie na program ala audacity i podejrzenie o stuki padlo na SPI. Jezeli chodzi o kod to uzywam ADC z czestotliwoscia 16kHz i wypelniam bufor o rozmiarze 512. Jak bufor jest pelny robie zapis do karty SD za pomoca biblioteki FATFS( ktorej nie jestem pewien czy uzywam poprawnie), wszystko wygenerowane w CUBEMX i zbudowane na plytce stykowej.

image.thumb.png.1275065a6ce62cfd28b7259e4e31747a.png

x = ~32ms ; y = ~64ms                  | 512/16kHz = 0.032 s = 32 ms

Nagrałem dzwiek fali sinus z glosnikow i zauwazylem ze te zaklocenia troche oddaja to co sie dzieje u mnie w kodzie, tam gdzie jest 1 na SS wyglada na to ze to jest moment gdy robie f_write do SD, a tam gdzie jest 2, dzieje sie znow f_write z kolejnym pelnym buforem + f_sync, ktory jak rozumiem robi flush danych (danych zapisanych wczesniej za pomoca f_write() ) do karty.

I teraz pytanko o FATFS.

Z tego co probowalem wyczytac z dokumentacji (http://elm-chan.org/fsw/ff/doc/write.html), for i wydebugowac, ta biblioteka tworzy w RAM mcu takie wirtualne odzwierciedlenie tego co jest w pliku na karcie SD w postaci  struktury FILE, i teraz jak robie f_write(bufor), to to sie nie przeklada na fizyczny zapis danych do karty za pomoca SPI, tylko na przeniesienie mojego bufora do bufora struktury FILE (czyli kopia z RAM do RAM), a fizyczny zapis do SD nastepuje dopiero po wywolaniu funkcji f_sync(). Wtedy to co jest w FILE.data[] leci po SPI do karty. Dobrze to rozumiem? Czy moze f_sync() uzywac co 10 albo 100 zapis zamiast co 2?

Z analizy obrazka z drugiej strony by wynikalo ze jezeli to zeczywiscie SPI tam tak miesza, to f_write() jednak dokonuje zapisu  po SPI do karty SD, tylko wtedy nie rozumiem czemu w 2 dzieje sie taki meksyk, f_sync() nie powinno miec nic do wypchniecia i zaklocenia nie powinny tam trwac dwa razy to co sie dzieje w 1.

 

Ostatecznie pytanko, czy da sie te zaklocenia ogolnie jakos wyeliminowac sprzetowo?

 

Piąteczka

Edytowano przez arasu
Link to post
Share on other sites
5 godzin temu, arasu napisał:

udalo mi sie ostatnio napisac na blue pillu prosty voice recorder, ale przy odtwarzaniu nagrania slyszalem mase stukow (mimo to glos jest calkiem rozpoznawalny). Myslalem ze to moze byc problem z zasilaniem czy cos, ale zrzucilem sobie nagranie na program ala audacity i podejrzenie o stuki padlo na SPI.

@arasu czy masz możliwość przetestowania tego programu na innej płytce? Jakość i oryginalność mikrokontrolerów na płytkach typu blue pill nie jest zbyt wysoka. Taki problem może wynikać m.in. z problem z samym mikrokontrolerem. Dla pewności warto byłoby to wykluczyć. Tak samo sprawdź czy to nie kwestia z samym zasilaniem płytki - może pojawia się jakiś chwilowy większy pobór prądu, który wprowadza takie zakłócenia?

  • Lubię! 1
Link to post
Share on other sites

Może po prostu, gdy dokonuje się zapis to procesor i karta SD pobierają więcej prądu i zakłócają tor analogowy?
Ja bym dolutował kondensatory ceramiczne 100nF-1uF na liniach zasilania i zobaczył co wtedy.

  • Lubię! 2
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.