TP n°3 : ADC/DAC - perso-etis.ensea.frperso-etis.ensea.fr/lorandel/M1_SIC/TP3.pdf · Un...

9
M1-Archi 2016-2017 Page 1 ___________________________________________________________________________ TP n°3 : ADC/DAC ___________________________________________________________________________ Objectifs de la séance -Configuration et utilisation du convertisseur numérique/analogique -Configuration et utilisation du convertisseur analogique/numérique -Application -Utilisation du debugger, visualisation des registres et des mémoires ___________________________________________________________________________ Matériel requis : -Une plateforme nucleo-board STM32F446RE ___________________________________________________________________________ Organisation de la séance : 1) Rappels 2) Conversion Analogique/Numérique 3) Conversion Numérique/Analogique 4) Conclusion / Bilan Tout au long de ce TP, des questions vous sont posées. Prenez le temps d’y répondre et de prendre des notes. ___________________________________________________________________________ I. Rappels Un convertisseur analogique-numérique permet de faire l’acquisition de signaux issus du monde extérieur et de les traduire sous forme numérique. Son rôle est donc de convertir une tension V, généralement comprise entre 0V et +Vref, une tension de référence. La valeur numérique issue de la conversion est comprise entre 0 et 2 N -1 avec N le nombre de bits de résolution du convertisseur. Le microcontrôleur STM32F446RE possède notamment : -3 convertisseurs A/N 12 bits à 16 canaux -1 convertisseur N/A 12 bits à 2 canaux

Transcript of TP n°3 : ADC/DAC - perso-etis.ensea.frperso-etis.ensea.fr/lorandel/M1_SIC/TP3.pdf · Un...

M1-Archi 2016-2017 Page1

___________________________________________________________________________

TPn°3:ADC/DAC___________________________________________________________________________

Objectifsdelaséance

-Configurationetutilisationduconvertisseurnumérique/analogique-Configurationetutilisationduconvertisseuranalogique/numérique-Application-Utilisationdudebugger,visualisationdesregistresetdesmémoires

___________________________________________________________________________

Matérielrequis: -Uneplateformenucleo-boardSTM32F446RE___________________________________________________________________________Organisationdelaséance:

1) Rappels2) ConversionAnalogique/Numérique3) ConversionNumérique/Analogique4) Conclusion/Bilan

ToutaulongdeceTP,desquestionsvoussontposées.Prenezletempsd’yrépondreetdeprendredesnotes.___________________________________________________________________________I. Rappels

Unconvertisseuranalogique-numériquepermetdefairel’acquisitiondesignauxissusdumondeextérieuretdelestraduiresousformenumérique.SonrôleestdoncdeconvertirunetensionV,généralementcompriseentre0Vet+Vref,unetensionderéférence.Lavaleurnumériqueissuedelaconversionestcompriseentre0et2N-1avecNlenombredebitsderésolutionduconvertisseur.LemicrocontrôleurSTM32F446REpossèdenotamment: -3convertisseursA/N12bitsà16canaux -1convertisseurN/A12bitsà2canaux

M1-Archi 2016-2017 Page2

Question:SachantqueVref=3,3V,etquelarésolutiondesconvertisseursestde12bits,combienvautlequantumq,c’estàdirelapluspetitetensionpouvantêtrenumérisée?IdéalementpourunCAN,onrappelleque𝑁 = #

#$%&(2* − 1);

PourunCNA,leprincipeestdual,𝑉/0%12%_é56%00% = 𝑉789 − 𝑉712 = 2* − 1 . 𝑞;

• LesconvertisseursduSTM32F446RE

§ CAN(ADC)IlestpossibledeparamétrerleCANenfonctiondesbesoinsdesonapplication.Parexemple,onpeutchoisir:

-larésolution(12,10,8,6bits),-lescanauxutilisés(16sourcesexternes+dessourcesinternes(Vref,température…)),-lemoded’acquisition(unique,continu,discontinu,balayagedeplusieurscanaux…),-l’utilisationd’untriggerexterne(injectedchannel),-l’alignementdesdonnéesdansle,-l’utilisationd’uneDMA,-...

Surlafiguresuivanteestillustréel’architectured’unADCduSTM32F:

Nous avons pu voir qu’il était très important de définir une fréquenced’échantillonnagesupérieureà2foislafréquencemaximale(oubande)dusignald’entréedemanièreàrespecterlecritèredeShannon-Nyquist.L’horlogederéférenceestADCCLK.C’estàpartirdesafréquenceetd’unevaleurduregistreSMPqu’estdéterminéeletempsd’échantillonnage.

M1-Archi 2016-2017 Page3

