LAKI PINGVINI<>
022018<><>

Platforme STM8 i STM32

Arduino koji to nije

Firma STMicroelectronics (često se označava jednostavno sa ST) spada u red vodećih evropskih kompanija na polju poluprovodničkih tehnologija. Nastala je osamdesetih godina prošlog veka spajanjem dva velika proizvođača elektronike, italijanskog SGS i francuskog Thomsona koji nude široku lepezu proizvoda poznatih po svojoj pouzdanosti i dugovečnosti u procesu eksploatacije. U ovom broju vam predstavljamo dve glavne porodice mikrokontrolera – osmobitnu STM8 i tridesetdvobitnu STM32.

STM8

Na sajtovima za onlajn trgovinu moguće je naručiti razvojne pločice sa mikrokontrolerom STM8S103F3P6 po ceni manjoj od jednog dolara (oko 70 centi), što ih čini najjeftinijim razvojnim platformama uopšte. S obzirom na to da je pri kupovini na veliko cena ovih mikrokontrolera samo 45 centi, nije teško shvatiti da su odlični kandidati za ugradnju u tiražnim projektima.

Porodica STM8 se deli na tri osnovne grane: A, L i S. Modeli STM8A su namenjeni auto-industriji (rade na temperaturama do 150 celzijusa). STM8L karakteriše mala potrošnja, dok STM8S predstavlja seriju standardnih mikrokontrolera sa širokom lepezom primena. Iako ST ima bogatu ponudu zasnovanu na ovoj arhitekturi (preko 160 različitih modela), mi ćemo se skoncentrisati na pomenuti STM8S103F3P6, koji je najpopularniji među hobistima. Proizvođač garantuje da će podaci u fleš memoriji biti čitljivi i nakon 20 godina rada na temperaturi od 55 stepeni celzijusa i nakon deset hiljada ciklusa zapisivanja, dok sadržaj EEPROM može da se menja preko 300 hiljada puta. Visok stepen pouzdanosti je jedan od razloga što se ovi mikrokontroleri najčešće koriste u okviru industrijskih sistema. Malo skuplji modeli imaju dodatne prednosti u vidu povećane brzine radnog takta, nižeg radnog napona, količine memorije, kao i poboljšanja nekih karakteristika, npr. podrška za DMA ili uvođenje 12-bitne ADC i DAC logike.

STM8 mikrokontroleri spadaju u klasu 8-bitnih sistema sa CISC setom instrukcija koje dosta podsećaju na one koje su se pre više od četiri decenije pojavile sa mikroprocesorima Motorola 6800 i MOS 6502, pošto imaju samo akumulator (A) i dva šesnaestobitna indeksna registra (X i Y). Rađeni su u 130-nanometarskoj tehnologiji i izvršavaju kôd brzinom od oko 0,83 MIPS/MHz. Najveći deo instrukcija se izvršava u jednom taktu, dok je nešto više vremena potrebno za kompleksnije operacije množenja (5-8 ciklusa) i deljenja (16 ciklusa). Adresni prostor iznosi 16 megabajta, dok se memoriji interno pristupa preko 32-bitne magistrale. Dolaze u TSSOP-20 kućištu i imaju osam kilobajta fleš memorije za podatke, jedan kilobajt RAM-a i 640 bajtova EEPROM-a, u koji je moguće zapisati informacije koje ostaju sačuvane i nakon prestanka dotoka struje. Radna frekvencija je 16 megaherca, dok se za napajanje koristi napon od pet volti. Što se ostalih stvari tiče, na čip su integrisani I2C, SPI i UART interfejsi, prisutno je sedam tajmer registara, kao i podrška za biper koji može raditi na jedan, dva ili četiri kiloherca, dok se komunikacija sa periferijama obavlja preko 16 U/I linija.

Kada se uporedi sa rivalima iz porodice AVR, STM8 je većim delom rame uz rame sa konkurencijom. U nekim aspektima je inferiorniji, ali je u drugim bolji od njih. Nabrajanje svih razlika bi nam oduzelo mnogo prostora, pa ćemo ih zato preskočiti. AVR je u velikoj prednosti po pitanju raspoložive literature i podrške zajednice korisnika. Bilo kako bilo, možemo zaključiti da je STM8 nezasluženo malo prisutan u projektima koji se mogu naći na internetu.

 
Jeftina razvojna pločica sa čipom STM8S103F3P6 o kojoj smo govorili na početku poglavlja nema na sebi nikakav konkretan naziv modela. Dolazi u breadboard-friendly kućištu sa po deset pinova na obe strane, dok dodatna četiri pina ispod mikrokontrolera služe za povezivanje sa programatorom. Pošto upotrebljeni čip nema logiku za podršku USB, postojeći mikrokonektor služi jedino za napajanje uređaja. Tu su još reset taster, kao i dve LE diode, od kojih plava (PWR) služi za indikaciju napajanja, dok crvena (TEST) može biti korišćena programskim putem. Što se tiče GPIO izvoda, na raspolaganju nam je šesnaest digitalnih i pet analognih U/I linija, kao po jedan I2S, SPI i UART interfejs.

