Skocz do zawartości

Próbkowanie funkcji sine


michalt38

Pomocna odpowiedź

Potraktuj ten wzór jak wskazówkę. Nie widzę powodu dla którego miałoby tam być 0x1000 zamiast 0x0FFF tym bardziej, że jeśli poziomem zerowym DACa będzie 0x800 to do góry masz tylko 0x07FF przedziałów a do dołu 0x0800. Zakres jest niesymetryczny, bo jedną "działkę" zużywasz na zero.

Nie wiem do czego chcesz to wykorzystać (może napisz? - jesteśmy ciekawi), ale może nie ma znaczenia czy sinus będzie miał amplitudę dokładnie full scale DACa czy o 1 mniejszą. Na pewno nie powinien jej przekraczać bo w tej arytmetyce (bez nasycania) przepełnienia skutkują straszliwymi zniekształceniami sygnału. Inaczej niż w technice analogowej 🙂

Z resztą ST pokazało to od trochę dziwnej strony. Przecież zwykle w systemie przetwarza się sygnały bipolarne więc np. liczby z zakresu -32768..+32767 (albo w własnie w reprezentacji left-aligned -1..+1). Taka powinna być wewnętrzna reprezentacja sygnałów i taki sinus powinieneś gdzieś tam mieć. I tylko funkcja obsługująca bezpośrednio DACa powinna dopasowywać otrzymany sygnał do możliwości sprzętu a więc skalować przez współczynnik 1/16 i dodawać offset 2048.

Ale jak zwykle nie ma jednego słusznego rozwiązania więc można to zrobić na wiele sposobów.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.