# Do Ré Mi Fa Sol La STM 32

Rachid MALTI, Martial LEYNEY
Univ. Bordeaux, IUT de Bordeaux, dép. GEII
IMS UMR 5218, CNRS

**RESUME** : Cette communication présente une expérience pédagogique ludique menée à l'IUT de Bordeaux dans le cadre de la formation du BUT. Elle permet aux étudiants de 2ᵉ année du parcours *Électronique et Systèmes Embarqués* du BUT GEII de réaliser un projet de traitement numérique du signal, sur cible microcontrôleur de type STM32, à partir des signaux audios transmis depuis leur téléphone portable. Le traitement réalisé consiste à générer de l'écho ayant un gain de retour et une profondeur ajustables ou encore à réaliser un filtrage numérique dont la pulsation de coupure varie logarithmiquement.

**Mots clés** : traitement numérique du signal, microcontrôleur STM32, système embarqué, BUT, signal audio, filtrage, écho, écho, écho, écho ...

## 1 INTRODUCTION

Le Bachelor Universitaire de Technologie, est structuré en compétences. Ainsi, l'étudiant acquiert des compétences transdisciplinaires pour concevoir, réaliser, vérifier, mettre en œuvre, et maintenir en conditions opérationnelles des systèmes électriques. La mise en œuvre de telles compétences nécessite de rompre avec l'enseignement modulaire traditionnel et d'aborder les problématiques d'un système électronique dans son ensemble en cassant les barrières entre les différentes disciplines. L'objectif de cette communication est de décrire un projet transdisciplinaire, réalisé par les étudiants du parcours *Électronique et Systèmes Embarqués* du Bachelor Universitaire de Technologie (BUT) en Génie Electronique et Informatique Industrielle (GEII).

Le projet concerne le traitement numérique de signaux audios et même à la fois l'électronique numérique, les mathématiques discrètes, et la programmation en langage C sur cible embarquée avec contraintes temps-réel. A cet effet, une carte électronique à base du microcontrôleur STM32 a été développée (voir description en section 2). La section 3 présente les champs disciplinaires concernés par le projet. La section 4 décrit le projet vu par les étudiants. La section 5 présente un bilan et un retour d'expérience, avant de conclure.

## 2 DESCRIPTION DE LA CARTE EMBARQUEE

<figure><img src="image_1.png" /></figure>

life.augmented

STM32F413xG STM32F413xH

Arm®-Cortex®-M4 32b MCU+FPU, 125 DMIPS, up to 1.5MB Flash, 320KB RAM, USB OTG FS, 1 ADC, 2 DACs, 2 DFSDMs

Datasheet - production data

**Features**

* Dynamic Efficiency Line with eBAM (enhanced Batch Acquisition Mode)

- 1.7 V to 3.6 V power supply

- -40 °C to 85/105/125 °C temperature range

* Core: Arm® 32-bit Cortex®-M4 CPU with FPU,

<figure><img src="image_2.png" /><figcaption>Figure 1 – Référence du STM 32 sélectionné pour le projet et ses principales caractéristiques</figcaption></figure>

### 2.1 Hardware

Pour ce projet, le choix s'est porté sur un microcontrôleur de la famille STM32 (voir Figure 1 pour la référence exacte) de technologie ARM Cortex M4, ayant suffisamment de puissance pour traiter des signaux audios en haute-fidélité (Floating Point Unit (FPU), conversion 12bits à 44100Hz) et ayant suffisamment de mémoire pour pouvoir enregistrer des messages audios de quelques secondes.

Le synoptique global de la carte, développée au sein du département GEII de l'IUT de Bordeaux, est représenté sur la Figure 3. L'objectif principal est d'aborder le thème du traitement numérique de signaux audios, de manière ludique, dans le cadre d'un apprentissage par projet. Les étudiants peuvent connecter leur téléphone à la carte pour réaliser des traitements sur leurs fichiers audios et évaluer les performances de leurs algorithmes (voir Figure 2).

<figure><img src="image_3.png" /><figcaption>Figure 2 – Photo de la carte à base du STM32 relié à un téléphone générant un signal sonore</figcaption></figure>

Nous avons permis le traitement audio provenant de 4 sources différentes : une fiche Jack, une connexion Bluetooth, un microphone à électret et enfin une entrée coaxiale, pour y connecter un générateur basses fréquences. Ces 4 sources sont amplifiées analogiquement et filtrées puis sélectionnées par un multiplexeur, que

This is an Open Access article distributed under the terms of the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Article publié par EDP Sciences et disponible sur le site https://www.j3ea.org ou https://doi.org/10.1051/j3ea/20231037
<figure><img src="image_4.png" /><figcaption>Figure 3 - Synoptique de la carte à base du STM 32 utilisé dans ce projet</figcaption></figure>