Iako bi se početnicima s obzirom na izgled moglo učiniti da ova pločica predstavlja neku od brojnih inkarnacija Arduina, to nije tako. Programiranje na STM8 platformi u potpunosti podseća na posao koji obavljaju specijalisti na polju embedded sistema. Dakle, omogućeno je direktno pristupanje hardveru preko jezika C i, u slučaju da je potrebna maksimalna optimizacija, posezanje za asemblerom.

 
Profesionalnim programerima na raspolaganju stoji nekoliko razvojnih platformi: ST Visual Develop, IAR Embedded Workbench, Cosmic CXSTM8 i Raisonance Ride7. Visual develop je rešenje koje dolazi od proizvođača i instalira se preko paketa ST Toolset (STVD-STM8). IAR je dobro poznato radno okruženje u svetu programiranja mikrokontrolera, a njegova verzija za STM8 platformu nudi mogućnost besplatnog korišćenja svih mogućnosti do mesec dana ili vremenski neograničenu upotrebu sa dužinom kôda do osam kilobajta. Što se Cosmica tiče, on je potpuno besplatan za korišćenje i nema nikakva ograničenja po pitanju veličine kôda, a uz njega dodatno dolazi radno okruženje za programiranje na platformi STM32, sa ograničenjem na 32 kilobajta. Iako se za Ride7 može pročitati da je besplatan, mi nismo mogli da se u to uverimo.

Ipak, situacija nije tako loša ni za početnike koji nisu vični profesionalnim programerskim alatima. Zahvaljujući entuzijastima, razvijena je biblioteka pod nazivom Sduino (goo.gl/cZuJzX), koja razvojnim pločicama baziranim na STM8 arhitekturi omogućava da budu tretirane kao „pravi” Arduino uređaji. Implementirane su najčešće korišćene naredbe sa platforme Arduino, a glavni nedostatak se odnosi na manjak podrške za brojne biblioteke pisane na jeziku C++, tako da one neće biti dostupne dok se ne prevedu na jezik C. Funkcioniše rad sa interfejsima UART, I2C (većim delom) i SPI, od displeja su podržani PCD8544, HD44780 (pogledati SK 12/2016, SK 1/2017) i SSD1306 OLED sa rezolucijom 128 × 64 piksela. Tu je i podrška za servo i step motore. Važno je istaći da je kod potrebno pisati tako da na mestima gde postoji pozivanje na objekat, recimo, klasa.metod(), stavljamo klasa_metod(). U slučaju da je potrebno ukazati i na tip podataka, onda na izraz klasa_metod dodajemo nastavak _i(int), _c(char), _l(long), _f(float) i tako dalje. Sva ova ograničenja su posledica nepostojanja slobodnog C++ kompajlera za porodicu STM8, pa je jedino bilo moguće upotrebiti besplatni kompajler SDCC (SK 5/2014) koji ne podržava sintaksu jezika C++.

STM32

Sa izuzetno jeftine 8-bitne platforme se direktno selimo na 32 bita i najrasprostranjeniju mikroprocesorsku arhitekturu današnjice – ARM. Oni koji očekuju paprenu cenu biće nemalo iznenađeni kada saznaju da razvojne pločice sa mikrokontrolerom STM32F103C8T6 koštaju tek dva dolara, dok se nešto malo manje moćna pločica na bazi čipa STM32F030F4P6 može pazariti za samo 1,5 dolara. Ovde ćemo se baviti ovim prvim, pošto zaista nudi sjajan odnos mogućnosti i cene.

Reč je o pločicama koje se često nazivaju BluePill zbog svoje plave boje (postoje i crveni modeli sa nazivom RedPill). Mikrokontroler STM32F103C8T6 dolazi sa Cortex-M3 arhitekturom (1,25 DMIPS/MHz), radnim taktom od 72 megaherca, 64 kilobajta fleš memorije i 20 kilobajta SRAM-a. Da stvar bude još lepša, ovi čipovi često mogu da se flešuju i do 128 kilobajta. Proizvođač prodaje i model koji zvanično podržava 128 kilobajta, ali je on identičan ovom čipu, pošto koriste istu tehnološku liniju (smanjenja troškova proizvodnje).

