Skip to main content

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 4. rész

Megjelent: 2021. május 12.

Endrich lid

A GPIO és az ADC programozása

A cikksorozat előző részeiben áttekintettük a GigaDevice GD32™ARM® Cortex® és RISC-V MCU sorozat architektúráját, később ismertetésre kerültek a mikrokontroller-családhoz kapható kiértékelő és kezdőkészletek is. Ebben az írásban bemutatjuk, hogy miként lehet ezekkel az eszközökkel megkezdeni a munkát a CrossWorks for ARM 4.1. fejlesztőrendszer használatával, és példaként megírunk néhány C++ mintaprogramot, amelyek az MCU egyes részeinek működtetését végzik.

 

A GD32® egy új 32 bites magokkal ellátott, alacsony fogyasztású, univerzális, nagy teljesítményű mikrovezérlő-család, amely integrálja a tervezés egyszerűsítéséhez és a költségtakarékos, mégis innovatív termék előállításához elvárt funkciókat. A GigaDevice szabadalmaztatott „gFlash” memóriatechnológiájával kiegészítve egy komoly mikrovezérlő-vonal áll a tervezőmérnökök rendelkezésére. A GD32®-család minden mikrovezérlője az ARM® Cortex® vagy RISC-V processzormag köré szerveződik, ami a 108 MHz maximális órajelével és a beépített flashmemória azonnali elérhetőségével (Zero-Wait-State) maximális hatékonyságot biztosít. A GD32® sorozatú mikrokontroller használata nemcsak a fejlesztők, de a felhasználók számára is sok előnnyel szolgál.
Az MCU maximális sebessége a versenytársakénál 50%-kal többet nőtt. A kódfuttatás hatásfoka ugyanolyan órajel mellett 30-40%-kal nagyobb. Az áramfogyasztás ugyanolyan frekvencia esetén 20–30%-kal csökkent. Ezen tulajdonságok teszik lehetővé, hogy a GD32® sorozatú GigaDevice MCU-kat az alkalmazások széles spektrumában lehessen használni.
A GD32® sorozatú mikrokontrollerek teszteléséhez és a fejlesztés megkönnyítéséhez a GigaDevice különböző tudásszintű kiértékelő kártyákat és kezdőkészleteket kínál az egyszerű programozó és hibakereső moduloktól a maximális hardverkiépítésű tesztalaplapokig, ahogy azt cikksorozatunk előző részében részletesen tárgyaltuk.

 

GD32® kezdőkészlet

A GigaDevice kezdőkészlet az MCU kivezetéseihez illeszkedő csatlakozó felületeket (Extension Header) kínál a felhasználó számára a gyors prototípuscsatlakoztatáshoz és -teszteléshez. Minden ilyen eszköz tartalmazza a GigaDevice saját GD-Link programozói és hibakereső interfészét is, amin keresztül USB kábel segítségével kapcsolódhatunk a személyi számítógéphez, ezzel biztosítva a kártya tápellátását és az adatkapcsolatot is a mikrokontroller programozásához és a szoftver hibakereséséhez.

 

1. ábra A GD32F170C8T6 GigaDevice GD32™ ARM® Cortex®-M3 kezdőkészlet

 

 

Fejlesztőeszközök – CrossWorks for ARM 4.1