l'étudiant apprend à piloter depuis son algorithme. Une fois la voie sélectionnée, le signal passe par un des deux filtres anti-repliement implantée, puis est converti numériquement grâce à un ADC (Analogue to Digital Converter) de 12 bits. Par la suite, le signal est traité sur microcontrôleur et le résultat de ce traitement est converti analogiquement via le DAC (Digital to Analog Converter) puis est ensuite filtré, amplifié et transmis sur un petit haut-parleur présent sur la carte ou sur un casque ou des écouteurs. Une sortie coaxiale permet aussi de visualiser le signal analogique sur oscilloscope. Autour du microcontrôleur, des fonctions électroniques ont été ajoutées, toujours dans le thème de l'audio faisant appel à des composants qui utilisent les bus de communication SPI, I2C, UART. Nous avons également ajouté des potentiomètres à glissière, des boutons et des LEDs.

Il existe beaucoup de cartes de développement STM32 sur le marché à prix abordable mais elle serait incomplète au niveau pédagogique. Il faudrait y ajouter une carte d'extension (shield) pour pouvoir traiter les différents éléments du cours ( périphériques I2C, SPI, DAC, amplification analogique...).

## 2.2 Software

Avec cette solution hardware, plusieurs environnements logiciels de développement et de programmation sont disponibles. Le choix de l'équipe pédagogique s'est porté sur :

* STM32CubeMx doté d'une interface graphique facilitant la configuration des différents périphériques internes du microcontrôleur,

* KEIL µVision5, pour la programmation en langage C.

Ces 2 outils sont assez simples à prendre en main mais peu documenté sur internet (contrairement aux univers Arduino ou MBED par exemple).

## 3 CHAMPS DISCIPLINAIRES

Trois champs disciplinaires sont principalement concernés par le projet (voir Figure 4). Ils sont décrits ci-dessous.

<figure><img src="image_5.png" /><figcaption>Figure 4 -- Champs disciplinaires concernés par le projet</figcaption></figure>

### 3.1 Électronique numérique

Les notions étudiées en électronique numérique liées à l'échantillonnage, la quantification, le théorème de Shannon et le repliement spectral sont rappelées en amont du projet. Les étudiants sont toutefois guidés vers une fréquence d'échantillonnage de 44 100 Hz, correspondant à celle utilisée dans la norme HiFi (High Fidelity). La mise en œuvre de l'échantillonnage se fait à travers l'utilisation d'un ADC 12 bits pour la quantification du signal continu, d'un Timer pour le réglage de la période d'échantillonnage et d'un convertisseur numérique
analogique (DAC) pour la restitution du signal suite au traitement.

## 3.2 Systèmes embarqués

A travers la configuration et la programmation du microcontrôleur STM32 en langage C, les principaux périphériques que les étudiants manipulent sont : (i) les Entrées/Sortie Tout-Ou-Rien (General Purpose Input Output (GPIO)), (ii) le Timer pour la génération d'interruptions à fréquence fixe, (iii) le bus SPI pour piloter un vasteur (8 leds indiquant le niveau sonore), (iv) le bus I2C pour affichage sur écran OLED, (v) l'UART pour la réception et la transmission de données sur Bluetooth.

## 3.3 Mathématiques discrètes

La mise en œuvre d'un traitement numérique sur les signaux discrets se fait généralement à partir d'équations de récurrence, vues en cours de mathématiques discrètes. La transformée en Z est une des notions indispensables notamment pour la mise en œuvre de l'écho et/ou de filtres.

# 4 ORGANISATION DU PROJET

Ce projet permet d'abord d'expliquer aux étudiants les contraintes matérielles liées au projet en termes de mémoire RAM et d'exécution temps-réel. Ces contraintes sont abordées en travaux dirigés. Ensuite, les différentes tâches à réaliser dans le cadre du projet sont (i) la génération d'un signal périodique, (ii) la génération d'un écho ayant un gain et une profondeur temporelle réglables, (iii) la réalisation d'un filtre passe bas ayant une fréquence ajustable logarithmiquement. Les contraintes matérielles et les tâches à réaliser sont décrites dans cette section.

## 4.1 Contraintes de stockage

Le microcontrôleur choisi dispose d'une RAM de 320Ko. De plus l'ADC est réglé pour un échantillonnage sur 12bits. Si l'on considère que 300Ko peuvent être consacrés aux données de stockage, alors la durée maximum du signal audio pouvant être enregistré est de :

$$t = \frac{300 \times 1024}{2 \times 44 100} = 3.48 \text{ sec}$$

Cette durée est compatible avec le souhait de générer un écho de profondeur temporelle maximale d'une seconde (voir section 4.4).

## 4.2 Contraintes de temps-réel

