Skip to main content

Hatékony, robusztus és egyszerű

Megjelent: 2019. február 12.

ebv lidAz STMicroelectronics STM32 G0 MCU-sorozata

A mikrovezérlőknek, mint a beágyazott elektronikai alkalmazások nélkülözhetetlen építőelemeinek az alkalmazástól függően változatos követelményeket kell kielégíteniük. A számtalan követelményhalmaznak azonban van egy közös része: azok a fejlesztők, akiknek a mikrovezérlők felhasználásával kell beágyazott elektronikai alkalmazásokat kidolgozniuk, elvárják, hogy hatékony, robusztus és egyszerűen kezelhető eszközzel dolgozhassanak. Ezt az igényt „veszi célba” az STMicroelectronics (STM) új mikrovezérlő-típuscsaládja.

 

A beágyazott alkalmazások tervezése az alkalmazástervezéssel kezdődik. Ez a mondat csak látszólag semmitmondó: a tervezőnek először azt a funkcióhalmazt kell kigondolnia, amit a felhasználó a végtermék használatakor „lát” – és ezt akár szó szerint is vehetjük: a tervezés első lépése nem ritkán a kezelőfelület kitalálása. Ekkor dől el, hogy a végtermék mennyire lesz „felhasználóbarát”, mennyire egyszerűen kezelhető, milyen „elhibázható” feladatoktól, menürendszerekben való reménytelen bolyongástól vagy más felesleges „körülményeskedéstől” mentesíti a felhasználót, és így tovább. Egyszerűen szólva ez „adja el” a terméket. Ha ezt kitaláltuk, számba vehetjük az alkalmazás végrehajtásához szükséges erőforrásokat és alkotóelemeket (például egy mosógéphez kell hajtómotor, fék, szelepek, fűtőtest, szivattyú, szűrő stb.), a feladat maradéktalan megoldásához szükséges információkat (vízhőmérséklet, folyadékszint, fordulatszám, az ajtó nyitott vagy zárt állapota stb.) és megszerzésük eszközeit (a szenzorokat), majd, amikor már mindezzel elkészültünk, lendületesen odarajzolunk a tömbvázlatra egy négyszöget ezzel a felirattal: „vezérlés”. Végül ezt – gyakorlatilag – az összes többi részegységgel „összemadzagoljuk”, és kijelentjük: kész a rendszerterv. Ám a részletes tervezés során egyszer csak nem halogatható tovább az a feladat sem, hogy tartalommal töltsük meg a „vezérlés” feliratú dobozt. És ettől kezdve már „nem mindegy”, mennyire „barátságos”, egyszerűen használható, tervezőeszközökkel jól támogatott, megbízható, olcsó, kicsi és igénytelen az a vezérlőeszköz, amire a teljes rendszer irányítását, felügyeletét, védelmi, diagnosztikai és biztonsági funkcióit bízni szeretnénk. Amíg tehát a végterméknek „felhasználóbarátnak”, a vezérlés feladatát ellátó mikrokontrollernek „tervezés- és gyártásbarátnak” kell lennie. E cél elérése felé tett egy újabb lépést az STMicroelectronics (STM) az STM32 G0 mikrovezérlő (MCU) sorozatának kidolgozásával.

 

  01ebv

1. ábra  Az egyszerű tápfeszültség-ellátás kisebb tokozatot és/vagy több elérhető I/O-kivezetést tesz lehetővé

 

Mit tud az STM32 G0 család?

Fordítsuk meg a kérdést: mit nem tud? A mikrovezérlő-termékvilág műszaki „csúcsparaméterei” nem forognak veszélyben, átlagos beágyazott alkalmazási feladatok megoldására tervezték – ám nem csak a jelen, hanem a közeljövő igényeit is figyelembe véve. Ennek megfelelően akkor mégis mivel emelkedik ki a szinte áttekinthetetlenül széles eszközkínálatból? Azzal a képességgel, hogy az átlagos feladatokat hatékonyan, egyszerűen és robusztusan lehet vele megoldani. Kezdjük az elején, a hatékonysággal.

 