A GD32®-család integrálja azokat az MCU jellemzőket, amelyek lehetővé teszik a gyors, könnyű és professzionális beágyazott rendszertervezést, és a fejlesztők kezébe ad egy megfizethető és bizonyítottan innovatív, komplex félvezetőgyártási technológián alapuló MCU eszközt. A GigaDevice számos jól ismert ARM fejlesztőrendszerhez kínál kiterjedt eszköztámogatást, mint például a KEIL, az IAR vagy a „Rowley CrossWorks for ARM” platformfüggetlen integrált fejlesztői környezethez a mikrokontrollerek programozásához, hibakereséshez és ellenőrzéshez.
A népszerű ARM IDE a CrossWorks for ARM termékhez a gyártó speciális próbalicencet ajánl, a felhasználó döntheti el, hogy (30 napos) időkorlátos teljes verziót vagy 16 kB kódméretre korlátozott, egyébként teljes funkciós korlátlan ideig használható próbaváltozatot telepít. (A KEIL MDK-ARM Lite Edition próbaváltozatként szintén rendelkezésre áll, itt 32 Kbyte a méretkorlát). A CrossWorks for ARM egy komplett C/C++ és Assembly nyelvű fejlesztőrendszer, ami sok más mellett a Cortex-M mikrokontrollerekre való fejlesztést is messzemenőkig támogatja.
A CrossStudio integrált fejlesztői környezet egy natív módon felépített IDE, amellyel szerkeszthetjük, fordíthatjuk, a mikrokontroller flashmemóriájába tölthetjük a kódot, és lehetőség van a hibakeresésre is az SWD/JTAG interfészen keresztül.

 

Általános célú I/O portok (GPIO)

A GD32F170C8T6 GigaDevice GD32™ ARM® Cortex®-M3 mikrokontrollerben 55 általános célú I/O port áll rendelkezésre, 16-os blokkokba szerveződve a PA0 ~ PA15, PB0 ~ PB15, PC0 ~ PC15 lábakon, illetve a PD2, PF0/PF1, PF4 ~ PF7 lábakon érhetők el, és biztosítanak a külvilág felé logikai kapcsolatot a hozzájuk rendelt vezérlő- és konfigurációs regisztereken keresztül. A GPIO portok által használt lábak megosztva más alternatív funkciókkal is rendelkezhetnek (AF – I2C, SPI, USART, CCP, PWM, Clock, ADC), és egyenként beállíthatók digitális kimenetként (kimenetválasztó regiszteren keresztül „push-pull” vagy „open-drain” módban), digitális bemenetként („pull up/down” vagy lebegtetett), valamelyik alternatív periféria funkcióra (pl. SPI MISO vagy MOSI) vagy analóg bemenetként (ADC) is.

 

Endrich 4

2. ábra Az általános célú I/O bit felépítése

 


A portok maximális kommunikációs sebessége a kimeneti sebességregiszterek írásával változtatható, míg a „pull up/down” regiszterekkel kiválasztható, hogy a beépített „pull-up” és „pull-down” ellenállások legyenek-e használva, amikor pl. közvetlenül egy kapcsolót kötünk a digitális bemenetre, vagy egyik sem, ha a GPIO-t lebegtetett módban kívánjuk használni (pl. külső felhúzó vagy lehúzó ellenállás alkalmazásakor). Ez utóbbi lebegtetett input mód az alapértelmezett beállítás, miközben az alternatív funkciók ki vannak kapcsolva. Az analóg bemeneti mód alkalmazása kivételével a GPIO portok nagy árammal terhelhetők.

Amikor a GPIO bemenetként konfigurált:

  • a Schmitt Trigger bemenet aktivált,
  • a beépített pull-up és a pull-down ellenállások választhatók,
  • minden AHB2 órajel ciklusban az I/O lábon megjelenő adat a bemeneti regiszterből kiolvasható (Data Input Register),
  • a kimeneti puffer (Output Buffer) le van tiltva.

 

Endrich 3

3. ábra A GPIO port bemenetként konfigurálva

 

 

Amikor a GPIO kimenetként konfigurált:

  • a Schmitt Trigger bemenet aktivált,
  • a beépített pull-up és a pull-down ellenállások választhatók,
  • a kimeneti puffer (Output Buffer) engedélyezett:
    • Open Drain mód: a logikai „0” a kimeneti regiszterben aktiválja az N-MOS-t, míg a logikai „1” szint a portot nagyimpedanciás állapotba hozza,
    • push-pull mód: a logikai „0” a kimeneti regiszterben aktiválja az N-MOS-t, míg a logikai „1” a P-MOS-t aktiválja,
  • push-pull módban a kimeneti adatregiszter olvasásakor az utolsó kiírt adathoz férünk hozzá,
  • Open Drain módban a kimeneti adatregiszter olvasásakor az I/O aktuális állapota tér vissza.

 

