Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2019:audio-visualizer

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-visualizer [2020/01/19 21:54]
Dominik Indrák [Zobrazení frekvenčního spektra]
2019:audio-visualizer [2020/01/20 19:42] (aktuální)
Dominik Indrák [Výpočet frekvenčního spektra]
Řádek 84: Řádek 84:
   arm_max_f32(magnitude_db,​ FFT_SIZE, &​maxValue,​ &​testIndex);​   arm_max_f32(magnitude_db,​ FFT_SIZE, &​maxValue,​ &​testIndex);​
  
-  DrawSpectrum(magnitude_db, maxValue, scale_y_inc3db,​ dB_per_px);+  DrawSpectrum(magnitude_db,​ scale_y_inc3db,​ dB_per_px);
  
   //New data for FFT can be saved   //New data for FFT can be saved
Řádek 139: Řádek 139:
  
 Pro vykreslování na LCD displej je třeba nakopírovat do složky projektu zdrojové soubory STemWinu, který lze buďto stáhnout samostatně ([[https://​www.st.com/​en/​embedded-software/​stemwin.html|STemWin]]) a nebo je součástí Cube MX v adresáři CubeMX\Middlewares\ST\STemWin. STemWin je profesionální grafická knihovna, ze které se využily pouze základní funkce pro kreslení geometrických tvarů. Tato knihovna byla zvolena, protože bylo třeba otočit orientaci displeje (hlavně textu) o 90°, což nebylo s BSP knihovnou k LCD možné. GUI, které je součástí CubeMX nebylo použito z časových důvodů. Pro vykreslování na LCD displej je třeba nakopírovat do složky projektu zdrojové soubory STemWinu, který lze buďto stáhnout samostatně ([[https://​www.st.com/​en/​embedded-software/​stemwin.html|STemWin]]) a nebo je součástí Cube MX v adresáři CubeMX\Middlewares\ST\STemWin. STemWin je profesionální grafická knihovna, ze které se využily pouze základní funkce pro kreslení geometrických tvarů. Tato knihovna byla zvolena, protože bylo třeba otočit orientaci displeje (hlavně textu) o 90°, což nebylo s BSP knihovnou k LCD možné. GUI, které je součástí CubeMX nebylo použito z časových důvodů.
 +
 +Na následujícím obrázku je nastavení pro displej z CubeMX. Displej byl nastavován podle videa [8] a kromě LTDC bylo nutné nastavit FMC (Flexible Memory Controller) a SPI (Serial Peripheral Interface)
 +
 +{{ :​2019:​audio-visualizer:​ltdc_conf.png?​direct&​600 }}
  
 Makra používaná při vykreslování osy X a Y a jejich popisů. Makra používaná při vykreslování osy X a Y a jejich popisů.
Řádek 204: Řádek 208:
 </​code>​ </​code>​
 ===== Zobrazení menu ===== ===== Zobrazení menu =====
-Menu je možné zobrazit ​klepnutím ​kamkoliv na displej. V menu je pak možnost nastavit hrubé rozlišení osy Y a offset pro jemné dolazení s hodnotou +3 dB nebo -3 dB.+Menu je možné zobrazit ​dotykem ​kamkoliv na displej. V menu je pak možné nastavit hrubé rozlišení osy Y a offset pro jemné dolazení s hodnotou +3 dB nebo -3 dB.
  
 <code c> <code c>
Řádek 236: Řádek 240:
 </​code>​ </​code>​
  
-Do funkce vstupují nastavené hodnoty rozlišení a offsetu, které pak funkce zobrazí u nastavovacích tlačítek, kterým odpovídá. Nejdříve je vykreslen sloupec ​pro offset, tzn. dvě nastavovací tlačítka s textem a 1 pole pro zobrazení nastavené hodnoty. Následuje vykreslení ​sloupce ​rozlišení (funkce zkrácena-lze vidět v souboru main.c projektu) opět s dvěma tlačítky pro zvýšení/​snížení rozlišení a pak pole pro zobrazení nastavené hodnoty. Zároveň jsou tyto hodnoty vykreslovány spolu osami X a Y a jsou pod spektrem pro informaci. Z menu se lze dostat tlačítkem BACK. +Do funkce vstupují nastavené hodnoty rozlišení a offsetu, které pak funkce zobrazí u nastavovacích tlačítek, kterým odpovídá. Nejdříve je vykreslena část ​pro offset, tzn. dvě nastavovací tlačítka s textem a 1 pole pro zobrazení nastavené hodnoty. Následuje vykreslení ​části ​rozlišení (funkce zkrácena-kompletní ​lze vidět v souboru main.c projektu) opět s dvěma tlačítky pro zvýšení/​snížení rozlišení a pak pole pro zobrazení nastavené hodnoty. Zároveň jsou tyto hodnoty vykreslovány spolu osami X a Y a jsou pod spektrem pro informaci. Z menu se lze dostat tlačítkem BACK. 
  
 <code c> <code c>
Řádek 285: Řádek 289:
 </​code>​ </​code>​
 ===== Závěr ===== ===== Závěr =====
 +Byl naprogramován zvukový vizualizér,​ který vzorkuje vstupní signál pomocí ADC převodníku s vzorkovací frekvencí f<​sub>​vz</​sub>​ = 48 kHz. Vypočítané frekvenční spektrum je vykreslováno na dotykovém TFT displeji. Pomocí jednoduchého menu je možné měnit rozlišení Y osy spektra.
 +Pro vstup audio signálu byl použit filtr typu horní propust, který ovšem nebyl ideální (frekvence větší jak f<​sub>​vz</​sub>​ by způsobovaly aliasing) a z časových důvodů nebyl předělán. Lepší by by byla pásmová propust nalazená na slyšitelné spektrum, tzn. 20 Hz - 20 kHz. 
 +Aby bylo možné vykreslovat na displej na šířku, na poslední chvíli byla použita část knihovny STemWin. Lepší by ovšem bylo využití kompletní knihovny STemWin s GUI například přímo v CubeMX. vylepšením by mohlo být, aby frekvenční spektrum nebylo vykreslováno celé, ale bylo rozděleno na oktávy. Každá oktáva by pak zahrnovala spektrum z okolních frekvencí. Šlo by pak lépe vidět rozložení spektra na nižších frekvencích (cca 20 Hz - 1kHz).
 +
 +[[http://​leteckaposta.cz/​647359699|Zdrojové soubory]]
 +
 +{{youtube>​SbM17JHXQDU?​medium}}
 +
 +
 ===== Zdroje ===== ===== Zdroje =====
 [1] Real FFT Functions. Keil Embedded Development Tools for Arm, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families. [online]. Dostupné z: https://​www.keil.com/​pack/​doc/​CMSIS/​DSP/​html/​group__RealFFT.html\\ [1] Real FFT Functions. Keil Embedded Development Tools for Arm, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families. [online]. Dostupné z: https://​www.keil.com/​pack/​doc/​CMSIS/​DSP/​html/​group__RealFFT.html\\
2019/audio-visualizer.1579467273.txt.gz · Poslední úprava: 2020/01/19 21:54 autor: Dominik Indrák