Programujeme STM32 nízkopříkonové aplikace Ing. Vojtěch Skřivánek
RCCC->CR |= RCC_CR_HSION; while
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR = (3 << PWR_CR_V
RCC->CR |= RCC_CR_HSIDIVEN;
RCC->CFGR |= RCC_CFGR_SW_HSI; while
RCC->CFGR = (RCC_CFGR_HPRE_DIV4)
RCC->CR &= ~RCC_CR_MSION; Za podpory firem
SIEMENS
Programujeme STM32 nízkopříkonové aplikace Ing. Vojtěch Skřivánek Vydání první 2022
© Ing. Vojtěch Skřivánek
© Mgr. Tomáš Zahradníček - TZ-one
ISBN: 978-80-7539-147-6 (PDF verze)
ISBN: 978-80-7539-148-3 (ePub verze)
ISBN: 978-80-7539-149-0 (mobi verze)
Poděkování Děkujifirmám SIEMENS zapodporupřipsanítétoknihy.
4.1.2Příklad1-ZměnafrekvenceMSIanepěťovéúrovně
4.1.3Vnitřnívysokorychlostnízdroj
4.1.3.1Příklad2–NastaveníHSI
4.1.3.2Příklad3–Frekvencearychlostprogramu
4.1.4Vnějšívysokorychlostníoscilátor
4.1.4.1Příklad4–Vnějšívysokorychlostníoscilátor
4.1.5Vnitřnínízkorychlostníoscilátor
4.1.5.1Příklad5–Vnitřnínízkorychlostníoscilátorajehokalibrace
4.1.6Vnějšínízkorychlostníoscilátor
4.1.6.1Příklad6-Vnějšínízkorychlostníkrystal
4.1.7Fázovýzávěs
4.1.7.1Příklad7–Využitífázovéhozávěsu
4.2.1Příklad8–Vyrovnávacípaměť
4.3.1Spotřebazapnutéperiferie
4.3.1.1Příklad9–Změnaspotřebyperiferie
4.3.2Distribucehodinovéhosignálu
4.3.2.1Příklad10–Distribucehodinovéhosignálu
5.1Laděníprogramuvúspornýchrežimech
5.2Nízkopříkonovýprovoznírežim
5.2.1Příklad11–Nízkopříkonovýprovoznírežim
5.3.1Příklad12–Principspícíhorežimu
5.4Nízkopříkonovýspícírežim
5.4.1Příklad13–Nízkopříkonovýspícírežim
5.5Odstavenýrežim ............................................
5.5.1Příklad14–Odstavenýrežim .................................
5.5.2Příklad15–ProbuzenípomocíperiferieUART
5.5.3Příklad16–ProbuzenípomocíperiferieLPTIM
5.5.4Příklad17–ProbuzenípomocíRTCAWU
5.5.5Příklad18–Probuzenípomocíbudícíhočasovače
5.5.6Příklad19–Probuzenípřidetekcinarušení
5.5.7Příklad20–ProbuzenípomocíperiferieCOMP
5.5.8Příklad21–ProbuzenípomocíperiferieI2C
5.6Pohotovostnírežim
5.6.1Příklad22–Pohotovostnírežim
6.1Příklad23–NastaveníGPIO .....................................
6.2Příklad24–NastaveníRTC ......................................
6.3Příklad25-Úspornýpřenosdat
6.4Příklad26-Spícírežimmístozpožďovacísmyčky
6.5Příklad27–Spícírežimvpraxi
6.6Příklad28–Programvpamětidat
Kapitola1 Úvod Tatoknihavolněnavazujenapředchozíknihyzedice„ProgramujemeSTM32“.Proto,pokudještěnemáte zkušenostiskontrolerySTM32,doporučujinejprvepřečístje.
FirmaSTMicroelectronicsmávesvémproduktovémportfoliurůznérodinymikrokontrolerů.Každárodina dominujevjinéoblastipoužití–vysokývýkon,bezdrátovákonektivita,prácesanalogovýmisignály,automotiveanebonízkýenergetickýodběr.Aprávěřada STM32Lxxx,donížpatříikontroler STM32L073RZ , sekterýmvtétoedicipracujeme,patřímezikontrolerynavrženétak,abyjejichpříkonbylcomožnánejmenší.
Knihasetedyjižnevěnujetomu,jakvyužívatperiferiekontroleru,alezkoumájejzjinéhohlediska.V knizesebudemezabývattím,covšechnomávlivnaenergetickounáročnostaplikacekontroleru.
Vkapitoláchbudemezkoumataporovnávat,jakýzdrojakmitočethodinovéhosignálumávlivnaenergetickýodběr.Dálesipopíšeme,jakéexistujíúspornérežimy,čímseliší,jakjevyvolat,jakjeopustitajaká majíomezení.Amimojinésetakédozvíme,jaképeriferiejsouučenyproprácivúspornýchrežimech.
Předpokládáse,žečtenářjižmázkušenostisprogramovánímmikrokontrolerů STM32 ,ví,jaksepracuje sknihovnímifunkcemi HAL ijednotlivýmiregistryaumípoužívat STM32CubeIDE
1.1Motivaceknihy Vdnešnídobadoslovavoláponízkopříkonovýchaplikacích.Nejenom,žesevposledníchletechobjevila spoustanovýchproduktůzoblastinositelnéelektroniky:
• fitnessnáramky,
• chytréhodinky,
• chytrébrýle(virtuálníarozšířenárealita) aledokonceiprodukty,kteréjsmedřívepoužívalibezbaterií,jsoudnespoháněnéprávějimi:
• bezdrátovásluchátka,
• přenosnébezdrátovéreproduktory,
• bezdrátovémyšiaklávesnice,
• zubníkartáčkya
• samočinnévysavačeasekačky
Samozřejměnesmímezapomenoutnamnožstvíjižklasickýchproduktů,kterésvojíenergiičerpajízbaterie:
• mobilnítelefony,
• tablety,touchpady,elektronickéčtečky
• digitálnífotoaparátyavideokamery
• přenosnéhudebnípřehrávače,
• holicístrojky,
• detektorykouřeaplynu,
• různáměřicízařízení(laserovédálkoměry,osobníváhy),
• dálkovéovladače,
Výdržvšechtěchtoproduktůmalýchrozměrůjeomezenákapacitoubaterie.Nazařízeníjsoukladeny požadavkyjakovysokývýkon,malávelikostanízkáhmotnost.Atovšechnoscomožnánejdelšívýdržíbaterie. Právěto,jakdlouhobudezařízenífunkčnínajednonabití,ječastovyhledávanýmparametremzákazníka. Tentoúdajmůžeovlivnit,jakúspěšnýproduktbude.
Vývojzvyšováníenergetickéhustotybateriíbohuželnenítakrychlý,jakorůstpožadavkůnavýkonmnohých zejmenovanýchzařízení.
Jednímřešenímtohotoproblémujerelativněúspěšnézvyšováníúčinnostielektronickýchsoučástek.Napříkladprocesorovájádra ARM posledníchněkolikletzvyšujísvůjvýpočetnívýkonzasoučasnéhosnížení energetickénáročnosti.
Druhýmřešenímjesprávnáaplikacekontroleru,kterácomožnánejvícešetříenergii.Aplikace,vnížse maximálnívýpočetníkapacitajádravyužívápouze,kdyžjetonezbytněnutné.Vekteréjekaždáperiferie zapnutapouzetehdy,kdyjetřebajivyužít.Kterákontroleruspí,kdyžzařízeníneníprávěvyužíváno.Toto řešeníjeplněvrukouprogramátora.
Aprávěvtétoknizesiukážemenástrojemikrokontroleru STM32L073RZ ,kterénámumožňujíšetřit energii.
1.2Strukturaknihy Knihaobsahujetřikapitoly.Každáznichsezaměřujenajinýzpůsobúsporyenergie.
Prvníkapitolasezaměřujenanastaveníkontrolerutak,abypodobuběhuprogramuvyžadovalconejmenší množstvíenergie.Nejvícesevníporovnáváspotřebapřirůznýchnastaveníchzdrojesystémovéhohodinového signálu.
Druhákapitolasezabýváúspornýmirežimy.Popisuje,jakérežimyexistují,včemselišízhlediskaspotřeby ajakámajíomezení.Takéukazuje,jakmezirežimypřepínat.
Posledníkapitolapojednáváoperiferiíchkontroleru.Představujeprácisperiferiemispeciálněurčenými proaplikacesnízkouspotřebou.Vpodkapitoláchjeporovnávánaenergetickánáročnostrůznýchperiferií.
Uvětšinykapitolapříkladůbudouvloženéapopsanégrafyproudovéspotřebykontroleru.Znichpatrné, jakseměníodběrnapříkladpřizměněfrekvencehodin,spuštěníperiferienebopřechodudoúspornéhorežimu.
Jetřebamítnapaměti,ženaměřenéhodnotynebylyzískányvlaboratorníchpodmínkách,protojetřebana něnahlížetjakonaorientační,sloužícípředevšímkilustracirelativníchrozdílů.
1.3Fontytextu Anglickézkratky,názvynabídekapolíčekvývojovéhoprostředíanázvyregistrůjsouvždynapsánytučnou kurzívou-např. AutoReload registr.Ačbybylokonzistentnějšípoužívatvknizebuďpouzečeské,nebopouze anglickénázvosloví,existuje-ličeskýekvivalent(např.názvuregistru),jepoužit,jelikožlépezapadnedověty, kterájepaksrozumitelnější.
Odkazynapoužitézdrojejsouuvedenyčíslemvhranatýchzávorkách–např.[1].
Odkazynabodyvobrázcíchagrafechbudoupopsánytučnýmpísmemvzávorce-např. (3).
Kapitola2 Vývojovénástroje Kprogramovánímikrokontrolerůjsouzapotřebítřizákladnínástroje.
Prvnímznichjesamozřejměsamotnýmikrokontroler.Nejsnazšímzpůsobem,jakmítkdispozicifunkční mikrokontrolerpřipravenýkprogramováníapoužíváníjehoperiferií,jeopatřitsivývojovoudesku.Firma STMicroelectronicsnabízíširokouškálucenověpříznivýchvývojovýchdesek.Mezinejznámějšípatřířadydesek Nucleo a Discovery.Tyseodsebelišítím,žezatímco Nucleo obsahujepřevážněpouzemikrokontrolera konektory, Discovery dostčastoskýtátakérozličnésenzory,tlačítka,LED,displejeajinéprvky,připojené přímokekontroleruapřipravenékokamžitémupoužití.
Druhýmpotřebnýmnástrojemjeprogramátormikrokontroleru,kterýdokáženahrátbinárníkódzPCdo pamětiprogramučipu.Tentoprogramátorjemožnékoupitsamostatně,alevýhodouvšechvývojovýchdesek firmySTMicroelectronicsje,žekaždáznichmávsoběprogramátoradebugger(používanýkladěníprogramu) jižintegrovaný.
Zbýváposlednínástroj,ačkolivjdevlastněonástrojedva,kteréjevšakmožnoopětzískatvjednom balíčku.Prvnímjevývojovéprostředí,veněmžjemožnésnadnopsátkódaspravovatprojektprogramu.
Druhýmjepřekladačzdrojovéhokódu,psanéhovjazyceC,dostrojovéhobinárníhokódu,kterémurozumí danýkontroler.FirmaSTMicroelectronicsnabízízdarmasvévývojovéprostředí STM32CubeIDE,vekterém jemožnénapsatzdrojovýkód,přeložitjejdostrojovéhokóduapomocíprogramátorujejnahrátdoprogramové pamětimikrokontroleru.
2.1Vývojovádeska Vývojovádeska,kterájepoužitanavšechnypříkladyvtétoknize,jezřadydesek Nucleo snázvem NUCLEO-L073RZ .
VývojovádeskaNUCLEO-L073RZ[2]
Deskaobsahuje,mimomikrokontroleru STM32L073RZ ,takéjižzmíněnýprogramátoradebuggersloužícíkladěníprogramu (1).Programátorsenacházívhorníčástidesky,kteroujemožnéodspodníodlomit.K programováníkontrolerůmimovývojovoudeskusloužíkonektor CN4 vlevéčásti (2).HorníčásttakéobsahujepřevodníkzUSBkomunikacena UART ,jehožvývodyCN3jsouvpravoodprogramovacíhokonektoru (3).Anijedenztěchtokonektorůnenítřebapoužívat,jelikožprogramátoripřevodníkjsouskontrolerem spojenymůstkymezihorníadolníčástídesky.
Nadolníčástideskysenacházídvětlačítka,jednoznich- B2 -sloužíkresetováníprogramumikrokontroleru (4),druhé- B1 -jeuživatelské (5),kteréjepřipojenénapinmikrokontroleruaježbudečastovyužívané vnašichpříkladech.
KroměLEDsignalizujícífunkciprogramátoruasprávnénapájeníjenadesceumístěnatakéjednauživatelskáLED LD2 (6),kteroulzepinemmikrokontroleruovládat.
Nakrajíchdeskypaknelzepřehlédnoutdvatypykonektorů.Vnitřnítvořenédutinkamijsoukompatibilní sevšemirozšiřujícímideskamiproplatformu Arduino.Vnějšíhřebínkovéjsoupřivedenykevšempinům kontroleru.
POZOR!! Nevšechnykonektoryjsouskutečněpřipojenykpinůmkontroleru.Někdyjenutnénapříslušné místonadescepřipájetnulovýrezistor,abydošlokpropojení.Důvodemje,žedanýpinjejižpoužitnapříklad programátorem.Detailyjemožnénajítvdokumentaci Nucleo desky[3].
Vývojovádeskamánasobětaképropojku JP6 (7),kteroujemožnérozpojitapřipojitmezikonektory ampérmetr.Právětoutocestoujsouprovedenavšechnaměřenívtétoknize.
Kroměvýšezmíněnýchfunkcídeskaještěnabízímožnostpřipájenívlastníhopřesnéhooscilátoru,místona měřeníproudovéspotřebyapřepnutínaexternínapájení.Obojíbudemevnašichpříkladechvyužívat.
Jelikožněkterépříkladyvyžadujíkomunikacidvouzařízení,jevhodnémítdvěvývojovédesky.Prodrtivou většinupříkladůjevšakjednaNucleodeskadostatečná.
ProsnazšíměřeníspotřebymáfirmaSTMicroelectronicsvesvémportfoliurozšiřujícídeskuX-NUCLEOLPM01A,kteráumožňujevelmipřesnéměřenístatickéidynamickéspotřebykontroleru.
2.2Vývojovéprostředí Jakjižbylozmíněno,výrobcečipuposkytujezdarmavývojovéprostředí STM32CubeIDE,vekterém jsouvytvořenyvšechnypříkladytétoknihy.
Totoprostředívsoběobsahujekonfigurátorperiferiíčipu,programováníasprávuprojektu,nahráníprogramudomikrokontroleruamožnostjeholadění(debuggování).
Sinstalacívývojovéhoprostředníseautomatickynainstalujeiovladačprogramátoru,kterýjeumístěnýna Nucleo desce,apřekladačzezdrojovéhokódunastrojový.
STM32CubeIDE jemožnéporegistracinawebovýchstránkáchfirmySTMicroelectronicsstáhnout zcelazdarma.Nejsnazšímzpůsobemnalezeníodkazukestaženíjezadatdointernetovéhovyhledávačeheslo „STM32CubeIDE“apravděpodobněhnedprvníodkazbudemířitnasprávnoustránku,kdenajdetetaké návodnainstalaciamanuálkpoužití.
Věřím,ženenínutnépopisovatinstalacivývojovéhoprostředí,kterájeplněautomatickáaintuitivnía nainstalujeivšechnynutnéovladače.
2.3Shrnutí Popřečtenítétokapitolybymělmítčtenářkúspěšnémunaprogramovánípříkladůuvedenýchvtétoknize připravenynásledujícínejnutnějšívěci:
• vývojovoudesku NUCLEO-L073RZ (proněkterépříkladyjsounutnédvě),
• USB kabelkpřipojenídeskykpočítači,
• počítačsnainstalovanýmvývojovýmprostředím STM32CubeIDE,
• a několikpropojovacíchvodičů kvzájemnémupropojenívnějšíchkonektorůvývojovédesky.
Stoutonezbytnouvýbavoujemožnésesmělepustitčtenínásledujícíchkapitol,kteréukazují,jakúsporně využívatkontrolerySTM32.