A hatékonyság fogalmának legalább három megközelítését érdemes megemlíteni:

  • olyan műszaki paraméterek, amelyekkel az átlagos beágyazott vezérlési alkalmazások maradéktalanul és könnyen megvalósíthatók,

  • mindehhez ne legyen szükség különleges tervezői „bravúrokra” és extrém tervezési erőforrások mozgósítására,

  • ne csak a tervezése, de a tömeges alkalmazása is legyen költségkímélő (minimális alkatrészköltség, egyszerű NyÁK-technológia, kis méret és kevés számú külső alkatrész).

Az első igénypontról röviden: az STM32 G0-család alapja egy akár 12 DMA-csatornát is kezelni képes, memóriavédelmi egységgel[1] (Memory Protection Unit – MPU) ellátott ARM Cortex M0+ processzormag köré épített rendszercsip, amely 64 MHz órafrekvenciáig használható. Ez számtalan „átlagos” alkalmazás számára bőségesen elegendő számítási teljesítményt kínál: 64 MHz-es órajelnél 59 millió duplaszavas utasítás/s (DMIPS), és akár 142 CoreMark[2]-pontos teljesítmény is elérhető.

 

Hatékonyan kihasznált kivezetések

Mindjárt az elején meg kell említenünk az új családnak egy olyan tulajdonságát, amelyből számos más alkalmazási előny származik. Míg ma egy átlagos mikrovezérlőhöz három-négy tápfeszültség-hozzávezetést kell megfelelő feszültségekkel ellátni, az STM32 G0 mindössze egyetlen tápfeszültség/föld vezetékpáron át „megtáplálható”. Ha ezenkívül figyelembe vesszük azt is, hogy az STM32 G0 órajelellátását is külön kivezetés lefoglalása nélkül, beépített, RC-időzítésű, de így is ±1%-nál jobb pontosságú óragenerátorral oldották meg, ezzel – azonos kivezetésszámú tokozatot feltételezve, az általában megszokott típusokhoz képest – az új család tagjain akár 6…10 „hasznos” I/O-funkcióval is több érhető el. Így értelmet nyer az a tény is, hogy a család még 8 kivezetéses tokozatba zárt változatot is tartalmaz; a nyolc kivezetésből hat „hasznos” – analóg vagy digitális – I/O-vezeték áll rendelkezésre a beágyazott alkalmazás számára, és számos olyan egyszerű alkalmazást találhatunk, amelyhez ennyi is elegendő. Nem mellékes előnyök származnak abból is, hogy az egytápfeszültséges megoldás kevesebb szűrőkondenzátort igényel, amellyel csökken a vezérlés helyfoglalása és alkatrészeinek száma is, valamint számos esetben a négyrétegű, táp- és földsíkot is tartalmazó, költségesebb NyÁK helyett az egyszerűbb és olcsóbb, kétoldalas kivitel is megfelel. Ez különösen nagy előny a nagy sorozatú, tehát az anyagköltségre különlegesen érzékeny tömegtermékek előállítói számára.

 

03ebv


