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