- Osnove UART komunikacije
- Zahtjevi i postavljanje hardvera
- Kružna shema za Nuvoton N76E003 UART komunikaciju
- UART igle na mikrokontroleru Nuvoton N76E003
- UART registrira u mikrokontroleru Nuvoton N76E003
- UART načini rada u N76E003
- Programiranje Nuvoton N76E003 za UART komunikaciju
UART je skraćenica od Univerzalni asinkroni prijemnik / odašiljač i korisna je hardverska značajka u bilo kojoj jedinici mikrokontrolera. Mikrokontroler mora primati podatke, obrađivati ih i slati na druge uređaje. U mikrokontroleru su dostupne različite vrste komunikacijskih protokola, međutim, UART je najčešće korišten među ostalim komunikacijskim protokolima poput SPI i I2C. Ako netko treba primati ili prenositi podatke serijski, UART je uvijek najjednostavnija i najčešća opcija. Prednost UART-a je što za prijenos podataka između uređaja trebaju samo dvije žice. Nastavljajući s našim vodičem za mikrokontroler Nuvoton, u ovom ćemo članku naučiti kako izvoditi serijsku komunikaciju pomoću mikrokontrolera N76E003.
Osnove UART komunikacije
Kao što znamo što je UART, važno je znati povezane parametre UART-a.
Dva UART uređaja primaju i prenose podatke na istoj frekvenciji. Kada UART uređaj koji prima prepoznaje početni bit, počinje čitati dolazne bitove na određenoj frekvenciji poznatoj kao brzina prijenosa. Brzina prijenosa je važna stvar za UART komunikaciju i koristi se za mjerenje brzine prijenosa podataka u bitovima u sekundi (bps). Ova brzina prijenosa i prijenosa mora biti na istoj brzini prijenosa. Razlika brzine prijenosa između prijenosa i prijema UART-a može biti samo oko 10% prije nego što vrijeme bitova postane previše daleko. Najpopularnije brzine prijenosa su 4800, 9600, 115200 bps itd. Prije smo koristili UART komunikaciju i u mnogim drugim mikrokontrolerima koji su dolje navedeni.
- UART Komunikacija između ATmega8 i Arduino Uno
- UART komunikacija između dva ATmega8 mikrokontrolera
- UART komunikacija pomoću PIC mikrokontrolera
- UART komunikacija na mikrokontroleru STM8S
N76E003 ima dva UART-a - UART0 i UART1. U ovom uputstvu koristit ćemo UART perifernu jedinicu na mikrokontroleru N76E003. Ne trošeći puno vremena, procijenimo kakvu postavku hardvera trebamo za ovu aplikaciju.
Zahtjevi i postavljanje hardvera
Glavna komponenta koja je potrebna za ovaj projekt je pretvarački modul USB u UART ili TTL koji će učiniti potrebno sučelje između računala ili prijenosnog računala s modulom mikrokontrolera. Za ovaj ćemo projekt upotrijebiti modul USB to UART zasnovan na CP2102 koji je prikazan u nastavku.

Da ne spominjem, osim gornje komponente, trebamo razvojnu ploču temeljenu na mikrokontroleru N76E003, kao i Nu-Link programer. Dodatna jedinica napajanja od 5 V može biti potrebna ako se programer ne koristi kao izvor napajanja.
Kružna shema za Nuvoton N76E003 UART komunikaciju
Kao što možemo vidjeti u donjoj shemi razvojne ploče, drugi i treći pin jedinice mikrokontrolera koriste se kao UART0 Tx odnosno Rx. Krajnje lijevo prikazana je veza programskog sučelja.

UART igle na mikrokontroleru Nuvoton N76E003
N76E003 ima 20 pinova od kojih se 4 pina mogu koristiti za UART komunikaciju. Na donjoj je slici prikazana UART igla označena crvenim kvadratnim okvirom (Rx) i plavim kvadratnim okvirom (Tx).

Za UART0, pin 2 i 3 koriste se za UART komunikaciju, a za UART1, pin 8 i pin 18 koriste se za komunikaciju.
UART registrira u mikrokontroleru Nuvoton N76E003
N76E003 ima dva poboljšana full-duplex UART-a s automatskim prepoznavanjem adresa i otkrivanjem pogrešaka kadriranja - UART0 i UART1. Ova dva UART-a kontroliraju se pomoću registara kategoriziranih u dva različita UART-a. Dva su para RX i TX pinova dostupna u N76E003 za UART operacije. Stoga je prvi korak odabir željenog UART porta za rad.
U ovom uputstvu koristit ćemo UART0, pa će konfiguracija biti prikazana samo za UART0. UART1 će imati istu konfiguraciju, ali registri će biti različiti.
Nakon odabira jednog UART-a (u ovom slučaju UART0), I / O pinovi koji su potrebni za RX i TX komunikaciju trebaju se konfigurirati kao ulaz i izlaz. RX pin UART0 je pin 3 mikrokontrolera koji je Port 0.7. Budući da je ovo pin za primanje serijskog porta, port 0.7 mora biti postavljen kao ulaz. S druge strane, priključak 0,6 koji je drugi pin mikrokontrolera je prijenosni ili izlazni pin. Treba ga postaviti kao kvazi dvosmjerni način. Oni se mogu odabrati pomoću registra PxM1 i PxM2. Ova dva registra postavljaju I / O načine rada gdje x predstavlja broj porta (Na primjer, Port P1.0 registar će biti P1M1 i P1M2, za P3.0 to će biti P3M1 i P3M2, itd.) Konfiguracija može vidjeti na donjoj slici-

