Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Présentation du Système

Back                  << Index >>

Schéma d’Ensemble

REMARQUE : Le clavier maître utilisé est un swissonic easykey25.


Documents


Workflow I2S

Les conversion Analogique-Numérique et Numérique-Analogique sont réalisées par un codec audio WM8994.
Le dialogue entre ce codec audio et le microcontrôleur STM32F746 se fait via une liaison I2S

La liaison I2S

La liaison I2S est une liaison SPI pour les applications audio.
En plus du signal d’horloge ( la liaison SPI étant une liaison synchrone ) , des 2 fils pour les données ( MOSI et MISO ), la liaison I2S comporte un signal FS ( Start of Frame ) permettant de distinguer les signaux pour la voie gauche et la voie droite.
Ce signal FS a une fréquence correspondant à la fréquence d’échantillonnage.

Le périphérique utilisé côté microcontôleur est le SAI ( Serial Audio Interface ).
Ce périphérique peut gérer d’autres formats de trames que l’I2S.

Le codec WM8994 peut fonctionner en mode TDM ( Time Division Multiplexer ) Il est donc possible de convertir en numérique des échantillons depuis :

et de convertir des échantillons en tension analogiques à destination de :

Pour notre application, nous traiterons des signaux depuis l’entrée ligne, et vers la sortie ligne.
Seuls SLOT0 et SLOT2 seront utilisés.

Contraintes temporelles

Le schéma ci dessous fait apparaitre que tout calcul sur les échantillons doit se faire en un temps inférieur à la période d’acquisition des échantillons ( période d’échantillonage Te ).
Pour Fe=44100Hz –> Te=22.68 us.


Programme BYPASS

Algorithme

rx_sample_L et rx_sample_R sont des variables globales mises à jour toutes les périodes Te dans l’interruption SAI_Receive_IT16Bit du périphériphérique SAI.
Elles correspondent aux données converties par l’ADC du codec.
tx_sample_L et tx_sample_R correspondent aux variables à convertir par le DAC du codec.
Ces variables sont des valeurs entières sur 16 bits.

main.c

PROJET SOURCE


WORKSPACE_STM32F746DISCO_STM32CUBE


REMARQUE : cf tuto STM32CUBEIDE

Q1. Tester le programme bypass, en faisant lire un fichier audio au PC.

Q2. Placer un point d’arrêt dans la fonction BSP_AUDIO_SAI_Interrupt_CallBack() et vérifier les valeurs des échantillons. Quel est l’intervalle des valeurs des échantillons d’entrée et de sortie ?

Vérification de la période d’échantillonnage à l’oscilloscope

La LED1 est branchée sur la broche PI1. Son allumage est géré par les fonctions BSP_LED_On(LED1) et BSP_LED_Off(LED1)

Q3. Vérifier la période d’échantillonage en observant la broche PI1 à l’oscilloscope.


Back                  << Index >>