stm32 - dithering pwm pres dma, dotaz...
Miroslav Mraz
mrazik na volny.cz
Čtvrtek Leden 2 17:05:17 CET 2020
V textu
Dne 02. 01. 20 v 16:29 Vojtěch Petrucha napsal(a):
> vzpominam si, ze jste to tu zminoval, mam to i nekde ulozene, akorat
> fakt nevim kde...
>
> ten princip ST apnote je myslim docela pochopitelny hned z toho prvniho
> obrazku v apnote pdf. je to takove "brute force" ktere prida do spektra
> nejake breberky na nizsich frekvencich nez je zakladni f pwm..
>
> ohledne Vaseho kodu, budu si muset rozmyslet co to vlastne dela. prvni
> pohled - ma tam byt v te funkci v preruseni opravdu resample = 0; - to
> by pak ten prvni if nedaval smysl?
resample je statická proměnná, takže se na 0 inicializuje jen při
startu. Ono to tam spíš mate, protože to bylo použito pro audio v
telefonní kvalitě, tedy základní vzorkování 8kHz. A protože se tato
frekvence dala jen blbě odfiltrovat, použil jsem pro PWM opakovací
frekvenci 16kHz, proto je tam to převzorkováni, dá se to vyhodit.
Podstatou je přetékající čítač (unsigned, zde sigma) z něhož používáme
pro PWM horních několik (8) bitů a přičítáme každý vzorek tak, aby to
bylo bezznaménkové číslo. Prostě jako sigma-delta převodník, ten ale
místo horních 8. bitů používá jediný.
Já se spíš divím, že tenhle jednoduchý princip ještě nikoho nenapadlo
implementovat přímo v hardware timeru. Stačí na to jen jediná sčítačka -
akumulátor.
Mrazík
Další informace o konferenci Hw-list