Kasutaja tarvikud

Lehe tööriistad


artiklid:stm32

STM32

STM32

STM321) näol on tegu STMicroelectronics-i 32 bitisel ARM Cortex M32) tuumal põhineva mikrokontrollerite seeriaga. Cortex M3 kavandati odavaks ja võimekamaks asenduseks 8- ja 16-bitistele mikrokontrolleritele ning arendati lõplikult välja 2006 aastal. ST hakkas STM32-te tootma 2007 aasta suvel. Cortex M3 käsustikuks on ARM ja ARM thumb parematest külgedest loodud thumb23), mis on energia- ning mälusäästlikum kui selle eelkäijad.

STM32 mikrokontrollerid on jagatud kahte gruppi: Access ja Performance. Esimese grupi mikrokontrollerid on odavamad ja tagasihoidlikumad – taktsagedus on neil kuni 36Mhz, mälu on vähem, kiiremad andmesiinid puuduvad ja perifeeriat pole dubleeritud. Performace grupil on taktsagedus kuni 72Mhz, lisatud on USB, CAN ja mälukaardi tugi ning perifeeriat on kordistatud. Hind on esimesel grupil alates ~6 USD ja teisel ~9 USD. Järgnev skeem näitab gruppide erinevusi:

Tooteseeria

Kokku on ST-l hetkel tootmises 46 erinevat kiipi. Suurimal kiibil on järgmised omadused:

  • Kuni 72Mhz taktsagedus
  • 512KB Flash programmimälu
  • 64KB SRAM muutmälu
  • 112 IO viiku
  • Neli 16 bitist universaalset loendurit,
  • Kaks 16 bitist 6 PWM kanaliga loendurit
  • Kaks valvekoera
  • Kaks I2C siini
  • Viis USART siini
  • Kolm SPI siini
  • CAN (2.0B)
  • USB 2.0 full speed device
  • Välise mälu ja mälukaartide tugi.
  • 21 ADC sisendkanalit
  • 4 DAC väljundit
  • 12 kanaliga kaks DMA kontrollerit
  • RTC - reaalaja kell
  • Raudvaraline CRC kalkulaator
  • JTAG liides

STM32 mikrokontrolleri arhitektuur:

Arhitektuur

Kiibid töötavad 3.3V pinge pealt, millest sisemine pingeregulaatori teeb tuuma jaoks 1.8V. Kõik pakendid on pindliides tehnoloogias jalgade arvuga 36 kuni 144. Kiibi maksimaalne võimalik voolutarve on 150mA. Üks viik võib tarbida kuni 25mA. Väidetavalt on STM32 kõige voolusäästlikum 32 bitine mikrokontroller.

Perifeeria

Järgnevalt on välja toodud nii positiivsed ja negatiivsed märkimisväärsed omadused kontrolleri eri osade kaupa. Võrdluse aluseks on tüüpilised 8-bitised mikrokontrollerid AVR ja PIC.

Tuum

  • Thumb-2 käsustik.
  • Katkestuste tekitamise mehhanism on väga väikese viitega.
  • Flash mälust saab protsessori programmikoodi lugema panna kahelt paralleelselt siinilt, et korvata flash mälu aeglust.
  • Programmi koodi saab käivitada ka muutmälust, et flash mälust tulenevat pudelikaela vältida.

IO viigud

  • Kaheksa erinvat GPIO viikude seadistamise võimalust (input floating, pull-down, pull-up, analog input, output push-pull, output open-drain)
  • Erinevaid IO siini viikusid saab Reset-Set registri abil muuta ühe takti jooksul. Sedasi pole vaja karta vaheletulevate katkestuste pärast.
  • Kriitilistes rakendustes saab IO viikusid lukustada, et nende väärtus mitte-mingil juhul tarkvara vea tõttu ei muutuks.
  • Mitmeid perifeeria IO viikusid saab ümber kaardistada ja sedasi elektriskeemi koostamist lihtsustada. Meenutab FPGA-d.