Preko svojih 40 nožica, pločica stavlja na raspolaganje 37 U/I portova, dva A/D konvertera sa rezolucijom od 12 bita (4096 vrednosti) putem deset kanala, tri 16-bitna tajmera, jedan PWM tajmer za kontrolu motora i 7-kanalni DMA kontroler. Što se tiče serijskih interfejsa, ima tri USART-a, dva SPI, dva I2C i jedan USB 2.0 port. Kôd je moguće debagovati preko JTAG i SWD interfejsa, a radni napon se kreće u opsegu 2-3,6 volti.

Kao što vidimo, STM32 je u svemu superioran nad čipom ATmega328P, koji je okosnica Arduino Uno, ali treba istaći da se 8-bitni procesori ekonomičnije ponašaju po pitanju korišćenja memorijskih resursa. Videćemo nešto kasnije kako 64 kilobajta fleša u praksi bude znatno manje od 32 kilobajta kod Atmega328P. Jedini minus ovog kontrolera u odnosu na AVR jeste nepostojanje EEPROM skladišta, ali se ono može donekle emulirati programskim putem.

Iako je evidentno reč o moćnom hardveru, na internetu je prilično komplikovano pronaći kvalitetne informacije o ovim pločicama. Kao i kod modela STM8S, i ovde se koristi programator ST-Link. Ovaj put povezujemo nožice iz donjeg reda (SWDIO, GND, SWCLK, 3.3V) sa istoimenim nožicama na razvojnoj pločici. Zanimljivo je da, u slučaju nedostatka programatora, ST-Link ovde možemo izvesti flešovanje pomoću USB<>UART adaptera, koje smo do sada koristili više puta, i to pod uslovom da taj adapter podržava rad sa naponom od 3,3 volta. Potrebno je da nožice adaptera od 3,3 volta i GND povežemo sa odgovarajućima na pločici (mogu i one sa bočnog konektora), RX sa TX (pin A9) i TX sa RX (pin A10).

Ova pločica ima i jednu specifičnost koju nismo viđali u dosadašnjem pregledu Arduino platforme. Naime, na njoj se nalaze dva žuta džampera (BOOT 0 i BOOT 1), koji mogu biti u poziciji 0 i 1. Kada su oba džampera na poziciji „0”, uređaj je u modusu izvršenja programa. Da bismo prešli u modus programiranja, potrebno je da džamper koji je udaljeniji od reset tastera prebacimo na poziciju „1”. Pomenuti reset taster se u određenim scenarijima koristi da bi se izvršilo flešovanje memorije mikrokontrolera.

Nakon što smo rešili pitanje povezivanja, možemo da pređemo na softverska podešavanja. Prvo je iz Boards Managera potrebno instalirati modul Arduino SAMD Boards, kako bismo preuzeli fajlove potrebne za kompajliranje ARM koda. Posle toga sa lokacije goo.gl/SBgWSU preuzimamo arhiv i raspakujemo ga u folder C:\Arduino\hardware\Arduino_STM32\ (ili u njegov ekvivalent iz foldera Documents). Posle ovoga, Arduino IDE možemo da koristimo kao njegov originalni model. Naravno, kako postoje razlike u AVR i ARM hardverskim arhitekturama, tako postoje i manje razlike u podržanim funkcijama kroz Arduino IDE, ali je programiranje za njih veoma slično. Da bismo gotovi skeč prebacili na pločicu, nisu nam potrebni nikakvi dodatni programi. Prvo u okviru menija Tools biramo opciju Board: Generic STM32F103C. Zatim u meniju Tools: Variant biramo opciju STM32F103C8 (20k RAM, 64k Flash). Na kraju, postavljamo Tools: Upload method na STLink ili na Serial, u zavisnosti od toga koji metod prebacivanja koristimo.

