Asynchronous serial data transfer, UART and CAN controller
1. Elektrotehnički fakultet, Univerzitet u Beogradu
Predmet : Namenski računarski sistemi
Domaći zadatak : Asinhroni serijski prenos.
Hardver i formati razmene podataka
Profesor : Student:
Dr. Lazar Saranovac Vlajić Jovan 2008 / 321
Septembar 2015
3. 3
1. Uvod
Najčešći metod komunikacije između mikroprocesora i periferija u namenski računarskim
sistemima je putem asinhrone serijske magistrale. Ovakva magistrala se sastoji od jednog
simetričnog para žica koje povezuju mikrokontorler koji predstavlja Master na magistrali i
periferije koje predstavljaju Slave uređaj na magistrali. Kad god mikrokontroler ima podatak koji
želi da pošalje periferiji on to čini tako što šalje kodovan niz bitova preko svoje linije za slanje
(TX-transmit wire). Podaci se prenose do periferije koja ih prima preko svoje prihvatne linije (Rx-
receive wire). Komunikacija od periferije ka mikrokontroler se obalja na sličan način samo u
suprotnom pravcu. Na slici 1. je prikazan blok dijagram asinhronog serijskog prenosa.
Slika1. Blok dijagram asinhronog serijskog prenosa
Ovaj vid komunikacije se nazia asinhroni zato što Master i Slave uređaj ne rade po istom taktu
odnosno ne postoji CLK signal na magistrali. Umesto toga koriste se posebnibitovi koji su
kodovani u samoj poruci koji se šalju od predajnika ka prijemniku i moraju biti dekodovani u
prijemniku. Najčešće korišćeni uređaj za kodovanje i dekodovanje poruka na asinhronoj serijskoj
magistrali je UART (Universal Asynchronous Receiver/Transmitter) U daljem tekstu
bavićemo se tipovima asinhronih magistrala,kao i hardverom i formatima razmene
podataka.
4. 4
1. UART (Universal Asynchronous Receiver/Transmitter)
UART predstavlja uređaj za konvertovanje paralelnog tipa podataka u serijski tip podataka i
obrnuto. Komunikacioni standard je implementiran još 60-ih godina i do danas je ostao
najjednostavniji,univerzalni,najbolje razumljiv i najbolje hardverski podržan standard. Kablovi za
komunikaciju imaju jedan par žica,jedan za slanje podataka,drugi za primanje podataka(Tx,Rx).
Serijski portšalje povorku bitova,bit po bit.Serijski tip podataka se u periferiji ponovo pretvara u
paralelni tip podataka da bi mikrokontroler mogao da obrađuje podatke.Podacikoji se šalju preko
UART-a su organizovani u bajtovima što je konvencionalno i podudarase sa veličinom ASCII
karaktera. Osim konverzije tipa podataka koji je njegov osnovnizadatak,UART takođe menja
nivoe logičkih jedinica i nula prilikom prenosa preko magistrale. Na 8-bitni podatak koji se šalje
dodaju se dodatnibitovi koji se nazivaju start i stop bit,kao i bit koji vodi o računa o parnosti
podatka. Brzina prenosa podataka je mnogo sporija nego kod paralelnog prenosa unutar
mikrokontrolera. Zbog toga postojestandardne brzine prenosa podataka koje mogu da se koriste
na ovakvoj magistrali.
Format poruke koji se prenosi preko UART-a data je na slici 2.
Stop
8-bitni podatak bit
D0 D1 D2 D3 D4 D5 D6 D7
Start Bit Parnosti
bit
Slika2. Formatporuke koja se prenosi preko UART-a
Definisaćemo bitove u formatu poruke koja je prikazana na slici 2.
- Start bit predstavlja početak poruke podataka.Uglavnom se koristi da je start bit vrednosti 0 i
na taj način se zna da je to početak nove poruke.
- Stop bit predstavlja kraj poruke podataka.Uglavnom se koristi da je stop bit vrednosti 1 i na taj
način se zna da je to kraj tekuće poruke.
- Bit parnosti predstavlja bit za detekciju grešaka prenošene poruke. Može se računati kao bit
parne parnosti i kao bit neparne parnostina osnovupodataka prenošene poruke.
- Bitovi podataka D0..D7 predstavljaju prave podatkekoji trebaju da budu prenešeni.
Brzina prenosa jednog bita preko serijskog porta naziva se Baud rate. Ako se prenosi 8 bitova
podataka sa jednim start i jednim stop bitom, bez bita parnosti, može se ostvariti sledeća brzina
prenosa (115200 baud rate =115200bits/sec ,efektivna brzina prenosa iznosi 92160 bits/sec)
5. 5
UART se najčešće koristi zajedno sa RS-232 standardom za prenos podatka koji specificira
električne,mehaničke,funkcionalne i proceduralne karakteristike komunikacione opreme.
Kao što smo ranije napomenuli UART se sastoji od predajnika i prijemnika.
Predajnik u suštini predstavlja specifični shift registar u koji se upisuju podaciu paralelnom obliku
a ispisuju se bit po bit pomeranjem određenom brzinom prenosa.
Prijemnik prima podatkeu serijskom obliku koje zatim rekonstruiše u poslate paralelne podatke.
Ovakav način komunikacije se koristi uglavnom gde je potrebno ostvariti male troškove
povezivanja mikrokontrolera i periferija u sistem.Blok dijagram UART sistema je dat na slici 3.
UART
predajnik
RS-232 RS-232
UART
prijemnik
Serijski podaciParalelni podaci
8 8
Paralelni podaci
Slika 3. Blok dijagram UART sistema
Na serijskoj liniji kada nema prenosa signala prisutan je nivo logičke jedinice.Prenos podataka
počinje kada se detekutje start bit čija je vrednost jednaka nuli.
Na slici 4 su prikazane strukture UART predajnika i prijemnika.
TDR
TSR
Transmitter control
1
1
Ld
Baud rate
generator
BClk BClkx8
TxD
RDR
RSR
Receiver control
RxD
8
DATA BUS
Transmiter Receiver
Slika 4. Struktura UART predajnika i prijemnika
U registar predajnika TDR upisuje se osmobitni podataka sa magistrale podataka . Zatim se taj
osmobitni podataka upisuje u šift registar TSR. Prvo se iz šift registra generiše start bit čija je
standardna vrednost jednaka nuli a zatim se podacipomeraju udesno 8puta bit po bit. Na kraju
generiše se i stop bit čija je vrednost jednaka 1. UART prijemnik očekuje na svom ulazu RxD start
bit,kada ga detekuje serijski podacise smeštaju u registar RSR zajedno sa start,stop bitom. Nakon
6. 6
primljenog stop bita koji označava kraj poruke svi podacise iz RSR registra upisuju u RDR. Zatim
se ti podacišalju na magstralu podataka ka mikrokontroleru. Na UART magistrali moraju unapred
postojati određeni uslovi između prijemnika i predajnika a to su :
- Brzina prenosa podataka (Baud rate)
- Broj bita podataka i stop bitova
- Upotreba bita parnosti
UART se vrlo često koristi za veliki broj perifernih uređaja. Navešćemo neke od njih koji se
koriste u namenski računarskim sistemima :
1. GSM/GPRS modemi
2. Bluetooth modemi
3. GPS prijemnici
2. CAN (Controller Area Networking )
CAN magistrala je definisana kasnih 80-ih godina od strane firme Boschkoja se prvobitno
koristila u automobilskoj industriji. Kasnije se otkrilo da može biti veoma korisna i široko
primenljiva i u industrijskim sistemima. Ova magistrala podržava više master uređaja na njoj za
povezivanje elektronskih kontrolnih sistema.Svaki sistem može da šalje i prima poruke ali ne
simultano. Poruka se uglavnom sastoji od identifikatora (ID) koji predstavljaju prioritet poruke i 8
bajtova podataka. Poruka se prenosi serijski na magistralu. Uređaji koji koriste CAN magistralu su
uglavnom senzori,aktuatori i drugi kontrolni uređaji.Ovi uređaji nisu direktno vezani na magistralu
već preko CAN kontrolera.CAN kontroler je sofisticiran uređaj,preko njega skoro sve funkcije
CAN protokola se automatski odrađuju bez potrebe uticaja mikrokontrolera. Najbitnije je da se na
početku on konfiguriše upisivanjem podataka u njegove register dok on kasnije vrši operacije
samostalno I šalje poruke na magistralu.Struktura CAN kontrolera je prikazana na slici 5.
Interface
Management
Logic
Transmit
Buffer
Receive
FIFO
Acceptance
Filter
CAN Core
Block
TransceiverMicrocontroller
CAN controller
Slika 5. Struktura CAN kontrolera
7. 7
Prema slici 5 možemo primetiti da se CAN kontroler sastoji od više blokova koje ćemo objasniti.
CAN Core Block – ima ulogu da kontroliše prijem i slanje CAN poruka prema CAN specifikaciji.
Interface ManagementLogic - ima ulogu povezivanja CAN kontrolera sa mikrokontrolerom
preko multipleksirane magistrale adresa i podataka.
Transmit Buffer – služi za skladištenje cele CAN poruke.Kada je prenos podataka od strane
mikrokontrolera u toku poruka se upisuje u bafer na jednoj strani i zatim se čita iz njega od strane
CAN Core Block-a.
Acceptance Filter – ima ulogu da filtrira i prosleđuje poruku konvertovanu iz serijskog u
paraleleni tip podataka ka mikrokontroleru.
Receive FIFO – služi za skladištenje poruka koje su prihvaćene od strane Acceptance Filter-a koje
se zatim šalju ka mikrokontroleru.
Uređaji na CAN magistrali se nazivaju čvorovima i u zavisnosti od njihove funkcije primaju ili
šalju specifične poruke. CAN čvortreba da sadrži mikrokontroler,CAN kontroler,primopredajnik.
Mikrokontrolerodlučuje koje poruke su relevantne za njega i koje on želi da pošalje.
Senzori,akutatori i kontrolni uređaji mogu biti povezani na mikrokontroler.
CAN kontroler ima dvojaku ulogu,slanje i primanje poruka sa magistrale. Prilikom primanja
poruke kontroler prima serijski podataksa magistrale dok cela poruka ne bude dostupnaa zatim je
prosleđuje mikrokontroleru. Prilikom slanja podataka,mikrokontroler prosleđuje poruku CAN
kontroleru koji zatim šalje bitove na serijsku magistralu.
Primopredajnik prilagođava nivoe signala sa magistrale na CAN kontroler i obratno.Takođeon
ima i zaštitnu ulogu kojom štiti kontroler od spoljnih uticaja.
Na sledećoj slici prikazano je povezivanje CAN uređaja na magistralu.
8. 8
CAN
Device
CAN Bus
CAN
Device
GND
CAN_L
CAN_H
120R
120R
Slika 6. Blok šema povezivanja CAN uređaja na magistralu
Karakteristike CAN magistrale :
- Moristi upreden kabl
- Maksimalna frekvencija signala do 1Mbit/sec
-Dužina se obično kreće 40m
-Velika pouzdanosti efikasan sistem kontrole grešaka
-Uređaji nemaju specifične adrese
Funkcionisanje CAN magistrale
Svakom čvoru dodeljen je jedinstveni idnetifikacioni broj koji predstavlja binarnu prezentaciju
broja čvora.(na primer ako je čvor 5,dodeljen je identifikacioni broj 101) Svi čvorovikoji žele da
pošalju poruku bore se za svoje mesto na magistrali tako što šalju binarni signal koji predstavlja
njihov identifikacioni broj.Čvor sa najmanjim identifikacionim brojem pobeđuje i dobija pravo na
korišćenje magistrale.
9. 9
Format poruka na CAN magistrali
Format poruka na CAN magistrali prikazan je na slici 7.
SOF MID RTR CONTROL DATA CRC ACK EOF
Slika 7. Format poruka na CAN magistrali
SOF – Početak poruke (Start Of Frame )
MID – Identifikator poruke ( Message Identifier ) Što je manja vrednost to poruka ima veći
prioritet. Dužina je od 11 do 29 bita u zavisnosti od standard koji se koristi.
RTR - Remote Transmission Request. Zahtev za slanje,inicijalna vrednost jednaka nuli.
CONTROL- Specificira brojbajtova poruke koja sledi
DATA - Podacidužine 0-8 bajtova
CRC – Sadrži 15-bitni CRC kod
ACK- Predstavlja prazan slot koji će biti popunjen bilo kojim čvorom koji prihvata poruku
EOF – Kraj poruke
Vreme trajanja jednog bita (Bit timing)
Svaki čvor u CAN magistrali ima svoj lokalni CLK ali CLK ne postoji na magistrali pošto je ona
serijska asinhrona magistrala. Međutim na magistrali mora postojati neki način sinhronizacije kako
bi predajnik i prijemnik pravilno čitali poruke.
Sinhronizacija je urađena deljenjem svakog bita u porucina nekoliko segmenata :
- Sinhronizacija
- Propagacija
- Faza 1 i faza 2
Dužina svakog faznog segmenta može se podesiti u skladu sa trenutnim stanjem na mreži i u
čvoru. Na slici 8 je prikazan trajanje jednog bita.
10. 10
Next bitPhase 2Phase 1PropSyncPrevious bit
Nominal Bit Time
Slika 8. Vremenski dijagram trajanja jednog bita
Primena CAN magistrale je najveća u auto industriji. Na slici 9 je prikazana CAN magistrala u
automobilu sa svim magistralama i ona predstavlja glavnu magistralu u sistemu.
Slika 9. Primer korišćenja CAN magistraleu auto indistriji
11. 11
Literatura
1. Embedded Systems and Applications (Serial)Buses, Cristinel Ababei ,Department of
Electrical Engineering, University at Buffalo ,Spring 2013
2. Vehicle Applications of ControllerArea Network , Karl Henrik Johansson,Lars Nielsen
3. Serial Communications, Silicon Labs
4. SJA1000Stand-alone CAN controller, Philips semiconductors