Se folosete comunicaia serial ntre microcontroller i alte subsisteme, pentru economie de pini la capsul Multe MC au incluse att interfee de comunicare sincrone ct i asincrone
Interfaa serial asincron este numit de obicei serial communication interface (SCI sau UART) Interfaa serial sincron e numit de obicei serial peripheral interface (SPI)
De obicei (dar nu obligatoriu) o magistral serial sincron include o linie separat de clock
se simplific astfel interfaa ntre emitor i receptor linia de ceas e susceptibil la zgomot n cazul distanelor mari
La magistrala serial asincron ceasurile emitorului i receptorului sunt independente i se face o re-sincronizare pentru fiecare bit sup bitul de start
INTERFEE SERIALE
Utilizate, n general, pentru a conecta circuite periferice la microcontroller, n cadrul unui EmS Aceste interfee permit conectarea de dispozitive diverse, cum ar fi:
ceas de timp real (RTC - real-time clock) memorii nevolatile pentru stocarea unor parametrii interfee cu senzori i multe altele
Perifericul receptor (sclav) utilizeaz semnalul de ceas la achiziia fluxului de bii seriali Exist posibilitatea de a conecta mai multe dispozitive la aceeai interfa SPI a master-ului
Un master selecteaz un sclav prin activarea intrrii sale de chip select Un periferic ne-selectat nu va lua parte la transferul SPI
Unele procesoare au un semnal de chip select dedicat pentru SPI, numit Slave Select (/SS) MOSI este generat de master i recepionat de scalv
La unele chip-uri MOSI este numit Serial In (SI) sau Serial Data In (SDI)
Semnalul de chip select ctre periferice este de obicei generat cu ajutorul unui pin de I/O digital a masterului
INTERFAA SPI
TRANSMISIA SPI
Master-ul i scalvii conin cte un registru cu deplasare serial a datelor (serial shift register) Master-ul ncepe transferul unui octet prin scrierea acestuia n registrul su SPI de serializare. Pe msur ce se face transmisia serial ctre sclav (prin linia MOSI), sclavul transfer coninutul registrului su de serializare (prin linia MISO) ctre master
n acest fel se face schimb al informaiilor stocate n cele dou registre de serializare
SPI
Unele periferice cu interfa SPI permit transfer de mai muli octei
se transfer un flux continuu de date de la master multe memorii cu interfa serial SPI lucreaz n acest fel la acest tip de transfer semnalul /CS rmne activ pe toat durata transferului de exemplu: o memorie ateapt ca o comand de write s fie urmat de patru octei de adres (adresa de start) i apoi octeii de date ce vor fi stocai
DAISY-CHAINED TRANSFER
n acest exemplu procesorul (master) transmite trei octei prin interfaa SPI
Primul octet e transferat n sclavul A La transferul celui de-al doilea octet n A, primul e transferat ctre B Al treilea octet n A, al doilea n B i primul n C
Alte periferice sclav ateapt doar un singur octet de control, cum ar fi de exemplu un convertor A/D Unele dispozitive sclav permit conectarea n lan de prioriti (daisychained)
Dac masterul dorete s citeasc un rezultat din A, el va transfera o secven fictiv de 3 octei prin MOSI Conectarea n lan nu funcioneaz cu orice dispozitiv SPI (niciodat cu dispozitivele de memorie care cer un transfer multi-octet)
10
SCI
SCI (UART) este o interfa de comunicaie asincron (Universal Asynchronous Receiver Transmitter, UART) UART utilizeaz dou fire transmit (TXD) i receive (RXD), pentru comunicaie full- sau half-duplex. Standardul RS-422 e proiectat de asemenea pentru comunicaie punct la punct dar utilizeaz dou linii difereniale pentru transmisie (att RXD ct i TXD constau din perechi de fire torsadate) RS-422 se folosete la distane mai mari i este o alegere bun pentru medii cu zgomot. UART :
master 2
slave 3
12
Generaliti I2C
I2C (Inter-Integrated Circuit numit i IIC) este o magistral ieftin i eficient I2C este o magistral sincon, bidirectional, de vitez mic Conectarea / deconectarea unor dispozitive la I2C nu afecteaz alte dispozitive I2C este o magistral multi-master Viteza datelor n mod standard este de 100 kbps, iar n mod extins de 400 kbps Fiecare dispozitiv conectat la I2C are o adres unic i poate lucra ca transmitor sau receptor I2C mai este numit TWI (Two-Wire serial Interface)
Generaliti I2C
Ambele linii (SDA i SCL) sunt activate de circuite open-drain
Liniile sunt conectate la tensiunea pozitiv prin rezistoare de pull-up, astfel c n repaus sunt la nivel HIGH
13
14
16
Aspecte funcionale
Sclavul poate prelungii perioada JOS a ceasului (nu i pe cea SUS) att ct este necesar. Oricare receptor poate trage, dac este nevoie, SCL jos (bit/eveniment de WAIT) pentru a ntrzia un octet de date care urmeaz unui octet ce a sosit la aceeai adres. Dac dou dispozitive ncearc s controleze aceeai linie (SDL sau SCL) circuitele cu colector n gol previn erorile fizice, iar fiecare din cei doi masteri trebuie s asculte magistrala n timpul transmisiei pentru a fi sigur c nu interfereaz cu alt mesaj Dup fiecare 8 bii transmii pe SDL urmeaz un semnal (eveniment) de ACKNOWLEDGE (confirmare). Pentru a confirma recepia corect, prin ACK, receptorul trage SDL jos pe timpul celui de-al noulea impuls de ceas
Master transmitor
ACK
Sclav
dup recepia corect a adresei dup recepia corect a unui octet de date
Master receptor
17
ACK
Sclav
18
Adres dispozitiv
7bii
R/W 1bit
19
20
ARBITRARE I2C
I2C este o magistral multi-master
Mai multe dispozitive master pot porni transmisia n acelai timp !!
Un pachet I2C
Master transmite:
un bit 0 dac trage SDA jos un bit 1 dac las linia SDA n stare sus
Dac doi masteri ncep transmisia simultan, cel ce transmite 1 i citete 0 pe magistral va renuna pentru c a detectat o transmisie cu prioritate mai mare Protocolul de arbitrare e numit protocol cu bit dominant, sau Binary Countdown
21 22
Adrese speciale
Adresa 0000000 cu bit de direcie 0, este un apel general (general call sau "bus broadcast) care pornete transmisia ctre toate dispozitivele I2C Prin acest apel general dispozitivul master determin ce sclavi sunt disponibili
Al doilea octet al transmisiei indic scopul apelului general Dup acest al doilea octet sclavii afl dac comanda le este adresat i rspund cu ACK Sclavii pentru care comanda nu e aplicabil neglijeaz apelul general
Adrese speciale
Adresa 0x01 (00000001) este o adres special cunoscut ca i octet de START Acest octet e utilizat pentru a indica c urmeaz un transfer lung de date Aceast adres special este important pentru dispozitivele master ce nu au interfa specializat I2C i care prin software trebuie s testeze continuu magistrala Atunci cnd un asemenea master detecteaz un octet de START generat de alt master, el poate reduce rata de interogare, alocnd mai mult timp pentru alte sarcini software
Dac al doilea octet este 0x06 (00000110), se indic c sclavii vor face un reset i apoi vor rspunde cu adresa lor. Dac al doilea octet este 0x04 (00000100), sclavii vor rspunde cu adresa lor, dar nu vor face i reset Dac cel mai puin semnificativ bit la octetului doi este un 1, atunci, prin apelul general, masterul se identific ctre ali masteri din sistem prin transmiterea adresei sale Ceilali bii ai celui de-al doilea octet reprezint adresa masterului
23
24
Adrese speciale
Adresa 11110XX este adresa special care indic c se va genera o adres de dispozitiv pe 10 bii Se folosete n modul extins al I2C Teoretic se pot controla pn la 1,024 periferice n acelai sistem pot exista dispozitive cu adrese pe 7 i 10 bii La adrese pe 10 bii, adresarea se face prin doi octei succesivi (ultimii 2 bii ai adresei speciale + 8 bii din al doilea octet) n acest caz perifericele cu adrese pe 7 bii vor ignora tranzacia
25
La EmS interfaa serial este metoda cea mai simpl i ieftin pentru conectarea unui calculatorul gazd, fie ca parte a aplicaiei, fie pentru scop de depanare Cea mai simpl interfa serial asincrpon este UART (the Universal Asynchronous Receiver Transmitter) UART este numit de asemenea ACIA (Asynchronous Communication Interface Adapter)
26
UART
UART este asincon pentru c nu se transmite semnal de ceas prin linia de date serial Receptorul recunoate valorile binare individuale fr o linie comun de ceas Interfaa UART const din dou pri:
un receptor (receiver - Rx) care convertete un flux serial de bii n date paralele (cuvinte) pentru microprocesor un transmitor (transmitter - Tx) care convertete date paralel de la microprocesor ntr-un flux serial de bii, pentru transmisie
UART furnizezaz i informaie de stare, cum ar fi receptorul este plin (datele au ajuns) sau transmitorul este gol (o transmisie n curs s-a terminat)
27 28
Transmisie serial
O problem important asociat cu transmisia serial este reconstrucia datelor la captul de recepie Apar dificulti n determinarea granielor dintre biii individuali
De exemplu, dac linia serial este jos pentru un anumit timp, receptorul trebuie s fie capabil s identifice dac informaia reprezint "00" sau "000 Trebuie s se tie unde se oprete un bit i unde ncepe cellalt
Transmisie serial
Formatul datelor transmise utilizeaz la nceputul transmisiei pentru fiecare caracter un bit de start i la sfrit unul sau doi bii de stop Receptorul i sincronizeaz ceasul dup recepionarea bitului de start i apoi eantioneaz biii de date (7 sau 8 n funcie de configuraia sistemului) Dac receptorul nu primete secvena de stop, presupune c ceasul su este defazat fa de al emitorului i se declar o eroare de cadru Rezolvarea erorii cade n seama aplicaiei software
30
Fiecare dispozitiv implicat n comunicaia serial are propriul semnal de ceas local Dispozitivele emitor i receptor trebuie s lucreze la aceeai frecven, iar n plus trebuie s existe logic pentru detectarea fazei datelor transmise i pentru sincronizarea ceasului receptorului la aceast faz Transmisia asincron este utilizat n special la transmisa caracterelor i la sisteme unde intervalul dintre transmisa octeilor se poate modifica n timp
29
Pentru o transmisie corect, emitorul i receptorul trebuie s utilizeze acelai tip de paritate (even parity sau odd parity) Erorile de paritate trebuie tratate de programatorul sistemului
UART nu ia nici o msur la detectarea erorii de paritate
31
32
RS-232C
RS-232C este un standard de interfa de comunicaie serial aprut nc din anii 60 ai secolului trecut RS-232C este utilizat pentru interfaarea dispozitivelor seriale printr-un cablu cu lungime maxim de 25 m i o rat maxim de 38.4 kbps Se poate folosi pentru conectare la:
Alte calculatoare Modem Imprimante seriale Plottere seriale ......
RS-232C
RS-232C folosete tensiuni referite fa de mas (transmisie unipolar) :
Un logic high este un semnal cu tensiunea n domeniul -5 la -15 V (tipic -12 V) Un logic low este un semnal cu tensiunea n domeniul +5 la +15 V (tipic+12 V)
Unele sisteme RS-232C nc utilizeaz cadre de date pe 7 bii, iar altele 8 bii
33
34
RS-232C
O legtur RS-232C const dintr-un driver i un comparator:
RS-232C
RS-232C definete de asemenea conectorii i alocarea pinilor RS-232C a fost conceput iniial pentru interconectarea a dou tipuri de echipamente:
Data Terminal Equipment (DTE) Data Communication Equipment (DCE)
nainte de apariia PC-urilor un DTE era un terminal sau un teletype, iar un DCE era un modem
35
36
RS-232C
conectare a unui terminal sau a unui modem la intzerfaa serial a calculatorului
Cum conectm un terminal sau un modem la interfaa serial a unui calculator ?
Calculatorul este DTE sau DCE?
Conectri RS-232C
Pentru a conecta un PC la un modem e nevoie de un cablu DTE-DCE Pentru a conecta un PC la un terminal e nevoie de un cablu DTE-DTE Pentru a conecta o staie Sun la un PC e nevoie de un cablu DCE-DTE null modem (unde Rx i Tx sunt inversate) Pentru a conecta dou PC-uri e nevoie de un cablu DTE-DTE null modem .. Pentru doar dou tipuri de dispozitive (DTE i DCE) e nevoie de o sumedenie de cabluri cu permutri ale terminalelor
37 38
Standardul RS-232C spune c dac un terminal este la un capt al legturii, la cellalt capt este un DCE Dac se conecteaz un terminal la o staie Unix workstation, standardul RS-232C spune c staia de lucru este un DCE Dac se conecteaz un modem la un calculator, calculatorul va fi DTE
Conexiuni RS-232C
Conexiuni standard pentru conectori cu 25 pini i 9 pini. Numele semnalelor sun referite la DTE. De exemplu, Tx se refer la datele transmise de la DTE i recepionate la DCE
Signal Tx Rx RTS CTS DTR DSR DCD RI FG SG Function Transmitted Data Received Data Request To Send Clear To Send Data Terminal Ready Data Set Ready Data Carrier Detect Ring Indicator Frame Ground (chassis) Signal Ground 25-pin 2 3 4 5 20 6 8 22 1 7 9-pin 3 2 7 8 4 6 1 9 5 Direction From DTE to DCE To DTE from DCE From DTE to DCE To DTE from DCE From DTE to DCE To DTE from DCE To DTE from DCE To DTE from DCE Common Common
Shake Hands
Atunci cnd se face transmisie serial, trebuie s existe o cale de a mpiedica transmitorul s transmit noi date nainte ca receptorul s fi avut ansa s termine prelucrarea datelor anterioare Protocolul este numit comunicare cu confirmare (handshaking), sau controlul fluxului de date (flow control) Conform acestui protocol dup transmiterea unui octet (sau pachet de date), transmitorul nu va mai trimite nimic pn la confirmarea c receptorul este gata pentru o nou transmisie Exist trei forme de handshaking:
Hardware Software Fr confirmare
39
40
NO-HANDSHAKING
Se utilizeaz atunci cnd transmisia este mult mai lent dect procesul de recepie
De exemplu, dac se folosete un sistem embedded simplu ce lucreaz la 1 MHz i care transmite date ctre un calculator de mare vitez ce lucreaz la 4 GHz Chiar dac viteza de prelucrare a receptorului este foarte mare, dac maina ruleaz un sistem de operare obinuit, pot exista situaii cnd nu face fa la fluxul de date de intrare n aceste situaii, o soluie practic bun este s se includ handshaking
Hardware handshaking
Dac se folosete un port serial pentru a furniza o interfa a calculatorului cu un utilizator uman, este sigur c omul nu poate tipri suficient de repede ca s pun calculatorul n dificultate Ca urmare, dac utilizai porturile seriale doar pentru accesul utilizator, sau pentru depanare, nu este nevoie de handshaking
Cnd transmitorul dorete s transmit, activeaz RTS, anunnd receptorul c sunt date de furnizat Receptorul activeaz CTS atunci cnd este gata s recepioneze noi date
fluxul de date este limitat la viteza cu care acestea pot fi prelucrate.
41
42
Software handshaking
Este cunoscut i sub numele XON/XOFF Se utilizeaz doar la sistemele unde nu se poate implementa protocolul hardware, aa cum se ntmpl la transmisia prin linie telefonic Software handshaking folosete dou caractere pentru a indica o cerere de suspendare a transmisiei ("suspend transmission) , respectiv un caracter de gata pentru reluare ("clear to resume) Acestea sunt caracterele Ctrl-S (0x13) i Ctrl-Q (0x11) Dac se transmite doar text ASCII, totul va fi OK Dac se transmit date binare, datele pot fi interpretate ca i caractere de control
Soluia obinuit const n pre-procesarea datelor nainte de transmisie, prin conversie n caractere ASCII De exemplu octetul 0x2F se transform n caracterul ASCII "2" (0x32) plus "F" (0x46) Programele de la receptor vor face conversia invers n date binare
43
44
RS-422
RS-422 este o interfa ce utilizeaz tensiune diferenial (ntre dou linii) pentru a transmite datele binare Permite lucrul n mediu cu interferen, pentru c diferena de tensiune ntre firele torsadate rmne aceeai RS-422 poate face transmisii de date pe cablu cu lungime de pn la 1.200 m
RS-422
Legtura RS-422 conine un driver (D) i un receptor (R) legate printr-o pereche de fire torsadate Rt rezisten terminare, anti-reflexie, de obicei de 100-120 .
45
46
RS-422
Diferenele de tensiune dintre cele dou fire se ncadreaz n intervalul 4 V i 12 V
47
48
RS-485
RS-485 este o variant a RS-422 utilizat pentru legarea dispozitivelor ntro reea de cost sczut n aplicaii industriale Permite mai multor noduri s schimbe informaii prin dou fire RS-485 este o arhitectur a master-slave
Toate tranzaciile sunt iniiate de master, iar sclavul transmite doar atunci cnd i se cere acest lucru
49
50
PWM
Este controllerul folosit de obicei pentru operaii de conversie DA PWM = Pulse Width Modulation
De exemplu pentru un factor de umplere de 50% i o amplitudine a formei de und dreptunghiulare de 5 V, tensiunea medie pe ciclu este 2.5 V De exemplu pentru un factor de umplere de 10% i o amplitudine a formei de und dreptunghiulare de 5 V, tensiunea medie pe ciclu este 0.5 V
La ieirea PWM se folosete n acest caz un FTJ PWM poate fi folosit pentru a controla viteza unui motor electric PWM poate fi utilizat pentru a comanda intensitatea luminoas (reglabil) printr-un LED PWM poate fi utilizat pentru generarea de tonuri audio
51