Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2018:audio-analyzer [2019/01/09 20:51] 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 151: | Řádek 151: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | ==== Další funkce ==== | ||
+ | |||
+ | V této sekci jsou uvedeny další potřebné funkce, které zajišťují například inicializaci zařízení, vykreslování na displej a podobně. | ||
+ | |||
+ | <code c> | ||
+ | /*inicializace zařízení*/ | ||
+ | void ASA_init(void); | ||
+ | |||
+ | /*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> | ||
+ | |||
+ | 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. |