Les étudiants visualisent à l'oscilloscope la durée des interruptions en provoquant un changement d'état d'un GPIO à chaque interruption. Ils visualisent également le temps nécessaire à la réalisation de 4 conversions analogiques-numériques issues du signal audio et de 3 potentiomètres (état haut du signal bleu sur la Figure 5). Au fur et à mesure de la mise en œuvre de traitements

numériques (écho ou filtrage), ils visualisent l'augmentation du temps correspondant à la conversion et au traitement. Ce temps doit rester inférieur à la périodicité des interruptions. L'unité de calcul en virgule flottante (FPU) permet d'atteindre cet objectif; en revanche on doit s'assurer qu'aucune opération n'est codée en double précision.

<figure><img src="image_6.png" /><figcaption>Figure 5 – Mesure du temps entre deux interruptions à l'oscilloscope (signal Jaune), chaque changement d'état correspondant à une interruption et mesure du temps nécessaire à la conversion de 4 canaux analogiques (état haut du signal bleu).</figcaption></figure>

## 4.3 Génération de notes musicales simples à partir du DAC

L'objectif de cette partie est de programmer le DAC sous interruption pour la génération d'un signal carré, suivi d'un signal en dent de scie (voir Figure 6), aux fréquences correspondant aux différentes notes musicales sur une octave.

<figure><img src="image_7.png" /><figcaption>Figure 6 – Génération d'un signal en dent de scie à la fréquence de 440hz – Note musicale La.</figcaption></figure>

Les étudiants les plus motivés réalisent également une mélodie à partir des notes ainsi générées.
## 4.4 Génération d'un écho

