Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:audio-analyzer

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
2018:audio-analyzer [2019/01/14 09:38]
Petr Jedlička
2018:audio-analyzer [2019/01/14 13:25] (aktuální)
Petr Jedlička
Řádek 99: Řádek 99:
       third_octave_spectrum[band_num] = 10*log10(buff_temp[size -1]/​SPL_EDGE_OF_HEARING/​MICPHONE_CALIB_CONST);​       third_octave_spectrum[band_num] = 10*log10(buff_temp[size -1]/​SPL_EDGE_OF_HEARING/​MICPHONE_CALIB_CONST);​
     else     else
-      third_octave_spectrum[band_num] = 10*log10(buff_temp[size - 1]/​32768.0*1650.0);​+      third_octave_spectrum[band_num] = 10*log10(buff_temp[size - 1]/​32768.0*1650.0); ​//3300mV/2 = 1650mV, 2^15=32768
  
     switch(band_num)     switch(band_num)
Řádek 157: Řádek 157:
  
 <code c> <code c>
-void ASA_init(void); ​ // inicializace zařízení +/*inicializace zařízení*
-void ASA_check_events(void); ​//kontrola událostí +void ASA_init(void); ​
-void ASA_display_refresh(void); ​//​aktualizace informací na displeji +
-void ASA_read_ts_state(void);​ //čtení dotykové vrstvy displeje +
-void ASA_change_input(void);​ // změna audio vstupu +
-void ASA_create_xy_axis(void);​ //​vykreslení os grafu +
-void ASA_third_octave_filtering(float *src, float *dest, uint8_t band_num, uint32_t size); //filtrace zvoleným třetinooktávovým filtrem+
  
 +/*kontrola událostí*/​
 +void ASA_check_events(void);​
 +
 +/​*aktualizace informací na displeji*/
 +void ASA_display_refresh(void);​
 +
 +/*čtení dotykové vrstvy displeje*/
 +void ASA_read_ts_state(void);​
 +
 +/*změna audio vstupu*/
 +void ASA_change_input(void);​
 +
 +/​*vykreslení os grafu*/
 +void ASA_create_xy_axis(void);​
 +
 +/*filtrace zvoleným třetinooktávovým filtrem*/
 +void ASA_third_octave_filtering(float *src, float *dest, uint8_t band_num, uint32_t size);
 +
 +/*výpočet druhé mocniny efektivní hodnoty pro zvolenou vzorkovací frekvenci a pásmo*/
 +void ASA_make_mean_square(float *src, float *dest, uint8_t band_num, ASA_freq_in_typedef freq_in, uint32_t size); ​
 +
 +/*převod vzorků signálu do formátu s plovoucí řádovou čárkou*/
 +void ASA_int2float_conv(float *buff_out, int16_t *buff_in, uint32_t size, ASA_int2float_mode_typedef mode); ​
 +
 +/*decimace dvěma zvoleného vstupního signálu o zadané vzorkovací frekvenci*/
 +void ASA_decimate_2x(float *src, float *dest, ASA_freq_in_typedef freq_in, uint32_t size);
 +
 +/​*inicializace LCD*/
 +void ASA_LCD_init(void);​
 +
 +/​*inicializace audio periferií*/​
 +void ASA_audio_init(void);​
 +
 +/​*inicializace dotykové vrstvy LCD*/
 +void ASA_ts_init(void);​
 +
 +/​*inicializace nastavení do výchozí hodnoty*/
 +void ASA_settings_init(void);​
 </​code>​ </​code>​
 +
 +Nastavování požadavků a událostí zajišťující tyto funkce:
 +
 +<code c>
 +/*callback funkce pro DMA full transfer*/
 +void ASA_AUDIO_IN_TransferComplete_CallBack(void);​
 +
 +/*callback funkce pro DMA half transfer*/
 +void ASA_AUDIO_IN_HalfTransfer_CallBack(void);​
 +
 +/*funkce volaná v obsluze přerušení 1ms systicku, obsluha interních časovačů pro asa.c*/
 +void ASA_ISR_1ms(void);​
 +</​code>​
 +
 +===== Demonstrační video =====
 +
 +{{youtube>​UeRGOTw87YU?​medium}}
 +
 +===== Zdrojové soubory =====
 +
 +MATLAB: {{ :​2018:​audio-analyzer:​audio_spectrum_analyzer_matlab.zip |}}
 +
 +TrueSTUDIO: {{ :​2018:​audio-analyzer:​audio_spectrum_analyzer_truestudio.zip |}}
 +
 +===== Závěr =====
 +
 +Výsledkem tohoto projektu je funkční zařízení schopné měřit spektrální vlastnosti audio signálu přicházejícího buď z MEMS mikrofonu, nebo z audio jacku. Po softwarové stránce zařízení odpovídá nulté, tedy nejvyšší,​ třídě přesnosti. Po hardwarové stránce je tato přesnost snížena především kvůli mikrofonu, který není určen pro měřící aplikace. Do budoucna je v plánu přidat další měřící funkce jako například markery nebo FFT pro jednotlivá pásma.
2018/audio-analyzer.1547455122.txt.gz · Poslední úprava: 2019/01/14 09:38 autor: Petr Jedlička