Megjegyezzük azonban, hogy ezzel az STM32 G0 család nem „zárkózik be” a kis kivezetésszámú, „faék egyszerűségű” alkalmazások világába: akár 100 kivezetéses LQFP-tokozatával (és az ezzel járó magas I/O-számmal), továbbá akár 512 kbájtos flash-tárolóterületével a nagyobb léptékű beágyazott alkalmazások kidolgozásakor is számításba vehető. Itt azonban érdemes egy kis kitérőt tenni. A félvezetőeszközök fejlesztése nem olcsó folyamat ugyan, de az egyetlen példányra vetített fejlesztési költségösszetevő a gyártott darabszám növekedésével egyre kisebb részt képvisel az eszköz árában. Ez utóbbit így – a tokozás költségén kívül – egyre inkább a felhasznált Si-hordozólemez felülete határozza meg. Ennek következtében a típuscsalád számos változata közül azok a legdrágábbak, amelyekben nagy a „helyigényes” funkciók (mindenek előtt a flashmemória és a statikus RAM) aránya. Amennyiben tehát a tervezőt elsősorban az eszköz ára motiválja (már pedig ki az, akit egy tömegtermék tervezésekor nem ez motivál?), rendkívül jól megtérül az az erőfeszítés, amit a programkód és a RAM-használat minimalizálására, és az ennek megfelelő típusválasztásra fordít.
A rendkívül kiterjedt „alkalmazhatósági tartományt” a kivezetésszám és a programtároló lehetséges párosításain és a széles tokozatválasztékon keresztül szemlélteti a 2. ábra. Ezen jól látható, hogy a szokatlan kombinációkat (például a nagy programtárolót, de kis kivezetésszámot) igénylő alkalmazások tervezői is találnak a követelményeikhez illeszkedő típusváltozatokat. (Megjegyezzük, hogy a cikk írásakor a termékcsaládnak még nem minden tervezett típusa rendelhető. Egyes, kereskedelmi forgalomba még nem került kategóriákat 2019 első félévétől érhetik el a felhasználók, és a család a tervek szerint 2020 első félévében válik teljessé.)
A beágyazott (és ezen belül is különösen az IoT) alkalmazásokban nagy jelentőségű a kis teljesítményfelvétel. Ebből a szempontból az MCU-család 100 µA/MHz alatti fajlagos tápáramigénye programfuttatáskor (azaz 3 V-os tápfeszültségről, a maximális, 64 MHz órafrekvencián is kevesebb, mint 6,4 mA áramfelvétel) meggyőzően hangzik, és különösen a hosszú nyugalmi és rövid működési ciklusokat váltogató IoT-alkalmazásoknál nagy fontosságú, hogy leállított üzemmódban – kikapcsolt flash és valós idejű óra (RTC) mellett – csak 3 µA a fogyasztása, de még alvó állapotban (amelyből bármilyen megszakítással vagy más külső eseménnyel, 6 órajelciklus alatt felébreszthető) sem fogyaszt többet 800 µA-nél. Az „energiaínséges” alkalmazásokat ezeken kívül is további energiatakarékos üzemmódok szolgálják.

 

Funkciók a (közel)jövőnek

Az egyszerű alkalmazhatóság nem azonos a szolgáltatások és képességek egyszerűségével. Az STM32 G0 család számos olyan funkciót egyesít magában, amelyek bármelyik korszerű MCU-ban megtalálhatók, de közülük nem egy jelentősen „túlteljesíti” azokat a követelményeket, amelyeket egy mai, átlagos, tömegalkalmazásra szánt, beágyazott rendszervezérlőtől szokásosan elvárhatunk:

  • akár 32 kbájt statikus RAM, és 64 vagy 128 kbájt flashmemória,

  • az időzítők felbontása a kétszeres órajel-frekvencia periódusideje (64 MHz-nél ez 8 ns!) 

  • 12 bites A/D-konverter, akár 2,5 Mminta/s mintafrekvenciával, 16-szoros hardveres túlmintavételezéssel,

  • 32 Mbit/s SPI-, 7 Mbit/s USART- és 1 Mbit/s I2C-kommunikáció, lényegesen gyorsabb a ma megszokottnál. Az USART-modul különleges előnye, hogy alvó állapotban tartható, amelyből adatkeret érzékelése is fel tudja ébreszteni – ezzel jelentősen hozzájárul a „ritkán kommunikáló” alkalmazások energiatakarékos működéséhez.

 

02ebv

2. ábra  A termékcsalád a „szokatlan” konfigurációs igények felé is kiterjed

 