Kompajliranje najobičnijeg Blink skeča može da potraje prilično dugo, nakon čega nam Arduino IDE stavlja do znanja da je upotrebljeno nepunih 13 kilobajta (19 odsto) fleš memorije, dok je na čuvanje varijabli potrošeno 2816 bajtova (13 odsto). Za poređenje, varijanta istog programa za Arduino Uno zauzima samo 928 bajtova (dva odsto), dok na varijable odlazi tek devet bajtova! Ovo je jasan primer koji pokazuje da u situacijama kada je potrebno maksimalno korišćenje resursa mikrokontrolera moramo da posegnemo za drugim razvojnim sredstvima, pošto Arduino STM32 platforma ne generiše dovoljno kompaktan kôd. Programerima na raspolaganju stoje praktično svi naslovi koje smo spomenuli kada smo govorili o platformi STM8, ali i brojni drugi programski paketi specijalno namenjeni programiranju ARM mikrokontrolera. Ovde bismo mogli dodati besplatno radno okruženje pod nazivom CoIDE (baziran na Eclipse), među mnogim programerima popularni Keil, koji je besplatan za kôd do 32 kilobajta i još desetak drugih. Kao i u slučaju STM8 pločica, za prenošenje programa može se koristiti više različitih aplikacija, kao što su STM32 ST-LINK Utility, ST Visual Programmer, CoFlash...

 
Ovo nisu jedine razvojne pločice koje koriste mikrokontrolere sa ARM arhitekturom namenjene korišćenju sa prototipskim pločicama. Veoma sličan model se prodaje pod nazivom Maple Mini, a tu su i modeli pod nazivom Nucleo, koje proizvodi sam STMicroelectronics. Asortiman razvojnih platformi koje dolaze od te kompanije je izuzetno širok i pokriva praktično sve njihove mikrokontrolere, tako da je moguće izabrati uređaj u skladu sa najspecifičnijim potrebama. Naravno, cene ovih pločica su više od onih koje dolaze iz Kine, ali su i dalje dostupne širokom krugu korisnika. Najjeftiniji modeli se mogu pazariti već za nekih sedam evra.

Označavanje

Videli smo da ST mikrokontroleri dolaze sa dugim i komplikovanim nazivima iz kojih je veoma teško odgonetnuti o čemu se radi. Sa druge strane, ti dugački nazivi u sebi skrivaju veliki broj informacija koje dosta detaljno opisuju karakteristike uređaja.

Pokušaćemo da objasnimo stvar na konkretnom primeru čipa STM8S103F3P6.

Nije teško shvatiti da „STM8” predstavlja porodicu 8-bitnih mikrokontrolera koja ima tri potkategorije označene slovima „A”, „L” i „S”. Oznaka modela je nešto komplikovanija i u njoj prvi broj označava liniju proizvoda. „0” je oznaka za Value line seriju najmanjih mogućnosti, zatim sledi Access line serija, koja je označena brojem „1”, Performance line sa brojem „2” i na kraju Application-specific line sa brojem „9”. Što se tiče sledeće dve cifre, ST koristi uslovnu podelu na low, mid i high density modele, gde se pod „gustinom” podrazumevaju, kako količina fleš memorije, tako i neke dodatne karakteristike koje imaju te klase modela. Po toj kategorizaciji, modeli „103” spadaju u low density uređaje, dok model „105” spada u mid density klasu. Slično tome, „Value line” model „003” bi spadao u low density, „005” u mid, a „007” u high density klasu. Sledeća dva znaka predstavljaju broj nožica na čipu i količinu ugrađene fleš memorije. Poslednja dva znaka daju informacije o tipu pakovanja i podržanoj radnoj temperaturi.

 
Situacija je nešto komplikovanija kod porodice STM32, koju ćemo obraditi na primeru čipa STM32F103C8T6. Dok kod porodice STM8 imamo tri grane, ovde ih trenutno ima deset i označene su kombinacijom slovo-broj. Dakle, naš mikrokontroler ima oznaku „F1”, što znači da je rađen u arhitekturi Cortex-M3 i ima maksimalni takt od 72 megaherca. Sledeća dva broja govore o mogućnostima uređaja, gde „01” predstavlja ulaznu liniju, „03” je oznaka za dobre performanse, dok „05” i „07” predstavljaju „connectivity” modele. U konkretnom slučaju, „03” predstavlja „performance” liniju. Deo oznake „C8” kaže da čip ima 48 nožica i fleš memoriju od 64 kilobajta. Na kraju, „T6” govori da čip ima LQFP kućište i da radi na temperaturama od -40 do 85 celzijusa.

Za označavanje vrste pakovanja, broja nožica i količine memorije postoji mnogo više oznaka od onih koje smo naveli u primerima, ali ih iz razumljivih razloga ne možemo sve prikazati.

• • •

Kao što smo videli, kompanija STMicroelectronics ima veoma razgranat asortiman, kako u 8-bitnom, tako i u 32-bitnom segmentu mikrokontrolera. Po pitanju odnosa mogućnosti i cene imaju najbolju ponudu na tržištu. Iako sticajem okolnosti njihova STM8 serija nije stekla veću popularnost, reč je o veoma zanimljivim mikrokontrolerima koji se nameću kao odlična alternativa porodici AVR čipova.

Igor S. RUŽIĆ

 
Bodhi Linux 4.4.0
AppImage
Jaxx 1.3.9
Platforme STM8 i STM32
Šta mislite o ovom tekstu?
Orange Pi Win (Plus)
Štitovi Arduina [5]: Wi-Fi Shield
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera