chap7_mikroc_adc_v2

Upload: bilel-dekhili

Post on 10-Feb-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 chap7_MikroC_ADC_V2

    1/38

    ANALOG-TO-DIGITALCONVERTER (ADC)

    Chapitre 7

  • 7/22/2019 chap7_MikroC_ADC_V2

    2/38

    Principe de fonctionnement dun

    priphrique ADC

  • 7/22/2019 chap7_MikroC_ADC_V2

    3/38

    Description, vocabulaire

    Un ADC a pour rle de fournir un nombre entier

    l'image d'une tension. Une tension possde par dfinition une infinit de valeurs possibles

    (grandeur analogique)

    le nombre entier fourni, est forcment limit en quantit de valeurs.

    Exemple ADC 3 bits:

  • 7/22/2019 chap7_MikroC_ADC_V2

    4/38

    Description, vocabulaire

    Le quantum (ou rsolution) d'un ADC est l'incrment

    de tension q, qui fait voluer le nombre entier d'une valeur la suivante.

    =+

    2

    O n est le nombre de bits de lADC

    L'tendue de mesure est la plage d'entre de l'ADC, notV sur la caractristique.

    V=+

    Exemple : ADC 1024 points ADC 10 bits ADC dont l'tendue de mesure est 5V et le quantum vaut 4,883mV

  • 7/22/2019 chap7_MikroC_ADC_V2

    5/38

    Structure gnrale d'un priphrique ADC

    Le chemin en rouge reprsente le flow d'information,analogique au dpart, numris la fin.

  • 7/22/2019 chap7_MikroC_ADC_V2

    6/38

    Reprsentations des tensions et duresimportantes dans la conversion A/N

    Temps d'acquisition : tacq

    Temps de conversion: tconv

    chantillonneur-Bloqueur

  • 7/22/2019 chap7_MikroC_ADC_V2

    7/38

    Temps d'acquisition, tacq: c'est la dure pendant laquelle

    l'chantillonneur est ferm. La tension e(t) volue de manire exponentielle cause du

    condensateur et de la rsistance quivalente du circuit. Il est doncncessaire, suivant la valeur de cette rsistance, de tenirl'chantillonneur ferm un certain temps, tacq.

    Temps de conversion, tconv : Ds lors quel'chantillonneur est ouvert, la tension e(t) resteconstante, et la conversion peut commencer. Elle dure un temps li l'horloge d'entre de l'ADC et la

    technologie de l'ADC.

    Ces deux grandeurs temporelles, tacq et tconv, sonthabituellement paramtrables via un registre deconfiguration de l'ADC.

    Reprsentations des tensions et duresimportantes dans la conversion A/N

  • 7/22/2019 chap7_MikroC_ADC_V2

    8/38

    Temps de conversion total : Ce terme, traduitsimplement le temps ncessaire une conversiontotale, depuis la demande de conversion, jusqu'l'criture du rsultat dans le registre associ.

    Priode d'chantillonnage, Te : C'est l'intervalle de

    temps entre deux prises d'chantillons successifs.

    Suite

  • 7/22/2019 chap7_MikroC_ADC_V2

    9/38

    Description des fonctionnalitsde lADC

  • 7/22/2019 chap7_MikroC_ADC_V2

    10/38

    Fonctionnalits ADC (1/3)

    Frquence de conversion de lADC est de 1 MHz

    Rsolution configurable 6, 8, 10 ou 12-bit

    Plage de conversion VREF : 0 3.6 V telque :

    VREF- VIN VREF+ (VREF+ and VREF- valables uniquement

    dans les packages LQFP100 )

    Alimentation de fonctionnement : 2.4V 3.6 V

    18 canaux multiplexs:

    16 voies externes

    2 voies internes: connectes au capteur de temprature intgr

    dans le STM32F4 et une rfrence interne (VREFINT = 1.2V)

  • 7/22/2019 chap7_MikroC_ADC_V2

    11/38

    Fonctionnalits ADC(2/3)

    2 groupes de conversion :

    Conversion rgulire : jusqu 16 voies

    Conversion injecte : jusqu 4 voies

    2 modes de conversion :

    Single : une seule conversion est effectue

    Continue : Lensemble des voies configures de lADC sont converties

    sans arrt.

    Squenceur : Permet de dfinir lordre de conversion des diffrentes

    voies. Mode discontinu : Un sous ensemble des voies configures n 8 est

    converti suite chaque ordre de conversion.

  • 7/22/2019 chap7_MikroC_ADC_V2

    12/38

    Fonctionnalits ADC(3/3)

    Alignement droite et gauche des donnes converties Un Watchdog analogique selon deux seuils high et low

    Gnration dinterruption :

    La fin de la conversion

    La fin dune conversion injecte

    Activation du Watchdog analogique

    Activation du contrleur DMA (seulement pour ADC1)

  • 7/22/2019 chap7_MikroC_ADC_V2

    13/38

    Diagramme block de lADC du STM32F4

    StartTrigger

    (injectedgroup)

    TIM1_CC1

    TIM1_CC2

    TIM1_CC3

    TIM2_CC2

    TIM3_TRGO

    TIM4_CC4

    TIM1_TRGO

    TIM1_CC4

    TIM1_TRGO

    TIM2_CC1

    TIM3_CC4

    TIM4_TRGO

    ANALOG

    MUX

    GPIOPorts

    Temp Sensor

    VREFINT

    ADC

    Up to4

    Up to16

    Injected Channels

    Regular Channels

    JEXTRIG bit

    VREF+

    VREF-

    VDDA

    VSSA

    ADC_IN0

    ADC_IN1

    ADC_IN15

    .

    .

    .

    Ext_IT_15

    Ext_IT_11

    EXTRIG bit

    Start Trigger(regular group)

    JEXTSEL[2:0] bits

    EXTSEL[2:0] bits

    Injected data registers(4x12bits)

    Address/data

    bus

    Regular data register

    (12bits)

    DMA Request

    ADCCLKADC Prescalers:

    Div2, Div4, Div6 and Div8

    PCLK2

    Analog Watchdog

    High Threshold register(12bits)

    Low Threshold register(12bits) AWD EOC JEOC

    AWDIE EOCIE JEOCIE

    Flags

    Interrupt enable bits

    Analog watchdogevent

    End of injectedconversionEnd of conversion

    ADC interrupt toNVIC

  • 7/22/2019 chap7_MikroC_ADC_V2

    14/38

    Voies rgulires de lADC(Regular channel)

    Nombre de voies programmable allant jusqu 16

    Temps dchantillonnage configurable Squence de conversion configurable

    Lancement de la conversion par:

    Programmation (Mise 1 du START bit : ADON du ADC_CR2)

    Un trigger externe gnr par : Timer1 CC1

    Timer1 CC2

    Timer1 CC3

    Timer2 CC2

    Timer3 TRGO Timer4 CC4

    EXTI Line11

    NB: Ltude des voies injectes de lADC (Injected channel) ne fait pas

    partie de ce cours

  • 7/22/2019 chap7_MikroC_ADC_V2

    15/38

    Priode dchantillonnage de lentre analogique

    ADCCLK, jusqu 14MHz, prise du PCLK2 travers un pr-diviseur

    (Div2, Div4, Div6 et Div8)

    Trois bits configurables, permettant de dfinir la priode

    dchantillonnage pour chaque entre.

    1.5 cycles

    7.5 cycles 13.5 cycles

    28.5 cycles

    41.5 cycles

    55.5 cycles

    71.5 cycles

    239.5 cycles

    ADC

    ADCCLKADC Prescalers:

    2, 4, 6 and 8

    PCLK2

    55.5 cycles

    7.5 cycles

    71.5 cycles

    41.5 cycles

    13.5 cycles

    28.5 cycles

    1.5 cycles

    239.5 cycles

    SampleTimeSele

    ction

    SMPx[2:0]

  • 7/22/2019 chap7_MikroC_ADC_V2

    16/38

    Squenceur

    Squenceur : Permet de dfinir Ordre de conversion des entres La priode dchantillonnage de chaque entre

    Possibilit de sur-chantillonnage dune ou plusieurs entres

    Exemple: - Conversion des voies: 1, 2, 8, 4, 7, 3 et 11

    - Diffrentes priodes dchantillonnages

    - Sur-chantillonnage de la voie 7.

    Channel1 Channel2 Channel8 Channel4 Channel7 Channel7 Channel7 Channel3 Channel11

    13.5 cycles 28.5 cycles7.5 cycles7.5 cycles1.5 cycles 1.5 cycles71.5 cycles

  • 7/22/2019 chap7_MikroC_ADC_V2

    17/38

    Modes de conversions de lADC(1/2)

    4 Modes sont possibles:

    CHx

    Start

    Stop

    CHx

    Start

    Stop

    ...

    CHn

    CHx

    Start

    CHx

    Start

    ...

    CHn

    Single channelsingle conversion mode

    Multi-channels (Scan)single conversion

    mode

    Multi-channels (Scan)continuous conversion mode

    Single channelcontinuous conversion

    mode

  • 7/22/2019 chap7_MikroC_ADC_V2

    18/38

    Modes de conversions de lADC(2/2)

    Mode single conversion : l'utilisateur lance une

    conversion et rcupre le rsultat dans le registreassoci, soit en scrutant le drapeau EOC, soit enattendant l'entre en interruption.

    Mode auto conversion : l'utilisateur lance une

    conversion, et ds que l'ADC finit sa conversion, il enlance une autre, ventuellement sur un autre canal, etce de manire cyclique. Les rsultats sont donc lire rgulirement, sinon ils sont

    perdus.

    Les rsultats peuvent tre stocks dans une table de registresinternes au priphrique, ou directement en utilisant lecontrleur DMA (Direct Memory Access).

  • 7/22/2019 chap7_MikroC_ADC_V2

    19/38

    Watchdogs Analogique de lADC

    Cest un Watchdog analogique 12-bits programmable selon

    deux seuils low threshold et high threshold.

    Cette fonctionnalit peut tre active pour une ou plusieurs

    entres.

    Gnration dinterruption suite la dtection du seuil minimal

    ou maximal.

    Status Register

    Analog Watchdog

    Low Threshold

    Temp Sensor

    VREFINT

    ADC_IN0

    ADC_IN1

    ADC_IN15

    ..

    .AWD

    High Threshold

  • 7/22/2019 chap7_MikroC_ADC_V2

    20/38

    Les registres de lADC

  • 7/22/2019 chap7_MikroC_ADC_V2

    21/38

    ADC status register (ADC_SR)

    Bits 31:5Reserved, must be clearedBit 4 : STRT: Regular channel Start flag

    This bit is set by hardware when regular channel conversion starts. It is cleared by software.0: No regular channel conversion started

    1: Regular channel conversion has started

    Bit 1: EOC: End of conversionThis bit is set by hardware at the end of a group channel conversion (regular or injected). It iscleared by software or by reading the ADC_DR.

    0: Conversion is not complete

    1: Conversion completeBit 0: AWD: Analog watchdog flag

    This bit is set by hardware when the converted voltage crosses the values programmed in theADC_LTR and ADC_HTR registers. It is cleared by software.

    0: No Analog watchdog event occurred

    1: Analog watchdog event occurred

    20

  • 7/22/2019 chap7_MikroC_ADC_V2

    22/38

    ADC control register 1 (ADC_CR1)

    21

    Bits 31:24 Reserved, must be kept cleared.

    Bit 23 AWDEN: Analog watchdog enable on regular channels Bits 15:13 DISCNUM[2:0]: Discontinuous mode channel count

    Bit 11 DISCEN: Discontinuous mode on regular channels

    Bit 9 AWDSGL: Enable the watchdog on a single channel in scan mode

    Bit 8 SCAN: Scan mode

    Bit 6 AWDIE:Analog watchdog interrupt enable

    Bit 5 EOCIE: Interrupt enable for EOC

    Bits 4:0 AWDCH[4:0]: Analog watchdog channel select bits

  • 7/22/2019 chap7_MikroC_ADC_V2

    23/38

    ADC control register 2 (ADC_CR2)

    Bits 31:24 Reserved, must be kept cleared.

    Bit 23 TSVREFE: Temperature sensor and VREFINT enable Bit 22 SWSTART: Start conversion of regular channels

    Bit 20 EXTTRIG: External trigger conversion mode for regular channels

    Bits 19:17 EXTSEL[2:0]: External event select for regular group

    Bit 16 Reserved, must be kept cleared.

    Bit 11 ALIGN: Data alignment Bit 8 DMA: Direct memory access mode

    Bits 7:4 Reserved, must be kept cleared.

    Bit 1 CONT: Continuous conversion

    Bit 0 ADON: A/D converter ON / OFF

    22

    ADC sample time register 1 et 2

  • 7/22/2019 chap7_MikroC_ADC_V2

    24/38

    ADC sample time register 1 et 2(ADC_SMPR1 et ADC_SMPR2 )

    Bits 23:0 SMPx[2:0]: Channel x Sample time selection

    23

    ADC_SMPR1

    Bits 29:0 SMPx[2:0]: Channel x Sample time selection

    ADC_SMPR2

    ADC t hd hi h th h ld i t

  • 7/22/2019 chap7_MikroC_ADC_V2

    25/38

    ADC watchdog high threshold register(ADC_HTR)

    Bits 11:0 HT[11:0]: Analog watchdog high threshold

    These bits are written by software to define the high threshold for the analog watchdog.

    24

    ADC_HTR High threshold register

    ADC_HTR High threshold register

    Bits 11:0 LT[11:0]: Analog watchdog low threshold

    These bits are written by software to define the low threshold for the analog watchdog.

    ADC l q i t

  • 7/22/2019 chap7_MikroC_ADC_V2

    26/38

    ADC regular sequence register(ADC_SQR1, ADC_SQR2, ADC_SQR3

    Bits 23:20 L[3:0]: Regular channel sequence length These bits are written by software to define the total number of conversions in the regular channel

    conversion sequence.

    SQx[4:0]: xth conversion in regular sequence These bits are written by software with the channel number (0..17) assigned as the xth in the conversion

    sequence.

    25

    ADC_SQR1

    ADC_SQR2

    ADC_SQR3

  • 7/22/2019 chap7_MikroC_ADC_V2

    27/38

    ADC regular data register (ADC_DR)

    Bits 31:16 ADC2DATA[15:0]: ADC2 data In ADC1: In dual mode, these bits contain the regular data of ADC2.

    In ADC2 and ADC3: these bits are not used.

    Bits 15:0 DATA[15:0]: Regular data

    These bits are read only. They contain the conversion result from the regularchannels.

    The data is left or right-aligned

    26

  • 7/22/2019 chap7_MikroC_ADC_V2

    28/38

    A D C X _ I N I T

    A D C X _ I N I T _ A D V A N C E D

    A D C _ S E T _ I N P U T _ C H A N N E L

    A D C X _ G E T _ S A M P L E

    A D C X _ R E A D

    Les APIs de lADC (MicroC)

  • 7/22/2019 chap7_MikroC_ADC_V2

    29/38

    ADCx_Init

    Prototype void ADCx_Init();

    Description This routines configures ADC module.

    The internal ADC module is set to:

    single channel conversion12-bit resolution for ST devices.unsigned integer data formatVRef+ : AVdd, VRef- : AVss

    Example ADC1_Init(); // Initialize ADC module with default settings

  • 7/22/2019 chap7_MikroC_ADC_V2

    30/38

    ADCx_Init_Advanced

    Prototype voidADCx_Init_Advanced(unsigned short_external_reference, unsignedshort_adc_resolution);

    Description This routine configures the internal ADC module to work with user definedsettings.

    Parameters

    Example ADC1_Init_Advanced(_ADC_INTERNAL_REF);// set internal reference used

  • 7/22/2019 chap7_MikroC_ADC_V2

    31/38

    ADC_Set_Input_Channel

    Prototype voidADC_Set_Input_Channel(unsignedinput_mask);

    Description The function sets appropriate ADC channel as an analog input.

    Parameters Input_mask : represents the channel which will be set as an analog input:

    Can be : _ADC_CHANNEL_x, where x :[0..15]Or _ADC_CHANNEL_ALL

    Example ADC_Set_Input_Channel(_ADC_CHANNEL_0 | _ADC_CHANNEL_1);

  • 7/22/2019 chap7_MikroC_ADC_V2

    32/38

    ADCx_Get_Sample

    Prototype unsignedADCx_Get_Sample(unsignedchannel);

    Description The function enables ADC module and reads the specified analogchannel input.

    Parameters channel: represents the channel which will be set as an analog input:

    Can be : _ADC_CHANNEL_x, where x :[0..15]Or _ADC_CHANNEL_ALL

    Returns 10-bit unsigned value from the specified channel.

    Example unsigned adc_value;...ADC_Set_Input_Channel(_ADC_CHANNEL_10); // Set ADC channel 10 as an

    analog inputADC1_Init(); // Initialize ADC moduleadc_value = ADC1_Get_Sample(10); // read analog value from ADC

    module Channel 10

  • 7/22/2019 chap7_MikroC_ADC_V2

    33/38

    ADCx_Read

    Prototype unsignedADCx_Read(unsignedchannel, unsigned short

    _external_reference);Description The function sets appropriate ADC channel as an analog input,

    enables ADC module, initializes ADC module and reads the specifiedanalog channel input.

    Parameters channel: represents the channel which will be set as an analog input:Can be : _ADC_CHANNEL_x, where x :[0..15]Or _ADC_CHANNEL_ALL

    Returns 10-bit unsigned value from the specified channel.

    Example unsignedadc_value;adc_value = ADC1_Read(10);// read analog value from ADC1 module

    channel 10

  • 7/22/2019 chap7_MikroC_ADC_V2

    34/38

    Exemple 10Relier lentre PA3 une tension analogique,

    selon la valeur lue une des diodes 3,4,5 ou 6

    est allume

  • 7/22/2019 chap7_MikroC_ADC_V2

    35/38

    Spcifications

    1) plateforme: STM32 F4 discovery

    2) CPU: STM32F407VG 8Mhz

    3) entres: PA3 entre analogique; mappe surchannel3 ( _ADC_CHANNEL_3)

    4) sorties: PD12, PD13, PD14 et PD15

    - PD12 vers LD4 (LED Verte)

    - PD13 vers LD3 (LED Orange)

    - PD14 vers LD5 (LED Rouge)- PD15 vers LD6 (LED Bleue)

  • 7/22/2019 chap7_MikroC_ADC_V2

    36/38

    Gnration de tension analogique

    Dans le but de gnrer une tension analogique variableentre 0 et 5v, raliser le montage suivant:

    Masse

    5V

    Tension

    Analogique

    variable

  • 7/22/2019 chap7_MikroC_ADC_V2

    37/38

    Code

    Partie 1 :Configuration

  • 7/22/2019 chap7_MikroC_ADC_V2

    38/38

    Code

    Partie 2 : Lecture de la valeur convertieCommande des sorties selon la valeur convertie