Analizator widma z FFT na STM32 z Cortex-M4

Widmo częstotliwościowe sygnału audio z mikrofonu

Ostatni etap projektu to wyświetlenie widma sygnału jaki otrzymujemy z mikrofonu. Do tego celu przygotowano dwie funkcje DrawSpectrum_Prepare(), która rysuje tylko raz stałe elementy wykresu oraz DrawSpectrum_Update(), która rysuje samo widmo lub go usuwa w zależności od przekazanego jako argument koloru.

Poniżej przedstawiono kod który wykorzystuje wszystkie podane dotąd informacje. Komentarza mogą wymagać dwa miejsca. Ponieważ w funkcje obsługi przerwań od odbioru danych od I2S maksymalny rozmiar paczki zapisanej w buforze PCM_Output_Buffer wynosi w danej sytuacji 32 elementy to trzeba zebrać ich 16 aby otrzymać tablicę 512 wartości rzeczywistych przekazywanych do funkcji wyznaczającej transformatę. Po drugie zamiast skalować widmo wykorzystując maksymalną jej wartość jest ono skalowane z wartością stałą wyznaczoną doświadczalnie tak aby wyświetlanie odbywało się poprawnie.

Rys. 15. Struktura prezentowanego projektu

Rys. 15. Struktura prezentowanego projektu

 

Ostatecznie struktura projektu wygląda tak jak na rysunku 15, a na rysunkach 16 i 17 przedstawiono konfigurację w zakładce Compile oraz Link środowiska CooCox CoIDE.

 

Rys. 16. Konfiguracja w zakładce Compile

Rys. 16. Konfiguracja w zakładce Compile

Rys. 17. Konfiguracja w zakładce Link

Rys. 17. Konfiguracja w zakładce Link

 

W pliku system_stm32f4xx.c można znaleźć wartości użyte do konfiguracji sygnałów taktujących zarówno samego systemu jak również przekazywanego do peryferii I2S. Sprzętowa jednostka FPU nie została włączona gdyż biblioteka PDM nie jest przystosowana do jej obsługi (kompilator wyrzuca błędy).

 

Literatura:

[1] AN3997 – Audioplayback and recording using the STM32F4DISCOVERY

[2] AN3998 – PDM audio software decoding on STM32 microcontrollers

[3] MP45DT02 – MEMS audio sensor omnidirectional digital microphone

[4] T. Zieliński, Cyfrowe przetwarzanie sygnałów. Od teorii do zastosowań , WKŁ, W-wa 2009

Do pobrania

O autorze