Endrich 2

4. ábra A GPIO port kimenetként konfigurálva

 

 

GPIO analóg konfigurációban:

  • a beépített pull-up és a pull-down ellenállások kiválasztása le van tiltva,
  • a kimeneti puffer (Output Buffer) le van tiltva,
  • a Schmitt Trigger bemenete deaktivált,
  • a bemeneti adatregiszter olvasásakor „0” értéket kapunk.

 

Endrich 5

 

5. ábra A GPIO port ANALOG bemenetként

 

 

Analóg / Digitális átalakítók (ADC)

A 12 bit felbontású A/D átalakító a fokozatos közelítés módszerét (szukcesszív approximáció) használja az ADC lábon mért feszültségérték digitalizálására, két mintavétel között maximálisan 1 us idővel (sebesség = 1 M minta/s). A GD32F170xx és felette a konverziós sebesség ennek a duplája, és minél kisebb felbontást választunk (10 vagy 6 bit) a mintavételi sebességet növelhetjük. Az A/D konverter 19 multiplexelt csatornája 16 külső és 3 kitüntetett belső forrás feszültségét mérheti. Ez utóbbiak a beépített hőmérsékletszenzor (NTC), a referenciafeszültség és az elemfeszültség monitorozásának céljára vannak fenntartva. Az úgynevezett „analog watchdog” funkció lehetővé teszi a felhasználó által definiált alsó és felső feszültség-határértékekkel definiált tartományból való kilépés detektálását és kezelését egy automatikusan induló interrupt (IRQ) szoftveres feldolgozásával. Az A/D konverzió folytatható egyes csatornánként, vagy csoportosan folyamatos, illetve szakaszos módon. A konverzió eredményét egy 16 bites regiszterben balra, illetve jobbra zárt módon kapjuk meg, vagy DMA segítségével időveszteség nélkül a processzormag megkerülésével közvetlenül a memóriába juttathatjuk a maximális mintavételi sebesség eléréséhez, hiszen ekkor nem kell annyit várni az előző eredmény feldolgozására az új mintavételhez. Az A/D konverter tápfeszültsége 2,6–3,6 V, és a közvetlenül mérhető feszültségtartomány VSSA≤VIN≤VDDA.

 

A lehetőségek bemutatása a kezdőkészlet használatával

A mikrokontroller GPIO-i és az A/D konverterei használatának bemutatásához egy egyszerű mintaprogramot készítettünk. A bemutatáshoz szükségünk van a kezdőkészlet két felhasználói LED-jére (LED1 & LED2), amelyek a mikrokontroller PF6 és PF7 GPIO portjaihoz is kapcsolódnak, amelyek a 6. ábra jobb oldalán található csatlakozósoron is hozzáférhetők. Ide csatlakoztattuk egy kétszínű LED anódjait, míg közös katódját a GND kivezetéshez illesztettük. Ez a piros/zöld LED a kezdőkészlet LED1 és LED2 világító diódáival párhuzamosan működik majd.

 

Endrich 6

6. ábra A GD32170C-START starter kit áramköri elemeinek magyarázata
• LED1 & LED2 – kezdőkészlet felhasználói LED-ek • K1 – kezdőkészlet felhasználói kapcsoló • Kétszínű LED – a PF6 és PF7 GPIO és GND lábakra kötve

 


A felhasználói interakció biztosítására a panel K1 felhasználói nyomógombját fogjuk használni, ami megnyomás esetén az 5 V tápfeszültséget egy felhúzó ellenálláson keresztül a PA1 GPIO bemenetre kapcsolja. Az 5 V megjelenése egy megszakítást (IRQ) generál, amit a szoftverben kezelünk le, és használjuk fel a két LED alternatív be- és kikapcsolására. Többszöri gombnyomás esetén a LED1, a LED2, és a kétszínű LED piros, illetve zöld chipje felváltva gyullad ki és alszik el.

 