Katkestused

  • Välised katkestused pole seotud kindlate viikudega, viikusid saab ümbekaardistamisega ise valida.
  • Välise katkestuse saab genereerida tarkvaraliselt ilma vastavat viiku kasutamata.
  • Katkestuste prioriteedid on määratavad.
  • Toitepinge langemisel saab katkestuse tekitada.

DMA

  • Kiibis on vastavalt tüübile kas 1 või 2 DMA kontrollerit, esimene 7 ja teine 5 kanaliga.
  • Kõik andmetega tegelevad kontrolleri osad saavad kasutada DMA kanaleid. Need on ADC, DAC, SPI, I²C, loendurid, CAN, USB, USART.
  • DMA kanalite kasutamine on seadistatav ja kuna kanalid on eraldi siinidel siis ei sega need üksteist ega protsessorit.
  • Kanalid on seadistavad nii perifeeria-perifeeria kui perifeeria-muutmälu vahel.
  • DMA kontroller võimaldab mälu saab kasutada ringpuhvrina – näiteks USART saatepuhvrina.

ADC

  • Täpsus kuni 12 bitti.
  • 16 valitavat sisendkanalit.
  • Olenevalt kiibist ka 2 muundurit.
  • Kuni miljoni teisendust sekundis (56Mhz taktsageduse korral).
  • Analoogpinge valvekoer (watchdog). Saab tekitada katkestuse kui pinge on alla või üle piiri. Kehtib kas kõigile kanalitele või ühele määratule.
  • Muunduri kalibreerimine.
  • Kahe muunduri sünkroonkasutamine kiiremaks teisendamiseks.
  • Üks kanal on kiibisisese temperatuurianduri jaoks

DAC

  • Täpsus 12 või 8 bitti.
  • Kaks muundurit, mõlemal 2 väljundit.
  • Väljundpuhvrid, väiksemal koormusel ei vaja võimendit.
  • Muudamise aeg sõltub toitepingest ja koormusest, kuid tundub, et jääb loetud protsessoritaktide piiresse.
  • Saab kasutada ka heli tekitamiseks.

Loendurid

  • Kiibil on kolme liiki loendureid – advanced, general purpose ja basic.
  • Keerukamatel loenduritel on nii üles kui alla loendamise võimalus.
  • Loendurite kanalitel on kõigil väljund ja sisend, nii et neid saab kasutada nii PWM signaali tekitamiseks kui selle pikkuse mõõtmiseks.
  • Keerukad loendurid on spetsiaalselt ette nähtud ka Halli sensoritega ja koodritega mootorite juhtimiseks.
  • Loendureid saab mitmel viisil omavahel siduda.
  • DMA võimaldab mitmeid erinevaid automaatseid loendurite väärtuste edastamise/omistamise viise.

RTC

  • Peab arvet kellaja ja kuupäeva üle.
  • Töötab varutoite pealt.

Watchdog

  • Kiibis on raudvaraline taaskäivitamist teostav valvekoer ja teine, tarkvaraliste „kinnikiilumiste“ vastane valvekoer.

Andmeside

  • Sisaldab USB device liidest. Host ja OTG liidesed puuduvad.
  • SPI siini taktsagedus kuni 18Mhz. SPI liidesesse on integeeritud ka I²S audio protokoll.
  • I²C liidesel on ka SMBus tugi.
  • USART liides ühildub ka LIN, IrDA ja Smartcard liidestega.
  • SPI, I²C ja USART jaoks saab kasutada raudvaralist CRC kalkulaatorit.

Kasutamine

Koodi laadimine

Programmikoodi saab STM32-sse laadida JTAG-i või spetsiaalse SWD nimelise jadaliidese kaudu. Võib kasutada ka alglaadurit mis kirjutatakse kontrolleri mällu juba tootmistsükli käigus. Sellega saab ühendust tavalise UART jadaliidese konsooliga – näiteks Hyperterminaliga. Programmifaili saatmine selles toimub standardse YModem protokolliga.

Arendustarkvara

