Transcript

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.