UART načini rada u N76E003
Zatim je sljedeći korak utvrđivanje načina rada UART-a. Dva UART-a mogla su raditi u 4 načina. Načini rada su-

Kao što vidimo, SM0 i SM1 (7. i 6. bit registra SCON) odabiru način rada UART-a. Način 0 je sinkroni rad, a ostala tri načina su asinkrona. Međutim, generator brzine prijenosa i bitovi okvira razlikuju se za svaki način serijskog priključka. Bilo koji od načina može se odabrati prema zahtjevu aplikacije, a to je isto i za UART1. Za ovaj se vodič koristi 10-bitna operacija s brzinom prelijevanja timera 3 podijeljena s 32 ili 16.
Sada je vrijeme za informacije i konfiguriranje registra SCON (SCON_1 za UART1) za UART0.



6. i 7. bit bit će postaviti UART način rada kao što je prethodno rečeno. Bit 5 koristi se za postavljanje višeprocesorskog načina komunikacije kako bi se omogućile opcije. Međutim, postupak ovisi o tome koji je način rada UART odabran. Osim ovih, bit REN bit će postavljen na 1 da omogući prijem, a TI zastava postavljena na 1 za upotrebu funkcije printf umjesto prilagođene funkcije prijenosa UART0.
Sljedeći važan registar je registar upravljanja napajanjem (PCON) (timer 3 bita 7 i 6 za UART1). Ako ste novi u timerima, pogledajte tutorial za Nuvoton N76E003 Timer kako biste razumjeli kako se koriste tajmeri na mikrokontroleru N76E003.

SMOD bit je važan za odabir dvostruke brzine prijenosa u načinu UART0 1. Sada, dok koristimo timer 3, kontrolni registar Timer 3 T3CON mora biti konfiguriran. Međutim, bit 7. i 6. rezervirani su za postavku dvostruke brzine prijenosa podataka za UART1.


I vrijednost skale za pred-skaliranje 3 -

5. bitni BRCK će postaviti Timer 3 kao izvor takta brzine prijenosa za UART1. Sada je podatkovnom listu N76E003 dana formula za izračunavanje željene brzine prijenosa, kao i vrijednost postavke uzorka za visoke i niske registre Timer 3 (16-bita).

Uzorak vrijednosti za izvor takta od 16 MHz

Stoga brzinu prijenosa treba konfigurirati u registru Timer 3 pomoću gornje formule. U našem slučaju to će biti Formula 4. Nakon toga, pokretanje Timer 3 postavljanjem TR3 registra na 1 završit će UART0 Initialization Timer 3. Za primanje i slanje UART0 podataka za korištenje donjeg registra -

