TouchGFX Wave FFT Demo

TouchGFX/FreeRTOS/DMA Demo mit dem STM32F746 Discovery Board


Was wird hier gezeigt?


Dieses Programm demonstriert die Darstellung von Sinustönen und deren Harmonischen unter Verwendung von TouchGFX und FreeRTOS Queues. Ich fand es relativ anschaulich, so daß ich es hier als kleine Demonstration oder auch zur Inspiration vorstellen möchte.




Das Programm ermöglicht es ein Sinussignal mit bis zu 6 Harmonischen als Wellenform oder FFT auf dem STM32F746 Discovery Board darzustellen. Über ein Terminal kann das Programm kontrolliert bzw. gesteuert werden. Eine Weitergabe des Programms ist leider aus rechtlichen Gründen nicht möglich. Weiter unten befindet sich ein kurzes Video, welches die Funktionen erläutert.

 
Hier ist der eingeschaltete Grundzustand zu sehen.

Ein Sinuston mit einer Frequenz von 440Hz.

Es wird die Wellenform dargestellt.

Alle Harmonischen sind ausgeschaltet.
Die Harmonischen werden, um einen natürlichen Klang zu erzielen, mit dem Pegel 1/n berechnet.

Also H2: Volume 1/2, H3 Volumen: 1/3 usw.
Ein Signal mit einer Frequenz von 460 Hz.

Die errechnete Wellenform wird als FFT dargestellt.

Alle Harmonischen sind eingeschaltet.
Nachfolgend ein kleines Video zur Funktionsweise.

Weiter unten befindet sich noch eine etwas detalliertere Erklärung der technischen Zusammenhänge.

Von den Interfaces des STM32F746 Boards werden neben den Schnittstellen für den Touchscreen das Audio Codec über DMA/SAI Interface verwendet.


Die Verbindung zum Terminal erledigt eine UART Schnittstelle mittels Interrupts.


Die Display und Touchscreen Steuerung übernimmt TouchGFX komplett. Über den FreeRTOS2 Kernel werden TouchGFX und das Hauptprogramm miteinander verbunden.


Die Signalerzeugung geschieht durch 6 unabhängige, synchron laufende Oszillatoren mit Sinus Wellenform. Die FFT wird über die CMSIS DSP Funktionen berechnet.


Der Übertragung der addierten Wellenform bzw. der FFT Daten an TouchGFX erfolgt über RTOS Message Queues.


Über eine UART Schnittstelle (RS232/RS422) kann der Status des Boards an eine Terminal ausgegeben werden. Die Funktionen des Boards können über das Terminal ferngesteuert werden. Näheres dazu im Video weiter oben auf der Seite.


© 2024 Copyright Peter Groll