Sunteți pe pagina 1din 13

INTERFEE DE COMUNICAIE

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)

INTERFEE DE COMUNICAIE SERIAL LA MICROCONTROLLERE

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

SPI - Serial Peripheral Interface


SPI a fost dezvoltat de Motorola pentru a furniza o interfa simpl i de cost redus ntre microcontrollere i dispozitive periferice SPI e numit uneori interfa cu patru fire Poate fi utilizat pentru interfaarea diverselor dispozitive, cum ar fi:
memorie (stocare date) convertoare analog-digitale convertoare digital-analoge RTC i calendare RTC LCD drivers sensori chip-uri audio alte microcontrollere .... domeniul componentelor cu interfa SPI crete continuu

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

Sunt interfee de pre redus i uor de implementat

Serial Peripheral Interface


SPI este o interfa serial sincron
toate transmisiile sunt sincronizate cu un semnal de ceas comun furnizat de master (microcontroller)

Serial Peripheral Interface


SPI utilizeaz patru semnale:
1. 2. 3. 4. Master Out Slave In (MOSI) Master In Slave Out (MISO) Serial CLock (SCLK sau SCK) Chip Select (/CS) for the peripheral

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)

MISO este produs de sclav, dar generarea sa este controlat de master


MISO este uneori numit Serial Out (SO) sau Serial Data Out (SDO)

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

Dac se dorete doar o scriere, master-ul va neglija octetul recepionat


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 :

INTERFEE SERIALE SINCRONE


USART (Universal Synchronous Asynchronous Receiver Transmitter) are o a treia linie pentru ceas. IIC (I2C) (The Inter-IC bus) este o magistral sincron multi-master ce funcioneaz pe principiul master slave.
Folosete dou linii, pentru comunicaie half-duplex : SCL (Serial Clock Line) SDL (Serial Data Line), numit uneori SDA (Serial DAta)

UART frame format

master 1 SDL SCL 11 slave 1 data line clock line slave 2

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

Transfer de date pe I2C


Cnd linia este liber att SDA ct i SCL sunt la nivel SUS O tranzacie pe I2C ncepe cu SDA tras JOS, urmat de semnal pe SCL Dac SCL este JOS, iar pe SDA se face o tranziie SUS-JOS urmeaz o transmisie ("START condition) Pentru fiecare bit de date transmis (SDA) valoarea logic trebuie s se pstreze neschimbat pe durata SCL n stare SUS Valoarea binar de date e eantionat pe frontul cresctor al SCL. Tranzacia se ncheie cu SCL SUS i o tranziie jos-sus pe SDA ("STOP condition) Doar un master poate genera semnal de ceas pe SCL
15

Transfer de date pe I2C

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

Semnalizare de acknowledgement (bit ACK)


Generat ntotdeauna de receptor (master sau sclav)

Master transmitor

ACK

Sclav

dup recepia corect a adresei dup recepia corect a unui octet de date

Master receptor
17

ACK

Sclav
18

dup recepia corect a unui octet de date

Nivelul legturii de date


Fiecrui dispozitiv I2C i se aloc o adres. Adresele unice ale dispozitivelor sunt determinate de proiectantul sistemului, de obicei ca parte a programului driver pentru I2C. O adres de dispozitiv are 7 bii conform standardului I2C (la I2C extins adresele pot fi de 10 bii) Adresa 0000000 este utilizat pentru a semnala un apel general ("general call") sau emisie pentru magistral ("bus broadcast"), care poate fi folosit pentru a semnala / transmite simultan ctre toate dispozitivele. Adresele 11110XX sunt rezervate pentru schema extins cu adres pe 10 bii; exist de asemenea i alte adrese rezervate.

Nivelul legturii de date


O tranzacie de magistral const dintr-o serie de octei transmii: o adres i apoi unul sau mai muli octei de date. Format pentru transmisia adresei la I2C:

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

Transmitor / receptor asincorn universal (UART)


Transferul serial de I/O se face pe un singur fir pentru fiecare direcie Toate interfeele transmitor seriale convertesc datele paralele ntr-un flux binar serial, iar receptoarele fac conversia invers O asemenea comunicaie serial se poate face de exemplu ntre:
calculator i printer calculator i un control la distan calculator i terminal pentru reea Ethernet .......................


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

Diagram funcional UART

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

Asynchronous serial data

Detecia erorilor de paritate


Pentru a detecta erorilor, multe sisteme folosesc bitul de paritate, pentru verificarea datelor recepionate Bitul de paritate e calculat de transmitor i e inclus n cadrul de date Receptorul calculeaz paritatea pentru fiecare octet recepionat
Dac bitul de paritate calculat este identic cu cel recepionat, receptorul presupune c nu sunt erori

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)

Terminologia utilizat pentru RS-232C dateaz de asemenea din anii 60.


Un semnal high /tensiune negativ (1 logic) era numit "space" iar low (0) era numit "mark

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

Utilizeaz dou semnale ale interfeei RS-232C:


RTS (Request To Send) CTS (Clear To Send)

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

Implementarea unei interfee RS-232C


Multe MC incorporeaz cel puin un UARTpe chip, astfel c este necesar doar logic extern pentru conversia la / de la nivelurile de tensiune RS232C De exemplu se poate utiliza un transceiver MAX3222

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

Interfa RS-422 bidirecional

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

Conectarea unui MAX3483 la un MC

Reeaua RS-485 folosete circuite transceiver, cum este Maxim MAX3483

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