Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
M1_Infotronique Informatique embarquée
TP3 - Gestion ADC
I. Objectifs :
Développer des applications sur l’environnement CoIDE en utilisant un potentiomètre.
II. Travail demandé
Présentation
Le microcontrôleur STM32F407VG admet trois convertisseur analogique/numérique de 12-
bit permettant de convertir un signal analogique entre 0 - 3.3VCC en une valeur numérique.
Ce convertisseur ayant 16 entrées analogiques dites channels.
La carte de développement CT OpenShield for STM32F4-Discovery est équipé par un
potentiomètre qui est utilisé pour ajuster le niveau d’un signal sur une entrée analogique
(channel) afin de tester le fonctionnement de convertisseur analogique / numérique (ADC).
Le potentiomètre varie linéairement la tension entre 0 et 3.3V. Ce signal analogique est
branché sur l’entrée analogique AN8 (PB0) du microcontrôleur à travers le jumper ADC
JMP.
Rais Ghofran 1
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
Le but de cette application est de développer une application sur Coocox CoIDE qui mesure la
variation de la tension issue du potentiomètre en utilisant le convertisseur analogique
numérique du microcontrôleur ADC1 et d’afficher la valeur de la tension sur l’afficheur LCD.
1) Créer un nouveau projet avec un model Chip et choisir STM32F407VG.
2) Ajouter le Driver « ADC » dans votre projet.
3) Inclure le Driver « lcd » dans votre projet.
4) Afin de configurer le convertisseur analogique numérique ADC, créer les différentes
fonctions suivantes dans le fichier « adc.c ».
a. Créer une fonction «RCC_config » pour la configuration de l’horloge et le bus
du multiplexage.
void RCC_Config (void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
}
b. Créer une fonction « GPIO_config » pour la configuration des entrées/sorties.
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
c. Créer une fonction « ADC_config » pour la configuration de l’ADC1.
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_144Cycles);
ADC_Cmd(ADC1, ENABLE);
}
Rais Ghofran 2
Ministère de l’Enseignement Supérieur et de la Recherche
Scientifique Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
5) Dans le programme principal « main.c », créer les fonctions suivantes.
a. Créer une fonction «Get_ADCValue» qui retourne la valeur de conversion.
int
Read_ADCValue(void) {
ADC_SoftwareStartConv(ADC1); //Démarrer la conversion
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);//Procéder la
conversion return ADC_GetConversionValue(ADC1);//retourner le résultat de
la conversion }
b. Créer une fonction «mesure_voltage» qui retourne la valeur de conversion.
𝑎𝑑𝑣𝑎𝑙𝑢𝑒 ∗𝑉𝑚𝑎𝑥
𝑉𝑜𝑙𝑡𝑎𝑔𝑒 = , Vmax=3.3V
void
mesure_voltage(void) {
float
AD_value;
char
msg[100];
AD_value = Read_ADCValue();
AD_value =
(AD_value/4096)*3.3;
sprintf(msg, "Voltage=%1.3fV",
AD_value); LCD_Goto(2, 1);
LCD_Puts(msg
);
delay(100);
}
6) Ajouter la configuration nécessaire de l’affichage LCD et compléter votre
programme.
7) Compiler votre programme puis tester le sous ISIS suivant le schéma ci-dessous.
Rais Ghofran 3
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université de Carthage
Institut Supérieur des Technologies de l’Information et de la Communication
ANNEXE
Rais Ghofran 4