Kommunikáció és I/O

  • Az ipari alkalmazások tervezői számára lehetnek fontosak az egy- vagy kétcsatornás megnövelt sávszélességű CAN-interfészek (CAN FD) és a 16 vagy 32 bites, nagy időfelbontású időzítők, analóg komparátorok (max. 2 db), D/A-konverterek (max. 2 db 12 bites), és a már említett A/D-átalakító.

  • Az USB 2.0-n kívül az – elsősorban „fordítva is bedugható” csatlakozójáról közismert – USB-C interfész intelligens energiaellátású (Power Delivery) változata is elérhető.

  • A készüléken belüli kommunikációra max. 4 db SPI- és max. 3 db I2C-, illetve max. 8 hagyományos soros (USART) interfész áll rendelkezésre (ezek szokásosnál nagyobb adatsebességét már említettük).

  • A maximális kivezetésszámú tokozatban akár 92 gyors I/O-ponthoz is hozzáférhetünk, és bármelyik I/O-vezetékhez programmegszakítási (interrupt) funkciót is rendelhetünk.

  • Az adatátviteli biztonságot szolgálja a valódi véletlenszám-generátor és a hardvergyorsító a 128/256 bites AES titkosításhoz, valamint egy egyedi termékazonosító kód.

 

DSCN3256

 

Hardverbiztonság

Bármennyire is alacsony árküszöböt szabunk meg egy beágyazott alkalmazásnak, a robusztus, megbízható működést nem „áldozhatjuk fel” ennek érdekében. Halvány piaci sikerre számíthat az a beágyazott vezérlésű tömegtermék, ami kisebb-nagyobb gyakorisággal „nem azt csinálja”, amit elvárunk tőle. Ennek elkerülésére az STM32 G0 család tagjaiba számos, hardverrel támogatott üzembiztonsági funkciót is beépítettek. Az eszköz folyamatosan felügyeli az órajel meglétét, rendelkezik a szokásos watchdog-funkciókkal a helytelen programfutás detektálása érdekében, a watchdog megszólalási időkésleltetését a mindenkori órajel értékéhez igazítva. A programkód integritásának felügyeletére hardveres ellenőrzőösszeg (checksum) -számító egység áll rendelkezésre, a flash tartalmát hibajavító kódolás (Error Correction Code – ECC), a RAM-ban tárolt adatok ellenőrzését pedig paritásvédelem biztosítja. A megengedett tápfeszültség-tartományból való kilépés (overvoltage, brownout) miatti hibás működés megelőzésére is megfelelő hardvervédelem szolgál.
A biztonságos működéshez a széles üzemi hőmérséklet-tartomány (–40…+125 °C), valamint a gyors tápfeszültség-tranziensek elleni magasfokú védettség is hozzájárul. És végül – bár inkább a gazdasági, mint a műszaki biztonság kérdésének tűnik – nem mellékes, hogy a gyártó hosszú ideig gyártásban kívánja tartani a családot, elhárítva ezzel azt a veszélyt, hogy egy sikeres végterméket csupán azért kelljen újratervezni, mert a betervezett vezérlőcsip gyártását beszüntették.

 

A fejlesztői ökoszisztéma

