Vous êtes sur la page 1sur 7

TP3 : SYSTEMES EMBARQUES

TP3 :
Timers - CAN-CNA

Objectifs pédagogiques :
Apprendre à manipuler la configuration d’un périphérique Timer,
Maitriser le fonctionnement des différents modes du CAN, DAC et du
Timer1.

Préalables :
Langage de programmation C, Architecture des microcontrôleurs.

Durée : 2 séances de 3H

ISTMT SEEEM1 1
Utilisation d’une interruption sur Timer
a) Ouvrir le projet CubeMx du TP2 avec les anciennes configurations (ADC1 en mode
conversion continue sans DMA) et la configuration d'horloge suivante.

Figure 1 : Configuration des horloges

b) Modifier votre configuration graphique sous CubeMx avec les configurations de la fig2

Figure 2. Configuration du TIMER1

c) Déduire la période de l’interruption générée par cette configuration du Timer1.

d) Générer de nouveau le code et identifier les prototypes des fonctions intervenants dans le
flot de contrôle du Timer1 en ce mode interruption.

e) Développer un programme qui permet d'envoyer la valeur adc_value du ADC1 à chaque


interruption générée par TIM1 sur les 4 leds de la carte. En fonctionnement normal, le
programme incrémente un compteur sur 8 bits.

ISTMT SEEEM1 2
Figure 3. Flot de contrôle du Timer en mode IT par la bibliothèque HAL.

Conversion numérique analogique


a) Dans votre premier projet sous CubeMx précédent, activer la sortie 1(OUT1 sur PA4) du
périphérique DAC et activer le buffer en sortie comme le montre la figure suivante.

Figure 4. Configuration du DAC.


b) Régénérer le projet STM32Cube, build target files et identifier les prototypes des fonctions
et les constantes à utiliser avec ce convertisseur.

Figure 5. Processus de la conversion numérique/analogique.


c) Les lignes ci-dessous permettent de générer un signal en dent de scie sur la sortie PA4.
Quels sont les caractéristiques (amplitude, période) de ce signal.

ISTMT SEEEM1 3
d) Implémenter ce code, et observer le signal généré sur un oscilloscope.
e) Modifier votre programme pour réduire la période du signal à 1s.
f) Modifier de nouveau votre programme pour générer un signal triangulaire.
g) Conclure sur les limites de cette solution de conversion.

Utilisation du Timer pour la génération d’onde triangulaire


Lorsque le périphérique DAC est piloté par le trigger externe d’un Timer (TIM6), nous
pouvons générer à la sortie du DAC un signal triangulaire d’amplitude configurable
(maximum signal amplitude) et de période échantillonnage Te égale à celle du trigger en
sortie du Timer.
Nous proposons dans cette partie de tester ce fonctionnement en générant un signal
triangulaire de fréquence F=5Khz (période T=200µs). Nous utiliserons le TIM6 comme
source de déclenchement (choisir Update Event comme Trigger Event Selection).
Remarque : la valeur numérique max de l'amplitude de 4095=212-1 correspond à un signal
d'amplitude max de 3V
avec T=2*Val_Num_Max*Te
Prescaler =0 ➔ PRS=1

Figure 6

a) Déterminer la configuration nécessaire du Timer6 (Prescaler et Counter Period)


b) Apporter les modifications nécessaires à votre projet CubeMx pour supporter ce nouveau
fonctionnement, puis générer le projet STM32Cube correspondant.
c) Dans votre programme principal, démarrer les deux périphériques Timer et DAC en
utilisant les deux instructions suivantes.

d) Implémenter ce code, et observer le signal généré sur un oscilloscope.

ISTMT SEEEM1 4
Utilisation du DMA pour la génération d’onde sinusoïdale
a) Désactiver "Wave Generation Mode" dans la fenêtre de configuration CubeMX du DAC,
et activer le DMA sur ce périphérique. Générer ensuite votre projet Keil.
b) Modifier votre programme en insérant les deux lignes qui suivent afin de lancer la
conversion cyclique à partir de la RAM à une cadence de 5Khz (Config du TIM6
précédente).

dataSin est la Look Up Table correspondante aux échantillons de l’onde sinus, elle est
définie comme suit :

c) Que sera la fréquence du signal généré dans ce cas. Généraliser sur le choix de la période
du Timer en fonction de la fréquence de la sortie et de sa résolution (le nombre
d’échantillons).
d) Implémenter ce code, et observer le signal généré sur un oscilloscope.

Application au Traitement Numérique du Signal


On considère dans cette partie un signal composé de deux ondes sinusoïdales de fréquences
15Khz et 5Khz (généré par le STM32 sur la sortie 1 du DAC). Ce signal est appliqué à une
entrée analogique du ADC1. L’objectif est de le filtrer sur la sortie 2 du DAC afin d’enlever
les hautes fréquences si le bouton poussoir est appuyé ou les basses fréquences s’il est
relâché. Nous développons ainsi deux filtres FIR dont les caractéristiques sont données ci-
dessous.

a) Définir sur CubeMX l’initialisation matérielle nécessaire pour cette application.


b) Se documenter sur les fonctions de filtrage et de traitement numérique disponibles avec la
bibliothèque CMSIS (arm_math.h).
c) Implémenter dans un premier temps votre application de filtrage avec un codage
numérique en virgule flottante.
d) Utiliser ensuite un codage numérique en virgule fixe pour votre application de filtrage.

ISTMT SEEEM1 5
Figure 7

ISTMT SEEEM1 6
ISTMT SEEEM1 7

Vous aimerez peut-être aussi