Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2019:audio-resample

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2019:audio-resample [2020/01/20 17:55]
Filip Šterc [Implementace]
2019:audio-resample [2020/01/20 19:41] (aktuální)
Filip Šterc [Schéma zapojení]
Řádek 52: Řádek 52:
 ===== Schéma zapojení ===== ===== Schéma zapojení =====
  
-signál ​ze zvukové karty počítače je v napěťovém rozmezí (-1 - 1) V. Použitý procesor však zvládá zpracovávat pouze kladná napětí, proto je třeba úroveň signálu nejdříve zvednout nad zem. Toto lze snadno vyřešit pomocí sériového kondenzátoru a napěťového děliče, který úroveň signálu posune na úroveň poloviny napájecího napětí 3V.+Signál ​ze zvukové karty počítače je v napěťovém rozmezí (-1 - 1) V. Použitý procesor však zvládá zpracovávat pouze kladná napětí, proto je třeba úroveň signálu nejdříve zvednout nad zem. Toto lze snadno vyřešit pomocí sériového kondenzátoru a napěťového děliče, který úroveň signálu posune na úroveň poloviny napájecího napětí 3V.
  
 {{2019:​sch_xsterc02.png?​500}} {{2019:​sch_xsterc02.png?​500}}
  
-Při výběru hodnot kondenzátoru,​ je třeba brát ohled na frekvenci signálu. Pro signál se toto zapojení jeví jako filtr horní propusti s odpory zapojenými paralelně, proto pro vybrané hodnoty je mezní frekvence f<​sub>​mez</​sub>​ = 1/​(2*pi*0,​5R*C) = 28,9 Hz. Pro člověka je slyšitelný pouze zvuk v rozmezí 16 Hz - 20 kHz, tudíž kromě malé krajní oblasti mezi (16 - 29) Hz, slyšitelný signál může projít beze změny. ​¨+Při výběru hodnot kondenzátoru,​ je třeba brát ohled na frekvenci signálu. Pro signál se toto zapojení jeví jako filtr horní propusti s odpory zapojenými paralelně, proto pro vybrané hodnoty je mezní frekvence f<​sub>​mez</​sub>​ = 1/​(2*pi*0,​5R*C) = 28,9 Hz. Pro člověka je slyšitelný pouze zvuk v rozmezí 16 Hz - 20 kHz, tudíž kromě malé krajní oblasti mezi (16 - 29) Hz, slyšitelný signál může projít beze změny. ​
  
 ===== Implementace ===== ===== Implementace =====
Řádek 83: Řádek 83:
     float sum;     float sum;
     uint16_t out;     uint16_t out;
- uint16_t readBuf;+    ​uint16_t readBuf;
  
- for(uint16_t i = 0; i < DAC_BUFFER_LEN*2;​ i+=2){ ​       //​inkrementování read pointeru +2 pro decimaci 2*+    ​for(uint16_t i = 0; i < DAC_BUFFER_LEN*2;​ i+=2){ ​       //​inkrementování read pointeru +2 pro decimaci 2*
         sum = 0;         sum = 0;
         out = 0;         out = 0;
-        readBuf = i + 246; //uložení ukazatele pro ctení+        readBuf = i + 246;     ​//uložení ukazatele pro ctení
  
-        for(uint8_t j = 0; j < FIR_LENGTH; j++){ //​rekonstrukce interpolovaného signálu+        for(uint8_t j = 0; j < FIR_LENGTH; j++){            //​rekonstrukce interpolovaného signálu
             sum += upsample_buffer[readBuf-j]*fxcoef[j];​             sum += upsample_buffer[readBuf-j]*fxcoef[j];​
         }         }
  
-        if(sum > 4095){                         ​//​prevedení na 32 bit hodnotu požadovanou DAC, se saturací+        if(sum > 4095){                     ​//​prevedení na 32 bit hodnotu požadovanou DAC, se saturací
             out = 4095;             out = 4095;
         }else if(sum < 0){         }else if(sum < 0){
Řádek 102: Řádek 102:
         }         }
         dac_buffer[dac_buff_side*DAC_BUFFER_LEN + (i>>​1)] = out;         dac_buffer[dac_buff_side*DAC_BUFFER_LEN + (i>>​1)] = out;
- }+    ​}
  
 } }
 </​code>​ </​code>​
 +
 +===== Video =====
 +Na následujícím videu je ukázána funkčnost tohoto projektu při zpracování signálu o frekvenci 1 kHz. Na osciloskopu jsou zobrazeny signály od vrchu dolů:\\ CH3 - vstupní signál na pinu PA1,\\ CH1 - nepřevzorkovaný výstupní signál na pinu PA4,\\ CH2 - převzorkovaný výstupní signál na pinu PA5.\\
 +Na nastavení osciloskopu je možné si všimnou, že i přes to, že se signály zdají být podobné, tak převzorkovaný signál na CH2 má rozlišení pouze 200mV/div, oproti ostatním s 500mV/div. Tato nižší amplituda je vlastností interpolace,​ kdy je prováděna rekonstrukce signálu odfiltrováním přebytečných kopií spektra, což způsobí pokles energie signálu (pro interpolaci 3x, pokles energie na 1/3). Pokud by bylo požadavkem zachování amplitudy signálu, bylo by třeba převzorkovaný signál vynásobit třemi, což ale vede i ke zvýšení šumu signálu.
 +
 +[[https://​www.youtube.com/​watch?​v=_VB4ujhArGU|Video ukázka]]
  
 ===== Soubory ===== ===== Soubory =====
  
-== STM32CubeIDE ​projekt ==+== EmBitz ​projekt ==
 {{2019:​xsterc02_projekt_mpoa.zip}} {{2019:​xsterc02_projekt_mpoa.zip}}
  
2019/audio-resample.1579539338.txt.gz · Poslední úprava: 2020/01/20 17:55 autor: Filip Šterc