A fejlesztő számára jelentős előnyt jelent, ha a hardver és a szoftver fejlesztését „nem nulláról kell kezdeni”, illetve ha minél több és hatékonyabb eszköz támogatja az egyszerű prototípus- és alkalmazásfejlesztést. E tekintetben kétféle hardvereszköz (az STM32-családot támogató moduláris, Arduino-kompatibilis Nucleo demonstrációs kártya és egy, a teljes képességek tesztelésére alkalmas kiértékelő kártya) van forgalomban, és a gyártó Discovery sorozatába illeszkedő prototípusfejlesztő készlete is hamarosan elérhetővé válik.
A szoftverfejlesztéshez letölthető az STM32CubeMX elnevezésű segédeszköz, amely grafikus, vizuális megközelítést alkalmazva teszi lehetővé például a be- és kimeneti csatlakozópontok elrendezésének és funkciójának „testre szabását”, továbbá a belső órajelellátó rendszer (az „órajelfa”) konfigurálását. A szoftveralkalmazás a kimenetén olyan forráskódrészletet állít elő, amely a felhasználói szoftveralkalmazás forráskódjába illesztve fordítási időben elvégzi a szükséges programkonstansok beállítását, valamint olyan futtatható programrészleteket is generál, amelyek a belső perifériák inicializálását végzik el a program indításakor. A fentieken kívül jelentős könnyítést jelent az az energiafelvétel-kalkulációs funkció, amellyel például az energiafogyasztás-kritikus alkalmazások elemcsere nélküli üzemideje becsülhető meg.
Az STM32CubeMX programréteg és a „meztelen hardver” között egy hardverspecifikus szoftverréteg, az STM32CubeG0 működik, amelyet az asztali operációs rendszerekből ismert fogalmak szerint akár driverkészletnek is nevezhetnénk. Ez kezeli a programhordozhatósághoz szükséges információt, amely lehetővé teszi, hogy például a belső perifériákat egy „hardverabsztrakciós réteg” (Hardware Abstraction Layer – HAL) segítségével függetleníteni lehessen a hardverspecifikus vonatkozásoktól. Így a belső perifériák kezelése során a programozó mentesül például az abszolút periféria- és regisztercímek, jelzőbitek és hasonlók – könnyen elhibázható – kezelésétől, és ezektől elvonatkoztatott, „virtuális” perifériákként hivatkozhat rájuk.
A fentieken kívül számos könyvtári funkció tölthető le a gyártó honlapjáról: nyílt forráskódú TCP/IP programverem (IwIP), USB hoszt- és perifériainterfész, grafikus könyvtár (STemWin), nyílt forráskódú fájlkezelő rendszer (FatFs), nyílt forráskódú, valós idejű operációs rendszer (FreeRTOS). Ezek az STM32CubeG0 és az STM32Cube rétegek közé ékelődve szimbolikusan, szabványos szoftverinterfészen keresztül hívhatók a felhasználó által fejlesztett alkalmazásprogramból. A fentieken kívül számos „éles” alkalmazási példa is segíti a szoftverfejlesztő első lépéseit.
Megemlítjük még, hogy az általában „fizetősként” ismert (és nem is olcsó) ARM Keil integrált fejlesztőkörnyezet (Integrated Development Environment – IDE) „termékspecifikus”, de egyébként minden funkciójában működőképes változatát ingyenesen használhatják az STM32 G0 fejlesztői.
A cikk alapjául szolgáló terméket a vizsgálat céljából az STMicroelectronics termékeit Magyarországon képviselő EBV Elektronik Kft. bocsátotta rendelkezésemre.

 

Szerző: Tóth Ferenc

 

Az érdeklődők számára javaslom az alábbi webcímek felkeresését:
https://www.st.com/content/st_com/en/about/events/events.html/stm32g0-with-stm32cubemx-webinar.html
https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32g0-online-training.html

 

A témához kapcsolodó szakmai képzések:
https://www.avnet.com/wps/portal/ebv/resources/training-and-events/

Ezenkívül a mélyebb részletekről Nagy Krisztiántól (Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.), a cég támogatómérnökétől kaphatnak további tájékoztatást.

 

EBV Elektronik Kft.
1117 Budapest, Budafoki út 91-93.
Tel.: +36 1 436 7220
E-mail: Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát.
www.ebv.com

 

[1] Ez az egység gondoskodik arról, hogy a funkció bekapcsolása után a programtároló egy bizonyos, konfigurálható méretű részét meg lehessen védeni az illetéktelen külső hozzáférés és visszafejtés ellen. Itt tárolhatók például a biztonságkritikus programrészek vagy titkosítókulcsok. A védettség módjai: csak végrehajtható, kiolvasás ellen védett, felülírás ellen védett. A megoldás előnye, hogy a védett programterület mérete nem rögzített, így kevés veszteséggel, jól illeszthető az alkalmazás igényeihez – A szerk. megj.

[2] Kimondottan a beágyazott alkalmazások minősítésére kidolgozott tesztalkalmazás (benchmark). Lásd https://www.eembc.org/coremark/A szerk. megj.