Un écho est caractérisé principalement par 2 paramètres : le retard N (en nombre d'échantillons) et le gain de retour a. Il est généré à partir du schéma de la Figure 7 où $0 < K < 1$ permet d'agir sur l'atténuation du volume de sortie.

<figure><img src="image_8.png" /><figcaption>Figure 7 Diagramme bloc de l'écho, avec $u_k$ le signal d'entrée, $y_k$ le signal de sortie, a : gain de retour, N : nombre d'échantillons de retard, $0 < K < 1$ : atténuation de sortie</figcaption></figure>

A partir de la Figure 7, la fonction de transfert de l'écho et donnée par :

$$ \frac{Y(z)}{U(z)} = \frac{1}{1 + az^{-N}} $$

Une étude de stabilité permet de conclure que le gain de retour a doit être inférieur à 1, afin d'éviter l'effet Larsen. Il s'ensuit à partir de la fonction de transfert que l'équation de récurrence s'écrit :

$$ y_k = u_k + ay_{k-N} $$

Sa mise en œuvre requiert l'implantation d'un buffer circulaire (tableau de taille N). Il est demandé aux étudiants de pouvoir régler le gain a et la profondeur de l'écho N, en fonction de la position de 2 potentiomètres, selon les contraintes suivantes :

$$ \begin{array}{l} 0.2 < a < 0.9 \\ \text{et} \\ 0.1s < \text{retard} < 1s \end{array} $$

Soit l'expression du retard, en fonction du nombre d'échantillons :

$$ 4410 < N < 44100 $$

## 4.5 Filtrage passe bas

Il est demandé ensuite de générer un filtre d'ordre un :

$$ G_c(p) = \frac{1}{1 + \frac{s}{\omega_c}} \qquad (1) $$

ayant une fréquence de coupure $f_c = \omega_c / 2\pi$ variable

$$ 20 \text{ Hz} < f_c < 20 \text{ Khz} $$

d'abord selon une échelle linéaire :

$$ f_c = aV_{N2} + b \qquad (2) $$

puis selon une échelle logarithmique :

$$ \log(f_c) = aV_{N2} + b \qquad (3) $$

Dans la mesure où la variation de la fréquence de coupure s'étale sur 3 décades, il est plus intéressant d'avoir une variation logarithmique de la fréquence, pilotée par un potentiomètre, plutôt qu'une variation linéaire. En effet, c'est la variation logarithmique qui permet d'obtenir un incrément relatif de la fréquence $\frac{\Delta f}{f}$ constant pour un déplacement fixe du potentiomètre.

Il est à présent indispensable de calculer une approximation discrète de la fonction de transfert à temps continu $G_c(p)$, en vue d'une implantation sur microcontrôleur. Les approximations d'Euler, de Tustin et celle utilisant le bloqueur d'ordre zéro sont présentées aux étudiants.

### 4.5.1 Approximation d'Euler

La méthode d'Euler, traitée en TP d'Outils Logiciels au Semestre 3 et qui provient de l'approximation par différence finie de l'opération de dérivation, est rappelée. Elle consiste à remplacer l'opérateur de dérivation p par :

$$ p = \frac{1 - z^{-1}}{T_e} \qquad (4) $$

### 4.5.2 Approximation de Tustin

La transformation de Tustin ou transformation biliénaire, consiste à remplacer l'opérateur de dérivation par :

$$ p = \frac{2}{T_e} \frac{1 - z^{-1}}{1 + z^{-1}} \qquad (5) $$

### 4.5.3 Approximation utilisant le bloqueur d'ordre zéro

Cette dernière consiste à prendre en considération le bloqueur d'ordre zéro et à calculer la fonction de transfert échantillonnée $G(z)$, à partir de la fonction de transfert continue $G_c(p)$, par la formule :

$$ G(z) = (1 - z^{-1})Z\left\{\frac{G_c(p)}{p}\right\} $$

### 4.5.4 Comparaison des trois méthodes d'approximation

Une comparaison des 3 approximations décrites précédemment dans la bande de fréquences $0 < f < Fe/5$ où Fe représente la fréquence d'échantillonnage, montre que celle de Tustin est nettement supérieure à l'approximation d'Euler (voir Figure 8). Elle fournit également une meilleure approximation de la phase que celle
utilisant le Boz. C'est pourquoi, les étudiants sont naturellement orientés vers l'approximation de Tustin pour le reste du projet.

<figure><img src="image_9.png" /><figcaption>Figure 8 – Comparaison des trois méthodes d’approximaiton d’un filtre d’ordre 1</figcaption></figure>

## 5 BILAN ET RETOUR D'EXPERIENCE

Un questionnaire a été diffusée aux étudiants à l'issue de la première année de mise en place de ce projet.

Le retour est assez positif, les étudiants ayant majoritairement préférer travailler sur un projet unique tout au long du semestre plutôt que des TP indépendants les uns des autres (voir Figure 9).

<figure><img src="image_10.png" /><figcaption>Figure 9 – Un projet unique, tout au long du semestre ou plusieurs TP indépendants les uns des autres ?</figcaption></figure>

S'ensuivent sur les (Figure 10 – Figure 20) les réponses au questionnaire d'auto-évaluation des étudiants sur les compétences acquises lors de ce projet, avec une graddation de 1 « non acquise » jusqu'à 4 « parfaitement acquise ».

Il en ressort d'après cette auto-évaluation une certaine maîtrise des aspects liés à la programmation des modules du microcontrôleur en langage C, y compris de la programmation sous interruptions. En revanche, les étudiants présentent plus de difficultés en mathématiques discrètes.

L'équipe enseignante, constitué de 4 permanents et 3 vacataires, s'est impliquée pleinement dans ce projet. Elle

a apprécié travailler sur ce projet mêlant contraintes matérielles et temps-réel, mathématiques discrètes, électrique numérique, et systèmes embarqués.

<figure><img src="image_11.png" /><figcaption>Figure 10 – Fonctionnement des interruptions</figcaption></figure>

<figure><img src="image_12.png" /><figcaption>Figure 11 – Fonctionnement du Timer</figcaption></figure>

<figure><img src="image_13.png" /><figcaption>Figure 12 – Comment fixer une période d'échantillonnage sur microcontrôleur</figcaption></figure>

<figure><img src="image_14.png" /><figcaption>Figure 13 – Génération de signaux sur DAC</figcaption></figure>

<figure><img src="image_15.png" /><figcaption>Figure 14 – Fonctionnement de l'ADC</figcaption></figure>

<figure><img src="image_16.png" /><figcaption>Figure 15 – Programmation en langage C.</figcaption></figure>
<figure><img src="image_17.png" /><figcaption>Figure 16 – Passage d'une fonction de transfert à temps continu vers une fonction de transfert à temps discret</figcaption></figure>

<figure><img src="image_18.png" /><figcaption>Figure 17 – Si vous deviez choisir une approximation pour le passage continu-discret, vous choisiriez ...</figcaption></figure>

<figure><img src="image_19.png" /><figcaption>Figure 18 – Génération d'un écho.</figcaption></figure>

<figure><img src="image_20.png" /><figcaption>Figure 19 – Passage d'une fonction de transfert à temps discret vers une équation de récurrence.</figcaption></figure>

<figure><img src="image_21.png" /><figcaption>Figure 20 – Filtrage numérique.</figcaption></figure>

# 6 CONCLUSION

Cette communication présente une expérience pédagogique menée à l'IUT de Bordeaux qui concerne le traitement de signaux numériques audios. Les étudiants réalisent un projet transdisciplinaire en commençant par la génération de notes musicales (signaux périodiques) suivi par l'acquisition, le traitement et la restitution de signaux audios. Ce projet présente un caractère ludique pour les étudiants qui utilisent leur téléphone portable pour transmettre les signaux audios en entrée de la carte.