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:54]
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 +/*kontrola událostí*/ 
-void ASA_change_input(void); /změna audio vstupu +void ASA_check_events(void); 
-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 +/*aktualizace informací na displeji*/ 
-void ASA_make_mean_square(float *src, float *dest, uint8_t band_num, ASA_freq_in_typedef freq_in, uint32_t size); //výpočet druhé mocniny efektivní hodnoty pro zvolenou vzorkovací frekvenci a pásmo +void ASA_display_refresh(void); 
-void ASA_int2float_conv(float *buff_outint16_t ​*buff_in, uint32_t size, ASA_int2float_mode_typedef mode); //převod vzorků signálu do formátu s plovoucí řádovou čárkou + 
-void ASA_decimate_2x(float *srcfloat *dest, ASA_freq_in_typedef freq_in, uint32_t size); //decimace dvěma zvoleného vstupního signálu o zadané vzorkovací frekvenci +/*čtení dotykové vrstvy displeje*/ 
-void ASA_LCD_init(void); //inicializace LCD +void ASA_read_ts_state(void); 
-void ASA_audio_init(void); //inicializace audio periferií + 
-void ASA_ts_init(void); //inicializace dotykové vrstvy LCD +/*změna audio vstupu*/ 
-void ASA_settings_init(void); //inicializace nastavení do výchozí hodnoty+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 *srcfloat *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_outint16_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í tyto funkce:+Nastavování požadavků a událostí zajišťující ​tyto funkce:
  
 <code c> <code c>
-void ASA_AUDIO_IN_TransferComplete_CallBack(void);​ //callback funkce pro DMA full transfer +/*callback funkce pro DMA full transfer*/ 
-void ASA_AUDIO_IN_HalfTransfer_CallBack(void); //callback funkce pro DMA half transfer +void ASA_AUDIO_IN_TransferComplete_CallBack(void); 
-void ASA_ISR_1ms(void); /funkce volaná v obsluze přerušení 1ms systicku, obsluha interních časovačů pro asa.c+ 
 +/*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>​ </​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.1547456080.txt.gz · Poslední úprava: 2019/01/14 09:54 autor: Petr Jedlička