Nii nagu enamuste mikrokontrollerite arendustarkvara, on ka STM32 oma valdavalt tasuline. Tasulist C/C++ kompilaatorit pakuvad tuntud nimed IAR ja Keil ning lisaks neile veel 8 tarkvara arendajat. Mõned neist on loonud vaid programmeerimiskeskkonna mis kasutab vabavaralist GNU C/C++ kompilaatorit. GNU kompilaatori ARM Cortex M3 arhitektuurile lõi Codesourcery4), kes pakub kompilaatorit küll tasuta, kuid samas müüb komplekset arenduskeskkonda koos teekide ja siluriga. Tasuta arendusplatvorm on STM32 jaoks võimalik, kuid eeldab palju foorumite uurimist, et kõik tööle saada. Väga populaarne IDE on Eclipse.

Programmi silumine

Kui soov on programmi siluda, siis selle tegemiseks on vaja JTAG programmaatorit ja tasulist tarkvara. Ainuke teadaolev tasuta silumistarkvara on OpenOCD. Selle seadistamisega tuleb jällegi vaeva näha.

Teegid

ST on STM32 mikrokontrollerite jaoks loonud ka raualähedase tarkvarateegi mida pidevalt uuendatakse. Teek ühildub erinevate STM32 seeria mikrokontrolleritega, nii et riistvara muutus ei tingi programmikoodi muutmist. Paraku on STM32 teegi ülesehitus üsna harjumatu. Nimelt kasutatakse perifeeria seadistamiseks spetsiaalseid struktuur-muutujaid mitte funktsiooni parameetreid mis on üsna harjumatu ja ei tundu kõige effektiivsem lahendus olevat. Näiteks nii toimub mõne IO viigu seadistamine:

GPIO_InitTypeDef GPIO_InitStructure;
 
/* Configure PD.08, PD.12 and PD.14 as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_12 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitStructure);

Võrdlus teiste ARM Cortex M3 mikrokontrolleritega

Peale ST toodab Cortex M3 mikrokontrollereid Luminary Micro5) (LMI) kes oli ka esimene selles vallas. LMI seeria kannab Stellaris nime. Stellarise ja STM32 on mõlemad sama tuumaga kuid erinevad perifeerias ja valmistamistehnoloogias. Stellarise kiibid on vanemas (suuremas) tehnoloogias toodetud ja võimaldavad kuni 50Mhz taktsagedust. LMI tooterivi on aga pikem ja neil leidub ka Etherneti ja USB hostiga kiipe. Samas puudub nende kiipidel DAC ja ADC täpsus on väiksem. Muutmälu on mõlemal kuni 64KB kuid STM32 programmimälu on 512KB Stellarise 256KB vastu.

Erinevusi on Stellaris ja STM32 omaduste vahel veel rohkemgi ja öelda kumb on parem on üsna võimatu. Üldiselt sõltub ühe või teise eelistamine rakendusest. Mis aga oluliselt Stellarisele pluss-punkte toob on tarkvarateek. Erinevalt STM32 harjumatust teegi ülesehitusest on Stellarise oma palju loogilisem ja selle lähtekood näeb parem välja. Stellarise teek sisaldab veel ka graafiliste LCD-de kasutamise teeki mida arendusplaatidel hea kasutada on. Muidugi on LMI-l olnud ajaline edumaa oma Stellarise teeki arendada ja näiteid luua, kuid ST pressib ka kõvasti järgi.

STM32Primer

Kokkuvõte

STM32 on sobilik asendus odavatele ja väikesekorpuselistele 8-bitistele mikrokontrolleritele. Kõigi parameetritega ületab ta AVR ja PIC mikrokontrollereid. Paratamatu miinus on ainult tundmaõppimise vaev, kuid see on lihtsam tänu raudvaralähedasele teegile. Üldjuhul pole registritega otse tegeleda vajagi.

Seda aga, kas 32 bitiseks mikrokontrolleriks valida just STM32 või Stellaris, ARM Cortex M3 või ARM7, või hoopis midagi muud, on raske öelda. Kuid tänu mugavalt kompleksele ehitusele ja odavale hinnale tasub STM32Primer6) nimelist demo-komplekti lähemalt uurida küll.

Downloads

Autor

artiklid/stm32.txt · Viimati muutnud: 2017/11/08 20:34 persoon rain.ellermaa