Avtor: dr. Simon Vavpotič
2019_280_28
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?
V prejšnjem delu članka smo izdelali HID vmesnik za neposredni dostop do vseh funkcionalnosti SAMV71Q21B mikrokontrolerja in Microsoft Visual Basica. Obenem smo izdelali tudi programsko kodo za uporabo A/D in D/A pretvornikov. Funkcije aplikacijskega programskega vmesnika smo združili v programsko knjižnico SAMV71Q21B.NET4.dll, nato pa izdelali še preizkusno aplikacijo, s katero lahko iz okolja Microcoft Visual Studio.NET (Microcoft Visual Studio 2015.NET ali novejše) neposredno dostopamo do funkcijskih enot in pomnilnikov mikrokontrolerja. Vse omenjeno programje je na voljo tudi s spletne strani https://sites.google.com/site/pcusbprojects/6-downloads.
Tokrat bomo podrobneje analizirali delovanje USB COM vmesnikov po protokolu CDC in podrobneje spoznali implementacijo UART protokolov za serijsko komunikacijo, med katerimi je tudi RS-232 protokol. SAMV71 bomo povezali s cenenim komunikacijskim vezjem, ESP8266-13, ki omogoča komunikacijo prek omrežij WiFi. Zanimale nas bodo zanimale tudi zmogljivosti U(S)ART funkcijskih enot. Lotili pa se bomo tudi strojne podpore za prenos podatkov s protokoloma SPI in IrDA.
Funkcijske enote U(S)ART
SAMV71 U(S)ARTi omogočajo veliko načinov komunikacije zaporedne komunikacije na osnovi notranje in/ali zunanje sinhronizacije oddajnika in sprejemnika. Poleg klasične terminalske komunikacije z nivoji TTL (RS-232 in RS-485) podpira tudi protokole ISO7816, SPI, IrDA za infrardeče komunikacije (kot kodirnik ali dekodirnik signala), LIN 1.2 in LON. Od do tod tudi naziv univerzalni asinhroni oddajnik-sprejemnik. Dejstvo, da ima SAMV71 veliko U(S)ART-ov (največ jih imajo mikrokontrolerski čipi z največ priključki), kaže na vsestranskost te funkcionalne enote. Omenimo še, da so enote UART dejansko okrnjeni USARTi, ki podpirajo le asinhrono terminalsko komunikacijo (RS-232 ali RS-485) na osnovi signalov RxD in TxD, brez kontrolnih signalov, medtem ko USARTi podpirajo tudi polno modemsko komunikacijo.
V seriji člankov o SAMV71 bi se težko podrobno lotili analize vsakega od načinov delovanja posebej, vseeno pa bomo enega od USARTov izkoristili za hitro asinhrono zaporedno komunikacijo z ESP8266-13. Posebnost asinhronega prenosa podatkov je, da ima imata oddajnik in sprejemnik notranji časovni bazi, ki se sproti medsebojno usklajujeta. Zato prenos taktnih impulzov ni potreben. USART podpira hkratni dvosmerni 8-bitni ali 9-bitni prenos podatkov z enim ali dvema zaustavitvenima bitoma. Omogoča uporabo lihe ali sode paritete, ali prenos podatkov brez preverjanja pravilnosti. Mogoč je tudi strojni nadzor pretoka podatkov in samodejno popravljanje optimalne hitrosti ure za prenos podatkov (če uporabljamo 16x prekomerno vzorčenje), ki lahko znaša od nekaj deset bitov na sekundo (b/s) do nekaj Mb/s, odvisno od izbranega vira za USART.
USB CDC naprava
Večina današnjih osebnih in tabličnih računalnikov ter pametnih telefonov omogoča komunikacijo perifernimi napravami preko USB priključkov. Intelovim načrtovalcem standarda vmesnika USB je bilo že v devetdesetih letih preteklega stoletja jasno, da bo moral ta nadomestiti vse vrste komunikacijskih povezav, ki so jih imeli takratni PC-ji. Vsekakor so bile med njimi tudi terminalske povezave, ki so v pisarnah, doma in v laboratorijih skoraj brez izjeme delovale po RS-232 standardu. Zato so pod okrilje USB vključili tudi posebno poglavje CDC standarda, ki vključuje komunikacijski protokol, orisuje pa tudi zgradbo posebnih CDC gonilnikov za tovrstne komunikacije, ki jih potrebujejo osebni računalniki, kot tudi mikrokontroleriji naprav, ki podpirajo tovrstno komunikacijo.
USB CDC naprava lahko v nekaterih sodobnih operacijskih sistemih za PC uporablja priložene sistemske gonilnike, ki jo samodejno povežejo in predstavijo kot dodatna vrata za zaporedno komunikacijo (COM). Lahko pa namesto tega izdelamo poseben CDC gonilnik tudi za operacijski sistem, ki omogoča boljšo prilagoditev naprave ter zanesljivejšo in hitrejšo komunikacijo. O tem se lahko prepričamo, denimo pri cenenem namenskem vmesniku, ki ima priložen gonilnik za Microsoft Windows.
ESP8266, vstopnica v Internet stvari
Modul ESP8266 za komunikacijo preko brezžičnega WiFi omrežja lahko deluje pri enaki napetosti kot SAMV71, 3,3 V (oziroma do največ 3,6 V). Zato ni potrebna pretvorba signalnih napetostnih nivojev. SAMV71 lahko s pomočjo USB CDC protokola uporabimo kot most med USB in ESP8266-13, tako da osebni računalnik ESP8266 zazna preko navideznega COM vmesnika. Vse možnosti za eksperimentiranje z modemskimi »AT« ukazi in programiranja ESP8266 so tako odprte.
Strojna oprema
Povezava SAMV71 Xplained Ultra razvojne plošče in ESP8266EX WiFi komunikacijskega modula, ki vsebuje lastni 32-bitni mikrokontroler Tensilica Diamond L106, je sorazmerno preprosta, če si izberemo, npr. vhodno-izhodno vtičnico J507, ki je hkrati edina dvovrstična vtičnica z običajnim razmikom nožic 2,54 mm. ESP8266-13, ki je namenjen predvsem strojni vgradnji v sodobna tiskana vezja, manj pa ročnemu spajkanju, ima 18 priključkov z razmikom okoli 1 mm. Od tega so štirje napajalni, ostali pa določajo način delovanja ob zagonu in omogočajo serijsko povezavo po RS-232 standardu, vendar s TTL nivoji z največjo napetostjo 3,3 V (oziroma 3,6 V, če ESP8266 in SAMV71 napajamo z največjo dovoljeno napetostjo).
Vtičnica J507 ima vgrajene tudi štiri priključke za 5 V napajanje razširitvenih ploščic, pogrešamo pa 3,3 V napajanje. Vendar to ne preseneča, saj je namenjen priklopu modulov Arduino DUE, ki so hkrati prilagojeni za 3,3 V komunikacijo s SAMV71 mikrokontrolerjem. Kljub temu je to več kot uporabno za napajanje in povezavo ESP8266-13 modula, ki porabi kar veliko energije (tudi do 500 mA) in bi zato preobremenil 3,3 V napetostni regulator SAMV71 Xplained Ultrar razvojne plošče. 5 V napajanje s priključkov na skrajnih koncih pripeljemo na dodatni 3,3 V napetostni regulator, temelječ na vezju LM317T in uporovnem delilniku. Tako je energije za pogon ESP8266-13 več kot dovolj. Vendar to velja le ob pogoju, da razvojno ploščo napajamo z ustreznim zunanjim napajalnikom z enosmerno napetostjo med 5 V in 14 V in tokovno zmogljivostjo med 1 A in 2 A. ESP8266-13 potrebuje za svoje delovanje do 500 mA. Zato napajanje iz običajne USB 2.0 ali USB 3.0 vtičnice ni dovolj.
Kakorkoli, 3,3 V napajanje pripeljemo na priključek 3.3 v vezja ESP8266-13, medtem ko priključke GND povežemo na maso. Med 3,3 V napajanje in maso moramo na razširitvenem modulu dodati le še 100 nF kondenzator za blaženje napetostnih sunkov, ki nastanejo med delovanjem ESP8266-13. Takt Tensilica L106 mikrokontrolerja določi proizvajalec vezja (npr. 26 MHz). Omenimo še nekoliko zajetnejši 1000 µF kondenzator, ki je dodan napetostnemu regulatorju. Njegov namen je zagotavljanje dovoljšnje zaloge električne energije za kar se da stabilno napetost 3,3 V za napajanje razširitvenega modula. Ker nisem imel pri roki nič manjšega, sem uporabil, kar veliki elektrolitski kondenzator, ki prenese napetosti do 35 V=, vendar lahko v lastnem vezju zagotovo uporabite bistveno manjšega, ki zdrži do vsaj 6 V=.
Zdaj se končno lahko lotimo krmilnih priključkov ESP8266-13: EN (CH_PD) omogoči delovanje ESP8266-13. Zato ga moramo postaviti na logično 1, kadar želimo vezje uporabljati. Vezal sem ga na priključek PC14 SAMV71. Med pomembnimi priključki je tudi RST (aktiven v nizkem stanju), s katerim lahko ponovno zaženemo mikrokontroler Tensilica Diamond L106, če je to potrebno med delovanjem (vezal sem ga na PD18). Za pri zagonu ESP8266-13 igrajo pomembno vlogo tudi priključki IO15, IO2 in IO0, katerih kombinacija stanj določa, ali se bo modul zagnal v načinu za nalaganje programske kode, ali v načinu za izvajanje naložene programske kode. Pri tem mora imeti IO15 obakrat nizek logični nivo (0), IO2 pa visokega (1). Pri tem pomeni nizek nivo IO0 (0) zagon v načinu za programiranje skript, visok nivo (1) pa zagon v načinu za izvajanje. Omenjeno velja pri ESP8266-13, ki imajo prednaloženo originalno programsko opremo proizvajalca Espressif Systems. Da bi si pustil prosto pot za kasnejšo uporabo, sem vseeno vse omenjene priključke modula povezal z vhodi-izhodi SAMV71: IO15 s PA24, IO2 s PB02 in IO0 s PA18. Priključki so na voljo prek vtičnice J507.
Za indikacijo delovanja doma narejene razširitvene plošče za SAMV71 Xplained Ultra razvojno ploščo sem poleg zelene LED, ki je kaže pravilno delovanja napetostnega regulatorja, dodal še programsko krmiljeno modro LED, ki je povezana na priključek PB0 in omogoča indikacijo delovanja v programske vgrajene opreme SAMV71. Glede na to, da je na razvojni plošči le ena LED zares uporabna za USB aplikacije, je dodatna LED vsekakor dobrodošla. Na preostale vhode-izhode ESP8266-13 zaenkrat nisem dodajal indikatorjev, ker lahko njegovo delovanje vselej preverimo preko zaporednega vmesnika, ki predstavlja osnovni način komunikacije.
Omenimo še najpomembnejša komunikacijska priključka, TxD in RxD, preko katerih ESP8266-13 v osnovi komunicira z zunanjim svetom. Prvega sem vezal na PA21(RxD1), drugega pa na PB04 (TxD1). S tem je med SAMV71 in ESP8266-13 vzpostavljena t.i. ničelna modemska povezava (angl. null modem connection), preko katere se pretakajo podatki s sorazmerno velikimi hitrostmi.
Programska oprema
SAMV71 s pomočjo razvojnega okolja MPLAB X Harmony (ali Atmel Studio 7) sorazmerno enostavno sprogramiramo, oziroma kar nastavimo, da začne delovati kot navidezni zaporedni komunikacijski vmesnik (npr. COM3). Splača se začeti s primerom cdc_serial_emulator, ki vsebuje želeno funkcionalnost. Pri tem lahko v Microchip Harmony 3 Configuratorju učinkovito izkoristimo paleto številnih mogočih nastavitev, med katerimi so še posebej pomembne nastavitve dolžine različnih izravnalnikov, ki jih potrebujemo za zanesljiv zaporedni prenos podatkov preko zaporedne povezave ter nadaljnji prenos preko CDC gonilnika v osebni računalnik. Nastavljamo lahko tudi prednosti različnih prekinitev, med katerimi je še posebej pomembna USART1 prekinitev, ki sem jo uporabil za komunikacijo z ESP8266-13.
Velja omeniti, da ima SAMV71 vgrajene le enostavne signalne multiplekserje, ki omogočajo zgolj preklapljanje vhodno-izhodnih priključkov med njihovim vhodno-izhodnim krmilnikom in vnaprej določenimi funkcijskimi enotami, med katerimi je tudi USART1, ni pa mogočih več različnih preslikav priključkov notranjih funkcijskih enot SAMV71 na priključke na ohišju mikrokontrolerskega čipa, kot smo vajeni pri PIC32. Kljub temu je istovrstnih funkcijskih enot toliko, da to ne predstavlja bistvene ovire. Če hočemo izbrati druge priključke, pač uporabimo drugo istovrstno funkcijsko enoto.
Vrnimo se k že omenjenemu primeru cdc_serial_emulator. Temelji na SAME70 Xplorer razvojni plošči in ga moramo sami prilagoditi za SAMV71 Xplained Ultra razvojno ploščo, saj ustreznega primera za slednjo v Microchip Harmony 3 ne zaenkrat ni. Kljub temu to ni pretežko. Najprej v originalnem projektu v spustnem spustnega meniju za izbiro razvojne plošče oz. mikrokontrolerja izberemo opcijo Customize…, nato pa v izbirnem meniju na desni strani v spustnem meniju Device zamenjamo mikrokontroler s SAMV71Q21B. Obenem lahko v okencu Controller toolchain zamenjamo tudi orodja za prevajanje in povezovanje programske kode; obvezno pa v okencu Hardware tool izberemo programator/razhroščevalnik, ki je vgrajen v razvojno ploščo SAMV71 Xplained Ultra. V okencu Packs lahko izbiramo med različnimi podpornimi paketi programskih knjižnic za SAMV71. Če nimamo posebnega razloga, se splača izbrati zadnje različice. Vseeno posebej opozorimo na knjižice z rumenim trikotnikom, ki ne nudijo polne podpore za izbrani mikrokontroler.
Zdaj se lahko v Microchip Harmony 3 Configuratorju lotimo programskih modulov primer cdc_serial_emulator. Najprej zamenjamo podporni modul za SAME70 Xplorer razvojno ploščo z BSP modulom za SAMV71 Xplained Ultra. To je še posebej pomembno, če želimo poleg uporabljati nove funkcionalnosti zmogljivejše razvojne plošče, kot je dodatno mikrostikalo.
Sledi urejanje priključkov in taktov ur vodil znotraj SAMV71. Vsekakor je smiselno, da za pogon SAMV71 uporabimo v razvojno ploščo vgrajeni 12 MHz kristalni oscilator, lahko pa tudi omogočimo 32,768 kHz kristalni oscilator, ki navadno poganja uro realnega časa, ki jo lahko uporabimo za izvajanje daljših zakasnitev, denimo pri ponovnem zagonu ESP8266-13.
Pri urejanju priključkov v MHCToolsPin Configuration najprej uredimo priključke za zagotavljanje delovanja USB vmesnika. Čeprav sta USB priključka HSDP in HSDM fiksno povezana, moramo urediti ostale za delovanje USB vmesnika pomembne priključke. Predvsem je potrebno prestaviti priključek, ki je v aplikaciji poimenovan USB_BUS_SENSE, PC9, za katerega obenem izberemo lastnosti GPIO in In (vhod). Zdaj se po vrstni lotimo še nastavljanja ostalih priključkov. Za PA18 izberemo GPIO, Out (izhod) in prednastavljeno vrednost High (visoko). S tem v osnovi izberemo normalno delovanje ESP8266-13, če pa želimo čip programirati, vendar ne bi radi tega storili v programski kodi, lahko namesto tega izberemo vrednost Low (nizko). Vendar moramo pri tem upoštevati, da se bo v tem primeru zaporedni vmesnik (RS232) ESP8266-13 s 26 MHz kristalom deloval z eksotično hitrostjo 74880 Bd. Zato moramo temu primerno prilagoditi tudi hitrost USART1… Za PD18 prav tako izberemo Out in začetno vrednost Low, kar pomeni, da bo signal RST aktiven in bo ESP8266-13 počakal z zagonom dokler se ne zažene inicializacijski program v vgrajeni programski opremo SAMV71. Na konec AppInitialize podprograma zato dodamo še stavek GPIO_PD18_Set();
Za priključka PA21 in BP04 izberemo funkciji USART1_RXD1 in USART1_TXD1, medtem ko za PA24 izberemo GPIO, Out in Low, s čemer damo na IO15 ESP8266-13 zahtevano nizko stanje, obenem pa PB02 nastavimo na GPIO, Out in High.PC14 nastavimo na GPIO, Out in High, s čemer omogočimo delovanje ESP8266-13. Nato moramo še grafično nastaviti izhod TX in vhod RX. Hitrost prenosa podatkov moramo dati na 115.200 Bd; vsaj proizvajalec navaja, da naj bi bil ESP8266 prednastavljen na to prenosno hitrost. Pri tem še izključimo nadzor pretoka podatkov in nastavimo prenos z osmimi podatkovnimi biti in enim stop bitom.
Nasvet! Strojno delovanje CDC vmesnika lahko pred priključitvijo modula ESP8266-13 preverimo tako, da kratko sklenemo priključka TXD1 (D47) in RXD1 (D46) vtičnice J507. Nato npr. s priljubljenim terminalski odjemalcem (denimo Tera Term, ali razvojno okolje Arduino 1.8.10) na novih COM vratih preverimo, ali lahko v terminalsko okno vnašamo besedilo. Šele nato je praviloma na vrsti povezava s ESP8266-13. Vendar opozorimo, da tovrstna povratna povezava navadno ne razkrije napak pri izbiri hitrosti delovanja ali načinu prenosa podatkov, saj moramo pri vzpostavitvi prave komunikacije prilagoditi nastavitve tako, da ustrezajo trenutno izbranemu načinu delovanja ESP8266-13 modula.
Zdaj smo pripravljeni za programiranje ESP8266 iz Windows ali iz drugega operacijskega sistema, ki podpira vmesnike med vrati USB in COM. Vsa potrebna programska orodja dobimo na spletni strani: http://bbs.espressif.com.
Test osnovnih funkcionalnosti ESP8266-13
Končno nam je uspelo povezati SAMV71 in ESP8266-13 (uporabiti moramo kombinacijo za običajni zagon IO15=0,IO2=1 in IO0=1), zato lahko slednjega še preizkusimo v modemskem načinu delovanja; za kar lahko uporabimo naslednje zaporedje ukazov:
AT+CWMODE=1 AT+CWLAP
Pri tem se prek zaporednega vmesnika USART1 izpišejo vse dosegljive dostopne točke. Še posebej zanimivo je, če živimo v mestu, saj navadno z navdušenjem ugotovimo, da WiFi že dolgo uporabljajo tudi sosedje… No, če želimo vzpostaviti svojo dostopno točko, lahko uporabimo tudi naslednja ukaza:
AT+CWMODE=3 AT+CWSAP="SE280_TEST_AP","gggggggggggggggggggg",1,4,4
Modul ESP8266 lahko tudi programiramo, a to presega obseg serije člankov o SAMV71 mikrokontrolerju. Vsekakor pa se bomo tega problema lotili v naslednji seriji, ki bo namenjena prav uporabi tega modula in razvoju programske opreme zanj.
Podrobneje o USB CDC
Čeprav se zdi delovanje USB CDC vmesnikov samoumevno, se lahko hitro prepričamo, da temu še zdaleč ni tako, ko skušamo izdelati lastni RS-232 vmesnik, ki ga z osebnim računalnikom povežemo preko USB CDC. Ker prenos podatkov pri ESP8266 ne poteka s konstantno baudno hitrostjo, temveč je hitrost odvisna od načina delovanja pa tudi od izbranega tipa vmesnika in celo od frekvence kristalnega oscilatorja v ESP8266, se samo zastavlja vprašanje, ali bi lahko baudno hitrost merili na podatkovni liniji TxD (ESP8266)RxD (SAMV71) in baudno hitrost SAMV71 USART samodejno programsko prilagajali dejanski hitrosti prenosa podatkov (strojne podpore za to U(S)ARTi nimajo).
V tem pogledu primer cdc_serial_emulator nudi le osnovno programsko ogrodje, ki ga moramo znatno dodelati. Iskanje kompleksnejših primerov za SAMV71 v spletu zaenkrat ne obrodi želenih rezultatov. Zato se moramo izboljšav programske kode lotiti sami. Vendar hitro ugotovimo, da cdc_serial_emulator ne vsebuje niti osnovnih kontrol za primer težav pri prenosu podatkov. Zato lahko PCjev Windows CDC gonilnik pri spremembah baudne hitrosti ali prekinitvah prenosa podatkov hitro blokira. Pomaga le ponovni zagon SAMV71.
Pri morebitnih težavah s prenosom podatkov igra pomembno vlogo tudi velikost CDC in USART izravnalnikov. V primeru cdc_serial_emulator je uporabljen prekinitveni način delovanja USART, kar pomeni, da sprejem ali oddaja vsakega znaka sproži prekinitev storitve za oddajo ali sprejem v ugnezdeni programski opremi SAMV71, slednja pa mora sprejeti znak shraniti, ali začeti oddajo novega znaka. Obenem mora SAMV71 vzdrževati tudi dokaj zahtevno delovanje vmesnika USB. Primer cdc_serial_emulator v tem pogledu vsekakor ni idealen zgled, saj bi lahko namesto tega uporabili tudi zmogljivi XDMAC krmilnik, s katerim bi lahko samodejno polnili vhodni in izhodni izravnalnik za zaporedno komunikacijo. S tem bi pri visokih baudnih hitrostih bistveno razbremenili glavni procesor v SAMV71 mikrokontrolerskem čipu in omogočili zanesljivejši prenos podatkov.
Razvoj optimalne programske kode terja precej programerskega dela, vendar se lahko tolažimo z mislijo, da je SAMV71 z vsemi naprednimi funkcijskimi enotami vsekakor veliko zmogljivejši od cenenega namenskega mikrokontrolerja, ki je vgrajen v komercialne zaporedne vmesnike USB-TTL(RS-232), kot je CH341.
USART SPI protokol
Med pomembnimi protokoli, podprtimi v USART, je tudi SPI. Za prenos podatkov sta uporabljena ista priključka kot za protokol RS-232, vendar imata drugačen pomen: Priključek TxD je namenjen prenosu podatkov in je lahko izhodni (MISO) ali vhodni (MOSI), glede na to, ali USART sprogramiramo kot nadzorno napravo vodila SPI, ali kot podrejeno napravo. Vloga priključka RxD je ravno nasprotna. Pri načinu delovanja SPI uporabljamo še dodaten priključek, SCK, s katerim pri načinu delovanja nadzorne naprave generiramo impulze takta, pri podrejenem načinu delovanja pa jih sprejemamo. Vsekakor velja pozdraviti zanimivo odločitev načrtovalcev SAMV71, ki so s tem zmanjšali število funkcijskih enot, hkrati pa zagotovili vse potrebne funkcionalnosti za raznovrstne periferne naprave. Več o SPI načinu delovanja USART se lahko naučimo iz primera <namestitveni imenik Harmony 3.0>coreappsdriverspisyncspi_multi_slave.
Primer spi_multi_slave ponazarja priklop več podrejenih naprav na vodilo SPI in komunikacijo z njimi. Na tak način lahko s SAMV71 povežemo, na primer tipala za temperaturo, zračni pritisk, vlago pa tudi modul za enostavno brezžično komunikacijo točka-točka, kot je RFM69CW. SPI je primeren tudi za komunikacijo z drugimi mikrokontrolerji, denimo PIC32.
USART IrDA
Brezžični način delovanja je mogoč tudi preko infrardečega vmesnika, za kar moramo SAMV71 Xplained Ultra razvojni plošči dodati še katerega od infrardečih oddajnikov-sprejemnikov, ki navadno vsebujejo infrardečo oddajno diodo in infrardeči sprejemni tranzistor. Oddaja in sprejem podatkov lahko potekata s hitrostmi od 2.400 B/s do 115.200 B/s, vendar le v eno smer naenkrat. Za prenos podatkov je uporabljena modulacijska shema RZI.
Testiranje delovanja USART
Delovanje USART lahko preverjamo na tri načine. Pri normalnem načinu delovanja, sta aktivni liniji RxD in TxD. Zato lahko delovanje preverimo tako, da ustrezna priključka na ohišju mikrokontrolerja kratko sklenemo. Vendar je programsko testiranje, pri katerem lahko povratno zanko nastavimo zgolj z nastavitvijo ustreznega registra, udobnejše. Pri tem imamo dve možnosti: lokalno povratno zanko, ali oddaljeno povratno zanko.
Prva omogoča testiranje USART v SAMV71, saj poveže notranja priključka RxD in TxD, druga pa testiranje oddaljene naprave, saj odklopi USART v SAMV71 ter priključka na mikrokontrolerskem ohišju, ki ustrezata RxD, oziroma TxD, poveže tako, da se stanje RxD neposredno prenese na priključek TxD.
Na voljo je tudi način testiranja s samodejnim odmevom, pri katerem USART zgolj sprejema signal oddajnika in hkrati deluje kot oddaljena povratna zanka, pri kateri oddaljeni oddajnik sprejme enako zaporedje bitov, kot ga je poslal.
Prihodnjič
SAMV71 nudi programerju in načrtovalcu elektronskih naprav obilico možnosti, od katerih smo doslej opisali le osnovne. V prihodnjem nadaljevanju bomo pregledali še delovanje ostalih funkcijskih enot SAMV71 in se lotili kompleksnejših primerov uporabe, pri katerih bomo programirali tudi krmilnik XDMAC za DMA prenose podatkov ter uporabili operacijski sistem za delo v realnem času (RTOS).