SBUF registar automatski dobiva konfiguriran za primanje i prijenos. Da biste primili podatke iz UART-a, pričekajte da RI zastavica postavi 1 i pročitajte SBUF registar te pošaljite podatke UART0, pošaljite podatke SBUF-u i pričekajte da TI zastavica dobije 1 da potvrdi uspješan prijenos podataka.
Programiranje Nuvoton N76E003 za UART komunikaciju
Kodiranje je jednostavno, a cjeloviti kod korišten u ovom vodiču nalazi se na dnu ove stranice. Objašnjenje koda je sljedeće, UART0 se inicijalizira brzinom od 9600 baudova koristeći izjavu u glavnoj funkciji-
InitialUART0_Timer3 (9600);
Gornja funkcija definirana je u datoteci common.c i ona konfigurira UART0 s Tajmerom 3 kao izvorom brzine prijenosa, u načinu 1 i sa brzinom prijenosa od 9600. Definicija funkcije je sljedeća-
void InitialUART0_Timer3 (UINT32 u32Baudrate) // koristi timer3 kao generator brzine { P06_Quasi_Mode; // Postavljanje UART pina kao kvazi načina za prijenos P07_Input_Mode; // Postavljanje UART pina kao načina ulaza za primanje SCON = 0x50; // UART0 način rada1, REN = 1, TI = 1 set_SMOD; // UART0 Double Rate Enable T3CON & = 0xF8; // T3PS2 = 0, T3PS1 = 0, T3PS0 = 0 (prescale = 1) set_BRCK; // izvor takta brzine prijenosa UART0 = Timer3 #ifdef FOSC_160000 RH3 = HIBYTE (65536 - (1000000 / u32Baudrate) -1); / * 16 MHz * / RL3 = LOBYTE (65536 - (1000000 / u32Baudrate) -1); / * 16 MHz * / #endif #ifdef FOSC_166000 RH3 = HIBYTE (65536 - (1037500 / u32Baudrate)); /*16,6 MHz * / RL3 = LOBYTE (65536 - (1037500 / u32Baudrate)); /*16,6 MHz * / #endif set_TR3; // Okidač okidača3 set_TI; // Za funkciju printf mora se postaviti TI = 1 }
Deklaracija se vrši korak po korak, kao što je prethodno spomenuto, a registri su konfigurirani u skladu s tim. Međutim, u BSP knjižnici N76E003 postoji greška koja je umjesto P07_Input_Mode; postoji P07_Quasi_Mode . Zbog toga funkcija primanja UART-a neće raditi.
Brzina prijenosa je također konfigurirana prema unosu brzine prijenosa i koristeći formulu navedenu u tablici podataka. Sada se u glavnoj funkciji ili while petlji koristi funkcija printf. Da biste koristili funkciju printf , TI treba postaviti na 1. Osim toga, u while petlji koristi se kućište sklopke i prema primljenim UART podacima vrijednost se ispisuje.
while (1) { printf ("\ r \ nPritisnite 1 ili Pritisnite 2 ili Pritisnite 3 ili Pritisnite 4"); oper = Primanje_podatka_od_UART0 (); prekidač (oper) { slučaj '1': printf ("\ r \ n1 je pritisnut"); pauza; slučaj '2': printf ("\ r \ n2 je pritisnut"); pauza; slučaj '3': printf ("\ r \ n3 je pritisnut"); pauza; slučaj '4': printf ("\ r \ n4 je pritisnut"); pauza; zadano: printf ("\ r \ nPogrešna tipka pritisnuta"); } Timer0_Delay1ms (300); } }
Pa, za UART0 primite Receive_Data_From_UART0 (); koristi se funkcija. Također je definirano u knjižnici common.c .
UINT8 Receive_Data_From_UART0 (void) { UINT8 c; dok (! RI); c = SBUF; RI = 0; povratak (c); }
Čekat će da RI zastavica dobije 1 i vratiti podatke o primanju pomoću varijable c.
Treptanje koda i izlaza
Kôd je vratio 0 upozorenja i 0 pogrešaka i bljesnuo je pomoću zadane metode treptanja od strane Keila. Ako niste sigurni kako kompilirati i prenijeti kôd, pogledajte članak o početku rada s nuvotonom. Redovi u nastavku potvrđuju da je naš kôd uspješno prenesen.
Ponovna izgradnja započeta: Projekt: printf_UART0 Obnova ciljanog 'GPIO' kompajliranje PUTCHAR.C… kompajliranje Print_UART0.C… kompajliranje Delay.c… kompajliranje Common.c… sastavljanje STARTUP.A51… povezivanje… Veličina programa: podaci = 54,2 xdata = 0 code = 2341 izrada hex datoteke iz ". \ Output \ Printf_UART1"… ". \ Output \ Printf_UART1" - 0 Greške, 0 Upozorenja. Vrijeme izrade proteklo: 00:00:02 Učitajte "G: \\ n76E003 \\ software \\ N76E003_BSP_Keil_C51_V1.0.6 \\ Sample_Code \\ UART0_Printf \\ Output \\ Printf_UART1" Brisanje završeno . Flash pisanje gotovo: programirano 2341 bajta. Flash Provjera Gotovo: 2341 bajt ovjeren. Flash Load završeno u 15:48:08
Razvojna ploča povezana je u izvor napajanja preko programera i prijenosnog računala pomoću modula USB na UART. Za prikaz ili slanje UART podataka potreban je softver za serijski monitor. Za ovaj postupak koristim termin tera.

Kao što možete vidjeti na donjoj slici, uspio sam prikazati nizove poslane s našeg nuvoton kontrolera i prikazati ih na softveru serijskog monitora. Također je mogao čitati vrijednosti sa serijskog monitora.

Potpuni prikaz ovog vodiča možete pogledati u donjem video linku. Nadam se da ste uživali u članku i naučili nešto korisno. Ako imate bilo kakvih pitanja, možete ih ostaviti u odjeljku za komentare u nastavku ili na našim forumima objaviti druga tehnička pitanja.
