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

SPI - Serial Peripheral Interface

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:

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:

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

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

Serial Peripheral Interface

Serial Peripheral Interface

1.
2.
3.
4.

SPI este o interfa serial sincron


toate transmisiile sunt sincronizate cu un semnal de ceas comun
furnizat de master (microcontroller)

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

SPI utilizeaz patru semnale:

Master Out Slave In (MOSI)


Master In Slave Out (MISO)
Serial CLock (SCLK sau SCK)
Chip Select (/CS) for the peripheral

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)

Un master selecteaz un sclav prin activarea intrrii sale de chip


select
Un periferic ne-selectat nu va lua parte la transferul SPI

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


master

Semnalul de chip select ctre periferice este de obicei generat cu


ajutorul unui pin de I/O digital a masterului

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

TRANSMISIA SPI

INTERFAA 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

DAISY-CHAINED TRANSFER

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

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)

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

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)

SCI

10

INTERFEE SERIALE SINCRONE

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 :

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)

master 1

UART frame format

11

master 2

SDL

data line

SCL

clock line
slave 1

slave 2

slave 3

12

Generaliti I2C

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)

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

Transfer de date pe I2C

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

16

Semnalizare de acknowledgement
(bit ACK)

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

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

ACK

Sclav

dup recepia corect a unui octet de date


17

Nivelul legturii de date

18

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.

19

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

20

ARBITRARE I2C

Un pachet I2C

I2C este o magistral multi-master


Mai multe dispozitive master pot porni transmisia n acelai timp !!

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

Adrese speciale

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

22

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

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

24

Transmitor / receptor asincorn


universal (UART)

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

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
.......................

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)

25

26

Diagram funcional UART

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

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

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

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

29

30

Detecia erorilor de paritate

Asynchronous serial data

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

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 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

RS-232C

34

RS-232C

O legtur RS-232C const dintr-un driver i un comparator:

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

Conectri 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 ?

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

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

Calculatorul este DTE sau DCE?

Dac se conecteaz un modem


la un calculator, calculatorul va fi
DTE

37

38

Conexiuni RS-232C

Shake Hands

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

Function

25-pin

9-pin

Direction

Tx

Transmitted Data

From DTE to DCE

Rx

Received Data

To DTE from DCE

RTS

Request To Send

From DTE to DCE

CTS

Clear To Send

To DTE from DCE

DTR

Data Terminal Ready

20

From DTE to DCE

DSR

Data Set Ready

To DTE from DCE

DCD

Data Carrier Detect

To DTE from DCE

RI

Ring Indicator

22

To DTE from DCE

FG

Frame Ground (chassis)

Common

SG

Signal Ground

Common

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

Hardware handshaking

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

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

Implementarea unei interfee RS-232C

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

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

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

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

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

RS-422

46

Interfa RS-422 bidirecional

Diferenele de tensiune dintre cele dou fire se ncadreaz n intervalul


4 V i 12 V

47

48

RS-485

Conectarea unui MAX3483 la un MC

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

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

49

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

50

S-ar putea să vă placă și