M1-Archi 2016-2017 Page 1 ___________________________________________________________________________ Architecture des systèmes à microprocesseur TP n°2 : Timer / génération de signal PWM ___________________________________________________________________________ Objectifs de la séance -Compréhension du fonctionnement du Timer -Programmation des registres du Timer -Savoir générer un signal PWM à partir du Timer ___________________________________________________________________________ Matériel requis : -Une plateforme nucleo-board STM32F446RE par binôme ___________________________________________________________________________ Organisation de la séance : 1) Description du Timer et de ses registres 2) Configuration du projet sous STM32CubeMX 3) Génération d’un signal d’horloge 4) Génération d’un signal PWM 5) 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. Introduction Lors de cette séance, vous allez mettre en œuvre un périphérique incontournable des microcontrôleurs, le timer. Le timer est un compteur configurable de 16 ou 32 bits permettant de délivrer une base de temps, servant généralement de référence dans toutes sortes d’applications. Le STM32F446RE possède 17 timers ; dont 12 de 16 bits et 2 de 32 bits, les 3 restants étant dédiés au SysTick et à 2 watchdog 1 . 1 Documentation complète du STM32F446RE disponible ici (début page 446): http://www.st.com/content/ccc/resource/technical/document/reference_manual/4d/ed/bc/89/b5/70/40/dc/DM0013518 3.pdf/files/DM00135183.pdf/jcr:content/translations/en.DM00135183.pdf Documentation des timers des STM32 : http://www.st.com/content/ccc/resource/technical/document/application_note/group0/91/01/84/3f/7c/67/41/3f/DM002 36305/files/DM00236305.pdf/jcr:content/translations/en.DM00236305.pdf
20
Embed
TP n°2 Timer PWM F446 - ENSEA · Architecture des systèmes à microprocesseur TP n°2 : Timer / génération de signal PWM _____ Objectifs de la séance -Compréhension du fonctionnement
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
è Horlogeinterne(CK_INT)è D’unebroched’entréeexterne(Externalclockmode1)è D’untriggerexterned’entréeETR(Externalclockmode2)è Deplusieurstriggersinternes(ITRx).Parexemple,danslecasoùuntimer
o UpcountingDans cemode, le compteur compte de 0 jusqu’à la valeur définie dans le registre
TIMx_ARR.Puisilrecommenceà0etgénèreunévènementd’overflow(UpdateEVent-UEV).Dans le cas d’un compteur à répétition, cet UEV après que le compteur est effectuéTIMx_RCR+1boucledecomptage.Sinon,l’UEVestgénéréàchaqueoverflow.Unflagd’interruptionpeutaussiêtregénéré.
M1-Archi 2016-2017 Page4
Figure2:Upcountingmodeavecseuilà0x36(TIMx_ARR)
etprescalingd’horlogeà1
o DowncountingMêmeprincipequedanslecasprécédentoùcettefois-ci,lecompteurdécrémentede
la valeur seuil (TIMx_ARR-1) jusqu’à 0, puis recommence si la répétition est activée.L’événementestaussigénéréàlafindeladécrémentation.
o Center-alignedmode(up/downcounting)Danscemode,lecompteurvade0àlavaleurduregistreTIMx_ARR–1,génèreun
o RepetitioncounterNous avons vu qu’il était possible de compter/décompter demanière répéter un certainnombredefoisindiquéparleregistreTIMx_RCR,avantdegénérerunUEV.CeciesttrèsutilepourlagénérationdesignauxdetypePWMparexemple.Surlafiguresuivante,onpeutobserverl’impactduchoixdelavaleurdunombrederépétitionindiquédansTIMx_RCRsurlagénérationdesUEV.
M1-Archi 2016-2017 Page5
Impact
• ModeCapture/CompareDans ce mode, l’objectif est l’acquisition d’un signal (Capture), son filtrage puis la
Cette fonction permet le contrôle et la génération de signaux. Elle peut aussi êtreutiliséepourindiquerlorsqu’unepériodedetempsprécisevientdes’écouler,enpositionnantunesortieà0ou1parexemple.Commesonnom l’indique, l’objectifestdecomparer lavaleurducompteuraveccelleduregistredecapture/compare(TIMx_CCRx).Achaquedétectiondevaleurégale,l’étagedecomparaisonpeutalors:
• PWM(cf.p263[1])Letimerpeutaussipermettrelagénérationd’unsignaldontlafréquenceetlerapportcycliquesont contrôlables par des registres. On peut alors générer un signal dont la largeur desimpulsions est modulée (PWM). Le registre TIMx_ARR (compteur) permet de définir lafréquencetandisqueleregistreTIMx_CCRxcontrôlelerapportcyclique.
Le timer est capable de générer un signal PWM dans lemode ‘edge-aligned’ ou ‘center-aligned’.Cechoixs’effectueparlesbitsCMSduregistredeconfigurationTIMx_CR1.
a) b)Figure:edge-alignedmode(a)vscenter-alignedmode(b)(TIMx_ARR=8)
Cemodepermetdedéclencher le compteur en réponse àun stimulus et de générer uneimpulsionpendantuneduréeprogrammableainsiqu’aprèsundélaiprogrammable.La sélection de cemode s’effectue enmettant le bit OPM à 1 du registre TIMx_CR1. Lecompteurs’arrêteraalorsàlagénérationduprochainévènement.Unexempleestdétaillédansledoc[1].
Dans cemode, le compteur est activé en réponse à unévénement sur uneentréesélectionnée.Dans l’exemple suivant, le compteur est activé lors de la détectiondu frontmontant sur l’entrée TI2. Le délai d’activation est lié au circuit de resynchronisation surl’entréeTI2.
Figure:Modeesclave,lemode‘trigger’
Danslemêmeprincipe,ilexistelemodetrigger+externalclockmode2(cf.p281[1]).Danscecas,enplusde l’activationducompteurà ladétectiond’unévénementsuruneentréedédiée,unehorlogeexterneestdélivréeaucompteur.Leprincipeest illustrésur la figuresuivante:
Comme au TP précédent, on se propose d’utiliser l’outil STM32CubeMX pourconfigurergraphiquementlemicrocontrôleur.Onyspécifienotammentlessourcesd’horloge,lespériphériquesquel’onsouhaiteutiliser,lessourcesinterruptions,etc.
4. VouspouvezobserverdanslafenêtrePinout,l’ensembledespériphériquesquipeuvent être utilisés ainsi que les OS temps-réels et autres fonctionnalitéslogicielles.
5. AcôtédePinoutsetrouveclockconfiguration.
Danscettefenêtre,vouspouvezgraphiquementdéfinirlessourcesd’horlogepourconfigurerl’horlogeprincipale(SYSCLK)dumicrocontrôleur.Vousnoterezqu’ilexisteplusieursentréespossibles (HSI/HSE et PLLCLK). En d’autres termes, vous pouvez choisir entre une sourced’horloge interne (HSI - 16MHz), une sourced’horloge externe (HSE – 4 à 26MHz) et une
M1-Archi 2016-2017 Page13
horlogegénéréeparunePLL(PLLCLK).Deplus,vousremarquerezquel’horlogedesbusetdespériphériquesdépendentdeSYSCLK,hormisl’horlogepourl’USBainsiquepourl’audio(I2Sclock).Dans la fenêtre Pinout, indiquer comme source d’horloge HSE (High Speed Clock) que lasourced’horlogeprovientduCrystal/CeramicResonator.
Nous avons vu aussi qu’il existe un registre spécifique de contrôle au sein dumicrocontrôleurpermettantdeconfigurerlessourcesd’horloge.C’estleregistreRCC(ResetandClockControl).
Dans clock configuration, modifier certains éléments afin d’obtenir une horlogeSYSCLKde84MHZ.
Les horloges fournies aux timers sont définies à partir des horlogesAPB1_TIMER_Clocks (TIMER 2,3,4,5,6,7,12,14) et APB2_TIMER_Clocks (TIMER1,8,9,10et11).
Pourpermettreune interruptionde reset, il estnécessairede l’autoriserauniveau du contrôleur d’interruption NVIC comme indiqué sur la figure suivante,accessiblevialafenêtreconfiguration:
fois configurée, retourner dans la fenêtre configuration, puis GPIO. Vousnoterezcommentaétéconfiguréelabroche(push-pull…)Optionnel:delamêmefaçonquePA5,onpourraitconfigurerlabrochePC_13entantqu’entréed’interruptionGPIO_EXTI13.Onrappellequecettebrocheestdirectement reliée au bouton poussoir utilisateur. Dans la fenêtreconfiguration,puisGPIO,vousdevezobtenirl’imagesuivante:
Modifier les paramètres du Prescaler et de Counter Period pour que lecompteurdupuisseavoirunepériodedecomptaged’1s.Dans l’ongletNVIC Settings, cochez la case Enable pour TIM1 update andTIM10 global interrupt. De cettemanière, une interruption sera générée àl’issuedechaquecycle.ApplyetOK.
Sous STM32CubeMx, créer un nouveau projet comme pour l’exercice précédent jusqu’àl’étape7incluse.L’étape8comprendralaconfigurationdutimer1pourgénérerlesignal.Unefoisquetoutestcorrectementconfiguré,générerlecodecommeprécédentetlancerµVision.
Onsouhaitequeletimerpuisseêtredéclencherparl’intermédiaired’unsignalexternedecommande.Enfonctiondelavaleurdecesignal,onactiveralecomptageounon.Onémuleracesignaldecommandeparl’intermédiaireduboutonpoussoir.Vousvousréfèrerezàladocumentationpoursavoirsurquellebrochedoitêtreenvoyélesignaldecommande.Onpourraémulerunsignalprovenantdel’extérieuràl’aideduboutonpoussoir. Lors de l’appui, le timer sera activé, sinon il sera bloqué. Pour montrerl’activitédutimer,onseproposed’allumerparinterruptionlaledtouteslessecondes.-SousSTM32CubeMx,CréerunnouveauprojetetconfigurerleTimer1enMode‘Gated’,lesentréessortiesetlessourcesd’interruptions.-SousuVision,Modifierlecodesibesoin-Fairevaliderparl’enseignant.
III. Bilanetconclusion
Lors de ce TP, vous avez pu mettre en œuvre un périphérique indispensable aumicrocontrôleur.Des interruptionspériodiquespeuventainsi rythmer lecyclede réveildumicrocontrôleur, le déclenchement d’acquisition et de réceptionde signaux pour d’autrespériphériquescommelesconvertisseursA/NetN/A,encoderdesdonnées,…IV. Références