Avtor: dr. Simon Vavpotič
2019_274_33
ARMove 32-bitne mikroarhitekture prinašajo v svet mikrokontrolerjev veliko zmogljivost in nešteto novih možnosti uporabe. Kaj so pametni mikrokontrolerji, kaj zmorejo in kako jih uporabljamo?
Nemalokrat se sprašujemo, zakaj lahko pametni telefoni, ki so pogosto manjši od prenekatere mikrokontrolerske preizkusne ploščice, poganjajo sodobne operacijske sisteme in izvajajo skoraj toliko procesov in aplikacij kot klasični namizni računalniki, povprečen 8-bitni ali 32-bitni mikrokontroler pa po zmogljivosti še vedno primerjamo s hišnimi računalniki s konca osemdesetih in začetka devetdesetih let preteklega stoletja. Odgovor na to vprašanje dajejo procesorska jedra ARM, katerih dizajn je mogoče licencirati in ga vgraditi v lastne dizajne procesorskih ali mikrokontrolerskih čipov, s katerimi se da na eni silicijevi rezini združiti vrhunsko periferijo in sorazmerno velike pomnilnike z zmogljivim procesorskim jedrom (ali jedri) tipa RISC, kakršna so uporabljena tudi v pametnih telefonih.
Ta vsebina je samo za naročnike
Prav tako rešitev so pred leti začeli snovati pri Microchipu in Atmelu. Microchip je najprej nameraval na osnovi ARM jedra predstaviti novo mikrokontrolersko poddružino PIC32C, vendar je namesto tega družina SAM mikrokontrolerjev z nakupom Atmela prešla pod Microchipovo okrilje.
Impresivne zmogljivosti
Zmogljivosti družine SAM mikrokontrolerjev so presenetljive, saj imajo vsi njeni člani 32-bitno jedro ARM Cortex-M7, ki tiktaka s 300 MHz, ima ločena 16 kB velika predpomnilnika za strojne ukaze in podatke, enoto za delo s števili v plavajoči vejici, podpira DSP ukaze, ki jih imajo tudi namenski digitalni signalni procesorji, in ukaze Thumb-2 ter ima enoto za zaščito pomnilnika s podporo za 16 pomnilniških področji. Pri tem je v mikrokontroler lahko vgrajenih do 384 kB SRAMa in do 2 MB EEROMa. Vse zmogljivejše zunanje pomnilnike upravlja vgrajena 16-bitna krmilna enota SMC (angl. Static Memory Controller), ki podpira pomnilnike SRAM, PSRAM, EEPROMe in celo prikazovalnike LCD brez lastnega krmilnika. Poleg SMC ima mikrokontroler tudi krmilnik za zunanji SDRAM (do velikosti 256 MB), SDRAMC.
Za primerjavo s PIC32MZ, ki smo ga dodobra spoznali v preteklih številkah Sveta elektronike povejmo, da je vgrajenega SRAM pri mikrokontrolerjih SAM sicer res za vsaj 128 kB manj, a kaj je 128 kB v primerjavi z 256 MB SDRAM, ki jih lahko dodamo v zunanjem, ali zunanjih pomnilniških čipih in lahko do njih mikrokontroler dostopa z visoko hitrostjo pa tudi neposredno izvaja programsko kodo v njih, zaradi česar neprimerno lažje obdelujemo velike količine podatkov.
Spomnimo, da so imeli tudi prvi Rapberry Pi, izdelani na osnovi namenskega mikrokontrolerja za video pogone z jedrom ARM-11, v začetku po 128 MB ali 256 MB DRAMa, danes pa ga imajo tudi 1 GB in več. Vendar mikrokontrolerji SAM niso namenjeni predvajanju videa in poganjanju Linuxa z grafičnim vmesnikom, temveč z njimi rešujemo splošne krmilne probleme, pri katerih potrebujemo veliko več vgrajene periferije, kot jo lahko ponudi Rasberry Pi, ki hkrati porabi neprimerno več energije in se med delovanjem precej segreje (do okoli 50 °C).
Ko smo že pri pomnilnikih, omenimo, da je zagonska koda jedra mikrokontrolerja, SAM-BA Monitor, fiksno zapečena v 16 kB ROMu in vsebuje podprograme za nalaganje programske kode v EEPROM preko enote za zaporedno komunikacijo, UART0 ali enote USB v načinu posnemanja zaporedne modemske komunikacije po protokolu Xmodem. Ukazi so natančno razloženi v dokumentaciji SAM, ki jo lahko prenesemo iz Microchipovih spletnih strani. Povejmo še, da lahko vse »zapečeno« programje lahko s pomočjo priključka ERASE na mikrokontrolerskem čipu, ki ga bomo podrobneje opisali v nadaljevanju, tudi izbrišemo in ugnezdeno programsko opremo z zunanjim programatorjem, ki je lahko tudi le komunikacijski vmesnik za povezavo z osebnim računalnikom, iz slednjega s pomočjo SAM-BA v celoti ponovno naložimo. Mikrokontroler lahko z ustreznim programatorjem programiramo tudi preko vmesnika FFPI (angl. Fast Flash Programming Interface) za neposredno programiranje EEPROMa.
Čeprav jedro mikrokontrolerja deluje pri napetosti med 1,2 V in 1,32 V, zahtevata različici V70 in V71 napajalno napetost med 3,0 V in 3,6 V, za E70 in S70 pa zadostuje že napetost med 1,7 V in 3,6 V; vendar zadostuje manj kot 3,0 V le, če določenih perifernih enot, kot je USBHS, ne uporabljamo. Prav tako moramo upoštevati, da večina zunanjih perifernih enot, vključno s pomnilniki (dizajniranih primarno za napajalno napetost 3,3 V), ne more delovati pri napetosti, manjši od 3,0 V. Zato je nizkonapetostni način delovanja primeren predvsem za ohranjanje nekaterih vitalnih funkcij mikrokontrolerja, kot je hramba podatkov v rezervnem SRAM pri zelo majhni porabi električne energije, ki jo lahko za dlje časa zagotovimo celo z rezervnim napajanjem iz superkondenzatorjev.
Arhitektura SAM
Čeprav SAM mikrokontrolerji temeljijo na sodobnem 32-bitnem ARM Cortex-M7 procesorskem jedru, hkrati kot računalniki v enem čipu združujejo še veliko funkcionalnih enot in pomnilnikov, ki jih v osebnih računalnikih najdemo le v od procesorja ločenih čipih. Kljub temu način povezovanja funkcionalnih enot in pomnilnikov s Cortex-M7 odlično posnema notranjo zgradbo sodobnih osebnih računalnikov, saj gradi na povezovalnih vmesnikih, mostovih in vodilih več hitrosti.
Procesorsko jedro preko podatkovnega in ukaznega predpomnilnika ter vmesnikov AHBP (namenjenim samo podatkovnem predpomnilniku), AXIM (povezanim preko mostu AXI, ki omogoča tudi neposredno povezavo z vgrajenim SRAM) in AHBS dostopa do 12-nivojske matrike hitrih povezovalnih vodil AHB, ki prenašajo podatke z največjo frekvenco 150 MHz (kar ustreza polovici frekvence, pri kateri bije procesorsko jedro), in glavnega pomnilnika, SRAM. Pri tem je vmesnik AXIM kar 64-biten in zato zasede dva priključka na mostu AXI, a omogoča dvakrat hitrejše polnjenje podatkovnega in ukaznega predpomnilnika.
Matrika povezovalnih vodil deluje po protokolu AHB-Lite in povezuje 22 funkcionalnih enot: 13 gospodarjev vodila in 9 sužnjev. Pri tem je začetna zakasnitev vodil 1 taktni cikel, razen za prednastavljenego nadzorno napravo (master). A to ne bistveno ne vpliva na hitrost eksplozivnih prenosov podatkov, ki obsegajo po 32, 64, 128 ali 256 zaporednih podatkovnih besed. Istočasno medtem poteka več prenosov podatkov med različnimi funkcionalnimi enotami in procesorskim jedrom. Pri tem sta na voljo dva modela prednosti: programsko določena fiksna prednost in metoda okrogle mize. Pri slednji je vsak od nadzornih naprav vodila, ki želijo hkrati dostopati do iste podrejene naprave (slave) na vrsti enkrat, dokler vsi ne pridejo na vrsto. Vsaki podrejeni napravi lahko poljubno nastavimo prednastavljenonadrejeno.
Poleg tega, lahko procesorsko jedro s frekvenco 300 MHz neposredno dostopa tudi do močno sklopljenega dela vgrajenega SRAM, ki ima sicer na voljo kar 4 komunikacijske kanale. Dostopa lahko preko 64-bitnega ITCM vodila ali preko 32-bitnega DTCM vodila z dvema vzporednima 32-bitnima vodiloma. Pri zagonu ARM Cortex-M7 je omogočeno DTCM vodilo, ITCM pa lahko vklopimo programsko.
Omenimo še, da je mogoče v posebnem krmilnem registru – GPNVM, nastaviti različne preslikave pomnilnikov na različna pomnilniška področja, glede na to, na katera področja se preslikajo SRAM, zagonski ROM in vgrajeni EEPROM, od česar je odvisna tudi možnost uporabe ITCM. Procesorsko jedro do zagonskega ROMa in EEPROMa, ki hranita trajno programsko kodo in podatke, dostopa preko 32-bitnih vodil v prej omenjeni 12-nivojski matriki hitrih povezovalnih vodil, AHB.
Preko hitre matrike povezovalnih vodil sta povezana tudi krmilnika zunanjih pomnilnikov, SMC in SDRAMC, ter hitri zaporedni vmesniki QSPI, USBHS, ISI, ICM/SHA ter 24-kanalni krmilnik prenosov DMA, imenovan XDMAC. XDMAC ima na voljo dve 32-bitni vodili, zato lahko med hitrimi prenosi podatkov le te hkrati bere iz ene funkcijske enote in zapisuje v drugo funkcijsko enoto, denimo iz vmesnika USB visoke hitrosti (USBHS) v SRAM. XDMAC ima tudi 3,1 kB velik podatkovni izravnalnik tipa FIFO in omogoča prenose podatkov med pomnilniki in perifernimi enotami in pomnilniki. Prenosi podatkov potekajo po 24 popolnoma programabilnih enosmernih kanalih, ki lahko izkoriščajo enega ali obe 32-bitni vodili, s katerima je XDMAC povezan z matriko hitrih povezovalnih vodil. Pri tem je mogoče prenašati 8-bitne, 16-bitne in 32-bitne podatkovne besede, prenose podatkov pa je mogoče sprožiti programsko, ali strojno. Obenem je mogoče nastavljati tudi dolžino eksplozivnih prenosov AHB.
Matrika hitrih povezovalnih vodil je preko mostu z počasne periferne naprave povezana še s sistemskim krmilnikom (angl. System Controller) in kopico vgrajenih funkcionalnih enot, ki delujejo kot periferne naprave.
Sistemski krmilnik
Sistemski krmilnik sestavljajo periferne enote, ki omogočajo upravljanje in izbiro osnovnega načina delovanja mikrokontrolerja, ki zadeva: porabo energije, pogoje za (samodejni) ponovni zagon, izbiro vira in nastavitev procesorske ure in ur vodil, uro in časovnik realnega časa, zunanje prekinitvene vektorje, 1 kB varnega SRAM, iz katerega se podatki ne izgubijo, dokler je med zaustavitvijo zagotovljeno minimalno napajanje mikrokontrolerja, pa tudi enostavno upravljanje vhodno-izhodnih priključkov mikrokontrolerskega čipa in določanje njihove funkcionalnosti.
Sistemski krmilnik vsebuje tudi notranja oscilatorja za pogon procesorske ure preko frekvenčnega množilnika (oziroma z zanko PLL, PLLA: na 500 MHz in nato s frekvenčnim delilnikom na 300 MHz) in uro realnega časa. Prvi omogoča izbiro taktov 4, 8 in 12 MHz, drugi pa ima fiksni takt 32,768 kHz. Vendar imamo tudi možnost, priklopa natančnejših zunanjih kristalnih oscilatorjev in resonatorjev, tako za procesorsko uro, kot za časovnik realnega časa. Za vhodni takt za pogon procesorske ure preko PLLA lahko izberemo kristal ali zunanji oscilator z resonančno frekvenco med 3 MHz in 20 MHz (za delovanje vmesnika USBHS potrebujemo 12 MHz ali 16 MHz), za pogon časovnika realnega časa pa le takega s frekvenco 32,768 kHz. Omenimo še zanko UPLL za množenje frekvence, ki je namenjena proizvajanju frekvence 480 MHz, ki jo potrebuje enota USBHS za delovanje pri visoki hitrosti skladno s standardom USB 2.0.
Pomemben del sistemskega krmilnika je tudi krmilnik za upravljanje porabe energije (PMC, angl. Power Managment Controller), ki nadzira in optimizira porabo električne energije vseh funkcijskih enot mikrokontrolerja s prilagajanjem hitrosti vseh sistemskih ur in ugašanjem nepotrebnih enot. Denimo, če kot vir urinih impulzov za časovnik realnega časa uporabimo zunanji 32,768 kHz kristalni oscilator ali resonator, PMC samodejno onemogoči notranji 32,768 kHz oscilator. Po drugi strani, PMC omogoča tudi preverjanje pravilnosti delovanja posameznih oscilatorjev in sprotno spreminjanje hitrosti delovanj glavnega oscilatorja, ki s pomočjo PLLA ustvari delovni takt za procesorsko jedro. Na ta način je mogoče zmogljivost ARM Cortex-M7 natančno prilagajati trenutnim potrebam programske opreme in prihraniti veliko energije, podobno kot pri osebnih računalnikih.
Sistemski krmilnik ima tudi nekaj pomembnih zunanjih priključkov, med katerimi sta poleg tistih za priklop zunanjih resonatorjev in oscilatorjev ter tistih, ki jih potrebuje za poseben sinhroni vzporedni način prenosa podatkov, najpomembnejša: ERASE in NRST. Priključek NRST je dvosmeren. Kadar je sprogramiran kot vhod, lahko z njim preko krmilnika za ponovni zagon (RSTC) sprožimo ponovni zagon mikrokontrolerja, hkrati pa lahko krmilnik za ponovni zagon, kadar je priključek sprogramiran kot izhod, preko njega sproži ponovni zagon z mikrokontrolerjem povezanih zunanjih naprav. Priključek je preko stalnega 100 kOhm upora v čipu povezan z napajanjem. Kakorkoli, RSTC je pri novem mikrokontrolerju prednastavljen kot vhod.
ERASE omogoča brisanje celotne vsebine EEPROMa brez uporabe orodji za razhroščevanje, ali programatorja. Vključuje tudi 100 kOhmski upor, povezan na maso, zato nam ga ni potrebno povezati na tiskanem vezju, če ga ne nameravamo uporabljati. Obenem je priključek zaščiten tudi pred neželenimi kratkimi impulzi, saj začne učinkovati šele, če je najmanj na visoki vrednosti najmanj 230 ms. Obenem ga moramo pri brisanju 2 MB EEPROMa pri SAM V71 zadržati na vrednosti 1 kar med 13 in 24 sekundami, pri drugih mikrokontrolerjih z manjšimi EEPROMi pa sorazmerno manj časa. Pri tem moramo vrednost priključka NRST držati na logični 0. Omenimo še, da je največje število brisalno-pisalnih ciklov EEPROMa ocenjeno na najmanj 100.000, če mikrokontroler uporabljamo pri sobni temperaturi, oziroma pri 25°C.
Poleg omenjenega sistemski krmilnik vključuje tudi krmilnikov vhodno-izhodnih priključkov: PIOA, PIOB, PIOC, PIOD in PIOE, od katerih lahko vsak upravlja do 32 priključkov, katerih dejansko število je odvisno od tipa in velikosti mikrokontrolerskega čipa. Pri tem je mogoče za vsak priključek izbrati različne načine delovanja, kot so: vhodni ali izhodni priključek, zunanji vhod za proženje prekinitve (različni načini: prednja fronta, zadnja fronta, nizek nivo, visok nivo), vklop filter neželenih kratkih impulzov, vklop filtra večkratnih impulzov (npr. zaradi uporabe preklopnega stikala), dvig upornost na napajanje (angl. pull-up resistance), sinhroni izhod (omogoča hkratno spremembo stanj večjega števila izhodnih priključkov) in delovanje kot Schmittov prožilnik.
Po drugi strani, omogočajo enote PIO tudi preslikave notranjih priključkov drugih funkcionalnih enot na izhodne priključke mikrokontrolerskega čipa, pri čemer lahko način delovanja njim dodeljenih vhodno-izhodnih priključkov periferne enote tudi zaklenejo, obenem je mogoče tudi zaklepanje pred pisanjem. Poseben način delovanja, vzporedno zajemanje podatkov, je mogoče izbrati pri preslikavi enote ISI, A/D pretvornika in nekaterih drugih funkcijskih enot SAM; pri čemer je mogoče za hitre prenos podatkov v pomnilnik uporabiti tudi krmilnik XDMAC.
Hitra periferija
Med hitrimi vhodno-izhodnimi funkcijskimi enotami v mikrokontrolerjih iz družine SAM so poleg krmilnikov zunanjih pomnilnikov: SMC, ki ga lahko uporabimo tudi za neposredno krmiljenje prikazovalnikov LCD brez lastnega grafičnega procesorja, in SDRAMC, ki lahko upravlja zunanje pomnilnike tipa SDRAM, ter strojne logike za programiranje zunanjih EEPROMov, tudi funkcije enote: QSPI, USBHS, ISI, ICM/SHA, GMAC in MCAN, čeprav imajo GMAC in MCAN le zmogljivejši mikrokontrolerji (denimo SAM V71).
Po drugi strani, imajo vse omenjene funkcijske enote mikrokontrolerja vgrajen lastni krmilnik DMA prenosov, razen QSPI enota (Quad SPI), ki omogoča od 1 do 4-bitni prenos podatkov po zunanjem SPI vodilu s prav toliko podatkovnimi biti, po matriki notranjih vodil pa hitre prenose podatkov s pomočjo XDMAC krmilnika pa tudi neposredno zaganjanje programske kode iz zunanjih EEPROMov na SPI vodilu po XIP protokolu.
USBHS in GMAC sta gotovo najpomembnejši enoti za domačo uporabo. Že omenjena USBHS podpira USB povezave po standardu USB 2.0 (480 Mb/s – visoka hitrost, 12 Mb/s – polna hitrost, 1,5 Mb/s – nizka hitrost) ter do 10 dvosmernih končnih točk, s pomočjo GMAC in ustreznega ojačevalnega vezja pa lahko mikrokontroler povežemo v Ethernet omrežje s hitrostjo 10 Mb/s ali 100 Mb/s; kljub nazivu GMAC pa žal ni podprta tudi hitrost 1 Gb/s.
Ker mikrokontrolerje nemalokrat uporabimo v večpredstavnih aplikacijah in nenazadnje tudi za krmiljenje brezžičnih robotov, je ISI enota (Image Sensor Interface), ki podpira barvna slikovna CMOS tipala z 8-bitnim načinom po priporočilu Mednarodne zveze telekomunikacijskih operaterjev, ITU-R BT.601/656, in črno-bela slikovna CMOS tipala, pri čemer oboja uporabljajo strojna sinhronizacijska signala za navpično (ISI_VSYNC) in vodoravno (ISI_HSYNC) sinhronizacijo, ali pa delujejo v skladu s priporočilom ITU-R BT.656-4 za začetek in konec sinhronizacijskega video zaporedja. Zajem črno-belega videa poteka z ločljivostjo do 12 bitov v notranji izravnalni ISI enoti FIFO in od tu v katerega od pomnilnikov brez stiskanja, barvni video RGB signal z ločljivostjo 8 bitov po kanalu pa najprej obdela vgrajeni video kodek in iz formata 8:8:8 pretovori v pomnilniško manj zahteven format 5:6:5 (skupaj 16 bitov), ali celo 4:2:2 (skupaj 8 bitov), lahko pa po potrebi tudi zmanjšamo format slike. ISI sicer omogoča shranjevanje videa največ z ločljivostjo VGA, oziroma 640×480 pik, pri čemer lahko digitalno tipalo zajema video v do ločljivosti 2048 x 1536 pik. Vseeno so to podobne zmogljivosti kot so jih imele prve video kartice za PC, kar je za mikrokontroler, ki primarno ni namenjen obdelavi videa, vsekakor impresivno.
MCAN enota, ki je skladna z ISO 11898-1:2015 standardom, je namenjena predvsem uporabi SAM mikrokontrolerjev v avtomobilski industriji, kljub temu pa za svoje delovanje, podobno kot GMAC, potrebuje dodatno transiversko strojno logiko. MCAN je optimiziran po standardih AUTOSAR in SAE J1939 in je združljiv s CAN 2.0 ter podpira do 64 sprejemnih sporočilnih izravnalnikov in do 32 oddajnih sporočilnih izravnalnikov, pri katerih lahko nastavljamo tudi način delovanja. Mikrokontrolerji z dvema MCAN enotama omogočajo vzpostavitev skupnega deljenega sporočilnega RAM-a.
Med hitrimi perifernimi enotami velja omeniti še enoto za preverjanje celovitosti podatkov, ICM/SHA (angl. Integrity Check Monitor), ki računa in sproti preverja varnostne kode za največ štiri različna nezvezna pomnilniška področja na osnovi SHA algoritmov (angl. Secure Hash Algorithm). Varnostne kode, ki jih po enem izmed SHA (SHA1, SHA224 ali SHA256) algoritmov izračuna med fazo računanja novih varnostnih kod, shrani v posebno področje pomnilnika (ICM Hash Area), ki ga nato uporablja pri sprotnem preverjanju ustreznosti varnostnih kod. V primeru spremembe podatkovne vsebine s SHA varnostno kodo varovanega pomnilniškega področja sproži prekinitev, s katero zažene obravnavo pomnilniškega incidenta. Vsekakor do slednjega lahko pride tudi zaradi napak pri delovanju mikrokontrolerja v težkih delovnih pogojih, ki jih predstavljajo napetostne in elektromagnetne motnje in velika temperaturna nihanja.
Podobno kot nekateri PIC32MZ mikrokontrolerji z veliko priključki, lahko tudi SAM s pomočjo SMC neposredno krmili LCD prikazovalnike brez lastnega grafičnega procesorja.
Počasnejša periferija
Res da tudi sistemski krmilnik sodi med počasno periferijo, vendar smo ga zaradi njegovega pomena za delovanje celotnega mikrokontrolerja SAM že omenili. Tako nam preostane še zgradba počasnejših vhodno izhodnih enot, ki so z 12-nivojsko povezovalno matriko vodil prav tako povezane preko perifernega mostu. Vsekakor velja najprej omeniti: krmilnik analognega prednjega dela (AFEC, angl. Analog Front-End Controler), krmilnik za D/A pretvorbe (DACC, Digital-to-Analog Converter Controller) in krmilnik analognih primerjav napetosti (ACC, angl. Analog Comparator Controller), ki jih najpogosteje uporabljamo pri domačih projektih.
AFEC vsebuje zmogljiv 12-bitni A/D pretvornik z vhodnim ojačevalnikom s programirljivim ojačenjem in 10-bitna D/A pretvornika za nastavitev odmika pri meritvi vhodne napetosti na vsakem od dveh diferencialnih vhodnih kanalov ter dva analogna multiplekserja iz 6 na 1, kar omogoča zajem signalov iz do 12 analognih vhodov na vsakem od do dveh AFEC v SAM mikrokontrolerju. A/D pretvornik omogoča uporabo metode digitalnega poprečenja, s katero lahko dosežemo tudi 16-bitno ločljivost, pri čemer lahko A/D pretvornik samodejno izvaja poprečenje nad 4, 16, 64 ali 256 vzorci in skladno s tem omogoča povečanje ločljivosti na: 13, 14, 15 ali 16 bitov.
Dvokanalni 12-bitni DACC omogoča precej več kot enostavni D/A pretvorniki. Deluje lahko v prosto-tekočem načinu, načinu z največjo hitrostjo, prožilnem načinu in interpolacijskem načinu. Za vmesno hrambo podatkov ima na voljo FIFO izravnalnik. Pri uporabi nižjih frekvenc D/A pretvorbe omogoča tudi omejevanje porabe energije, saj lahko izklopimo izravnalnik. Vsakega od DACC kanalov lahko tudi neodvisno povežemo z XDMAC kanalom. Najkrajši čas pretvorbe digitalne v analogno vrednost je 12 ciklov DACC ure, kar omogoča hitrost pretvorbe 1 Msps. Pri interpolacijskem načinu delovanja pa je mogoče uporabiti interpolacijo nad 2, 4, 8, 16 ali 32 vzorci.
ACC vključuje dva analogna multiplekserja iz 8 na 1, s katerima izberemo analogna vhoda, katerih napetost želimo primerjati. Pri tem lahko na enega od vhodov povežemo tudi notranji referenčni vir napetosti iz D/A pretvornika 0 ali 1, ki sta vgrajena v AFEC, ali temperaturnega tipala. ACC omogoča različne načine primerjav vhodnih signalov: nivo histereze, detekcija prehoda in detekcija polaritete. Pri tem omogoča tudi proženje prekinitev in PWM modula, ki ustvarja impulzno-širinsko modulirane signale za krmiljeno elektroniko.
Zdaj se lahko lotimo še funkcijskih enot za podporo enostavnejšim komunikacijskim protokolom. SAM mikrokontrolerji imajo lahko vgrajene do 3 TWIHS enote za dvožični prenos podatkov, v celoti združljive z I2C protokolom, obenem pa podpirajo tudi SMBus vodilo za zunanje pomnilniške module z zaporednim dostopom. Podprte prenosne hitrosti so: 100 kHz, 400 kHz in 3,4 MHz, vendar slednja le v načinu delovanja podrejene naprave. Povejmo še, da sta podprta 7-bitno in 10-bitno naslavljanje naprav na I2C vodilu, vendar slednje le, ko je mikrokontroler nadzorna naprava I2C vodila. Za hiter prenos podatkov je mogoče uporabiti tudi XDMAC.
Krmilnik zaporednih sinhronih prenosov, SSC (angl. Synchronous Serial Controller) je namenjen komunikaciji z avdio in telekomunikacijskimi napravami. Podpira protokole I2S, sinhronizacijo kratkega okvira, sinhronizacijo dolgega okvira itn. Tako ga lahko povežemo z raznimi audio kodeki, D/A pretvorniki in celo čitalniki magnetnih kartic. Podobno kot TWIHS, omogoča tudi uporabo XDMAC, s katero lahko v največji meri zmanjšamo obremenitev procesorskega jedra s prenosi podatkov.
Ko smo že pri povezavah z avdio napravami, omenimo še, da imajo SAM mikrokontrolerji do dva krmilnika za zvočne povezave med integriranimi vezji, I2SC (angl. Inter-IC Sound Controller), ki sta združljiva z I2S protokoli, vendar pa prenos podatkov poteka preko 5-žične povezave. Mogoča je tudi uporaba XDMAC.
Univerzalnih sinhronih (USART) in asinhronih (UART) sprejemnikov-transiverjev prav tako ne manjka. Se pa prvi in drugi razlikujejo predvsem po številu priključkov. V SAM mikrokontroler so vgrajeni do trije sinhroni in do pet asinhronih vmesnikov, od katerih v osnovi vsi delujejo kot pomikalni registri, ki znajo na različne načine zaporedno oddajati in sprejemati podatke. Razlika med njimi pa je predvsem strojna možnost sinhronizacije, katero imajo s pomočjo dodatnih krmilni signalov na voljo le USARTi. Slednji lahko delujejo po RS232, RS485, ISO7816 protokolih (omogoča povezavo pametnih kartic), IrDA (infrardeči oddajniki-sprejemniki)modulacija in demodulacija , SPI, LIN in LON. Po drugi strani UART omogoča samo običajne serijske (terminalske) povezave preko TxD oddajnih priključkov in RxD sprejemnih priključkov, po asinhronem protokolu RS232. Enote USART in UART omogočajo tudi hkratno uporabo po dveh kanalov XDMAC, s katerima je mogoče povsem avtomatizirati prenos podatkov iz pomnilnika in v pomnilnik.
Med počasnejšo periferijo sodita tudi izredno pomembna TRNG in AES modula. Prvi omogoča ustvarjanje pravih naključnih števil na osnovi strojnega vira entropije, drugi pa nudi strojno podporo simetričnemu kriptografskemu AES algoritmu, ki omogoča varnostno kodiranje podatkov pred njihovim prenosom po žičnih ali brezžičnih povezavah in dekodiranje sprejetih podatkov. Omogoča rabo kodirnih ključev dolžin 128, 192 in 256 bajtov, pri čemer s pomočjo dveh vhodnih izravnalnikov skrajša čas, potreben za varnostno kodiranje in/ali varnostno dekodiranje podatkov. Sodeluje lahko tudi z XDMAC, ki znatno skrajša časa prenosa podatkov, pri čemer podpira masovne prenose 8 ,16, 32, 64 in 128-bitnih podatkovnih besed.
Prihodnjič
Mikrokontrolerji SAM Microchip imajo toliko periferije, da je tokrat preprosto zmanjkalo prostora, da bi našteli še vse počasne periferne enote, od katerih so še posebej zanimivi zmogljivi programabilni časovniki in enota PWM, s katerimi lahko ustvarjamo signale in jih natančno merimo. Teh se bomo lotili prihodnjič, ko bomo spoznali tudi najbolj uporabne preizkusne plošče, s katerimi lahko preučujemo zmogljivosti novega rodu mikrokontrolerjev pa tudi eksperimentiramo.