LeCANestbasésurlatechnologieSAR(RegistreàApproximationsSuccessives).Letempsdeconversionestdoncégalaunombrededivisionàeffectuer,correspondantàlarésolutionduconvertisseur(ici12bitsdonc12cycles).Letempstotaldeconversionsedéterminedelamanièresuivante: T_total_conversion=Sampling_time+12Exemple:

SiADCCLK=30MHz,etqueletempsd’échantillonnageestde3cycles(SMPx[2:0]=000),letempstotaldeconversionvaut:

T_total_conversion=3+12=15cycles,soit0,5us(2Méch/s).Ilexistedeuxdomainesd’horlogeauseinduDAC.L’unpermetl’interfaceaveclemicrocontrôleur(registres)etestrégitparPCLK2,l’autresertàlapartieanalogieetestrégitparADCCLK.L’horlogedelapartieanalogiqueestréglableparl’intermédiaired’unprescaler.Interruption:Selonlesbesoins,ilestpossiblededéclencheruneinterruptionàchaquefindeconversion(flagEOC).Finalement,onrésumelaconfigurationdel’ADCparlescommandessuivantes:

1)Choisirl’entrée-Activationetconfigurationdelabroched’entréeanalogique-Choixdescanauxréguliers

2)Réveildel’ADC-Activationdel’ADC

3)Choixdumodedefonctionnementetducanal4)Configurationdel’interruption

-Permettreounonlagénérationd’uneinterruptionenfindeconversionEOC

5)Déclenchementdelaconversion6)Récupérationdeladonnéenumérisée

M1-Archi 2016-2017 Page4

§ CNA(DAC)

Les microcontrôleurs de la famille STM32 intègrent pour la plupart des DAC avecdifférentes configurations en fonction de la série STM32Fx. Dans le microcontrôleurSTM32F446RE,ilyaunDAC12bitsavecdeuxcanauxdesortie.

Sesprincipalescaractéristiquessontrappelées:

.left or right data alignment in 12-bit mode

.synchronized update capability

.noise-wave generation

.triangular-wave generation

.dual DAC channel independent or simultaneous conversions

.DMA capability for each channel

.external triggers for conversion Pourtouteinformationcomplémentaire,vouspouvezvousréféreràladocumentationconstructeurduSTM32F446RE:http://www.st.com/content/ccc/resource/technical/document/datasheet/65/cb/75/50/53/d6/48/24/DM00141306.pdf/files/DM00141306.pdf/jcr:content/translations/en.DM00141306.pdf

II. Exercice1:Conversionanalogique/numériqueOn se propose de manipuler dans un premier temps le convertisseur analogique

numérique.Objectif:Onsouhaitefairel’acquisitiond’unetensionissued’unpotentiomètreviaune

desbrochesanalogiquesdisponibles(Ax).Enfonctiondelatensionissuedupotentiomètre,onallumeraplusoumoinsdeLEDSD0àD2quiserontconnectéesàl’aided’unecartefilledédiée (cf. plus bas). Pour cela, vous réaliserez le montage comme indiqué sur la figuresuivante:

Toutlematérielserafourniparl’enseignant.

M1-Archi 2016-2017 Page5

q 1ièrepartie:ConfigurationsousSTM32CubeMx

-LancerSTM32CubeMx-CréerunnouveauprojetpournotreboardNucleo64,STM32F446RE.-EffectuerdesuiteuneremiseàzérodelaconfigurationdesbrochesviaPinout/ClearPinouts.-DansClockConfiguration,vérifierqueleshorlogesSYSCLKestà84MHz.Releverlesfréquencesdeshorlogesdesservantlespériphériques,notammentPCLK1,PCLK2.

Question:Selonvous,quelleestl’horlogequiestenvoyéeverslespériphériquescommelesADC?

-Configurerl’ADC1demanièreàpouvoirfairel’acquisitiondusignalsurl’entréeIN0.-Danslesous-menuconfiguration,cliquersurADC1.Lesparamètresdeconfigurationdel’ADCsontvisualisablesetmodifiablesàpartirdecettefenêtre.

Question:Qu’estcequ’unprescaler?Quelleestl’horlogederéférencequiestreliéeàl’entréeduprescaler?

-Danslesous-menuconfiguration,cliquersurADC1.Lesparamètresdeconfigurationdel’ADCsontvisualisablesetmodifiablesàpartirdecettefenêtre.-Configurerl’ADCpourpouvoireffectuerdesconversionscontinues.-Autoriserlesinterruptionsgénéréesparl’ADCauniveauducontrôleurNVIC.

-DanslecontrôleurRCC,autoriserlesinterruptions(RCCglobalinterrupt).-VérifierdanslecontrôleurNVICquelesinterruptionssontbienautorisées.

M1-Archi 2016-2017 Page6

Unefoisquetoutestconfiguré,générerlecodeduprojetdelamêmemanièrequelesTPsprécédents:

DansProjectNameindiquerlenomdevotreprojet.DansProjectlocation,indiquerlerépertoiredevotreprojetoùseragénérerlecode.DansToolchain/IDE,indiquerMDK-ARMv5.DansLinkerSettings,vouspouvezobserverlatailledeszonesdeHeapetdeStack(Pile).

Dansl’ongletsuivant,CodeGenerator,sélectionner“Copyonlythenecessarylibraryfiles”.

PuisOK

M1-Archi 2016-2017 Page7

Enfin,dansl’ongletProject,GenerateCode.

CliquerensuitesurOpenProjectpourouvrirleprojetgénérésousµVision.

q 2ndepartie:DéveloppementducodesousKielµVision

-Compléterlecodegénérépourréaliserleprogrammedemandé.-Fairevaliderparl’enseignant

M1-Archi 2016-2017 Page8

III. Exercice2:DAC-GénérationdesignaltriangulaireNousavonsvudanslecoursqueleDACpermetlagénérationdesignauxcommedubruit,unsignal PWM, etc. Dans cet exercice, on souhaite configurer le convertisseur numériqueanalogiquepourgénérerunsignaltriangulaire.L’amplitudemaxdusignalseralamoitiédelapleineéchelleetlapériodedusignalserade81,92ms.Lapériodedusignalseracalculéeparl’intermédiairedutimer.Celui-cigénéreraunUpdateEventàchaquefindecycledecomptagequilanceralaconversiond’unnouveléchantillonauniveauduDAC.LaconfigurationduTimerdevraêtreprécise(valeurducompteur,fréquencedecomptagevialeprescaler..).

q 1ièrepartie:ConfigurationsousSTM32CubeMx

-SousSTM32CubeMX,créerunnouveauprojet.-Configurerl’horlogeetlereset(RCC).-AjouterensuiteunDAC.-DansParametersettingsduDAC,vouspouvezobservertroisparamètresdeconfiguration: 1)Outputbuffer, 2)Trigger 3)Wavegenerationmode(siuntriggerestsélectionné)Lepremierpermetl’utilisationounond’unbuffer

en sortie du convertisseur, permettant d’adapterl’impédancedesortiesansavoirrecoursàunampliop.

Le second permet de spécifier si un trigger desynchronisation(matérieloulogiciel)estutilisé.

Letroisièmeparamètren’estdisponiblequesiuntriggerestutilisé. Ilpermetdechoisir letypedesignalgénéré(triangleoubruit)ainsiquel’amplitude maximale de la sortie. La génération du signal sera donc déclenchée etsynchroniséeàpartirdusignaldetrigger.

-GénérerlecodeetouvrirKielµvision

q 2ndepartie:ConfigurationsousSTM32CubeMx

-Compléterlecodegénérépourréaliserleprogramme.-Fairevaliderparl’enseignant.

M1-Archi 2016-2017 Page9

IV. Exercice3:TraitementdesignauxNous allons reprendre le signal triangulaire généré lors de l’exercice 2. Sous uVision, onconfigurera le Timer 2 avec un prescaler de 2 et une période de comptage de 5(respectivementvaleurs3et6sousSTM32CubeMx).Legénérateurdesignaltriangleoccuperalapleineéchelleduconvertisseursoit4096pts(DAC_TRIANGLEAMPLITUDE_4095).Question:Quelleseralapériodedusignaltriangulaire?OnconnecteraensuiteunréseauRCcommeindiquéci-dessous.OnprendraR1=1ketC1=220nF(condensateurcéramiquebleu,code224).Lesignaltriangulaireseraappliquéenentrée(Ue)etonobserveralasortie(Us). SousSTM32CubeMX:

-AjouterunADCpour récupérer le signalde sortiequi sera connectéàuneentréeanalogique (A0 par exemple). On autorisera les interruptions indiquant la fin deconversion.-Ajouter un timer (Timer 1) qui permettra de déclencher périodiquement uneinterruptiondéclenchantlaconversiond’unevaleurparl’ADC.OnchoisiraunevaleurdePrescaleretdepériodepouravoiruneUEVtoutesles0,1ms(f=10kHz).

-GénérerlecodeetlanceruVision SousuVision:

-Modifierlecodepourpouvoirlancerletimer1enmodeinterruptionetlesous-programmed’interruptionpermettantdedémarrerlesconversionsnumériquesanalogiques.-Danslesous-programmed’interruptiondel’ADC,récupérerlavaleurluedansunevariableglobale.-Lancerledebug,chercheràvisualiserlesignalnumériséàl’aidedel’analyseurlogique.

Question:Expliquerlaformedusignaldesortie(Us).Sibesoin,regarderlaFFTdusignald’entréepuisdusignaldesortieàl’aided’unoscilloscopeprésentdanslasalle.