Endrich 7

7. ábra A GD32170C-START starter kit – Ismételt gombnyomásra a LED-ek felváltva működnek

 

 

A következő kódrészlet bemutatja a GPIO portok bemenetként (kapcsoló) és kimenetként (LED) való használatát.

 

Endrich prg1


Az A/D konverter használatának bemutatásához a beépített NTC hőmérsékletszenzor szolgáltatta – hőmérséklettel arányos – elektronikus jel mintavételezését végezzük el. A termisztor ellenállása a hőmérséklet változásával ellentétesen alakul, ezért azt egy feszültségosztóban – egy precíz állandó ellenállás mellé kötve – felhasználhatjuk egy hőmérséklettel arányos feszültségérték szolgáltatására. Ezt a feszültséget fogjuk az A/D konverter segítségével (annak kitüntetett ADC0 csatornáján keresztül) mérni. A kódrészlet a következő (a kód angol nyelvű magyarázatokkal):

 

Endrich prg2

 

A fenti mintaprogramok és a hozzájuk tartozó rövid magyarázatok a teljesség igénye nélkül ugyan, de alkalmasak a GigaDevice GD32™ ARM® Cortex® és RISC-V mikrokontrollerek GPIO és ADC perifériáinak használatáról képet adni. Bármely jól ismert beágyazott ARM fejlesztőrendszer (KEIL, IAR, CrossWorks vagy PlatformIO IDE) és magas szintű programnyelv (C/C++) használatával szinte bármilyen feladatra alkalmazhatók ezek a kontrollerek.
Mivel a GigaDevice 32 bit mikrokontroller funkcióiban, kivitelében nagyon hasonlít az ST / Freescale STM32-családjához, sokan váltanak manapság ezekre az eszközökre. Az elektronikával hobbiszerűen foglalkozó szakemberek ma az Arduino világban használt IDE megtartásával már ARM-alapú eszközöket is alkalmazhatnak, és pl. STM32DUINO projekteken dolgozhatnak, ráadásul mostanra az online piactereken GigaDevice GD32®-alapú „DUINO” modelleket is találhatnak (LilyGo, Longan Nano). A professzionális felhasználók számára azonban továbbra is javasoljuk a cikksorozatunkban bemutatott valamelyik kiértékelő vagy kezdőkészlet beszerzését, amelyek segítségével ipari alkalmazások készíthetők, tesztelhetők és fejleszthetők.

 

Endrich 8

8. ábra Az Endrich IoT SBC GD32VF103-alapú miniszámítógép

 


A platform népszerűsítésére az Endrich 2020 és 2021 folyamán létrehozta a saját GD32VF-alapú ipari egylapos számítógépét. A budapesti fejlesztőközpontban magyar mérnökök által létrehozott IoT SBC-lapcsalád a hozzá tartozó perifériákkal átveszi a korábban ismertetett GigaDevice kiértékelő panelek szerepét, és további lehetőségeket ad a felhasználók számára elsősorban az IoT területén, hiszen a lap számos szenzort tartalmaz, és a befoglalt NB-IoT / LTE-M modem felruházza a GSM hálózaton történő adatkommunikáció lehetőségével is. A fejlesztés nyílt hardverkoncepción alapul, azaz bárki hozzáférhet a hardverkapcsoláshoz a http://e-iot.info portálon. A sorozat következő részeiben ennek az eszköznek a lehetőségei kerülnek bemutatásra.

 

KissSzerző: Kiss ZoltánExport Igazgató,
Endrich Bauelemente Vertriebs GmbH

 

 

Endrich Bauelemente Vertriebs GmbH
Sales Office Budapest
1191 Budapest, Corvin krt. 7–13.
Tel.: + 36 1 297 4191
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.endrich.com

 

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 3. rész

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 2. rész

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 1. rész

 

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 5. rész

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 6. rész

A GigaDevice 32 bites mikrovezérlői IoT alkalmazásokhoz – 7. rész