Author
phungdan
View
222
Download
1
Embed Size (px)
INTERFEE DE COMUNICAIE SERIAL LA
MICROCONTROLLERE
2
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) 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
3
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
Sunt interfee de pre redus i uor de implementat
4
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
5
Serial Peripheral Interface
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 Un master selecteaz un sclav prin activarea intrrii sale de chip
select Un periferic ne-selectat nu va lua parte la transferul SPI
6
Serial Peripheral Interface SPI utilizeaz patru semnale:
1. Master Out Slave In (MOSI)2. Master In Slave Out (MISO)3. Serial CLock (SCLK sau SCK)4. 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) 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
7
INTERFAA SPI
8
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
9
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
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 (daisy-chained)
10
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
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)
11
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 :
UART frame format
12
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)
SCL
SDL data line
clock line
master 1 master 2
slave 1 slave 2 slave 3
13
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)
14
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
15
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
16
Transfer de date pe I2C
17
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
18
Semnalizare de acknowledgement(bit ACK)
Generat ntotdeauna de receptor (master sau sclav)
ACK
dup recepia corect a adreseidup recepia corect a unui octet de date
SclavMaster transmitor
Master receptor SclavACK
dup recepia corect a unui octet de date
19
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.
20
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 R/W
7bii 1bit
21
ARBITRARE I2C
I2C este o magistral multi-masterMai 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
22
Un pachet I2C
23
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
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
24
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
25
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
26
Transmitor / receptor asincornuniversal (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 .......................
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)
27
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)
28
Diagram funcional UART
29
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
30
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
31
Asynchronous serial data
32
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
33
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 ......
34
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
35
RS-232C
O legtur RS-232C const dintr-un driver i un comparator:
36
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
37
RS-232Cconectare 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?
Standardul RS-232C spune c dac un terminal este la un capt al legturii, la cellalt capt este un DCE
Dac se conecteaz un modem la un calculator, calculatorul va fi DTE
Dac se conecteaz un terminal la o staie Unix workstation, standardul RS-232C spune c staia de lucru este un DCE
38
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
39
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 Function 25-pin 9-pin Direction
Tx Transmitted Data 2 3 From DTE to DCE
Rx Received Data 3 2 To DTE from DCE
RTS Request To Send 4 7 From DTE to DCE
CTS Clear To Send 5 8 To DTE from DCE
DTR Data Terminal Ready 20 4 From DTE to DCE
DSR Data Set Ready 6 6 To DTE from DCE
DCD Data Carrier Detect 8 1 To DTE from DCE
RI Ring Indicator 22 9 To DTE from DCE
FG Frame Ground (chassis) 1 - Common
SG Signal Ground 7 5 Common
40
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
41
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 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
42
Hardware handshaking
Utilizeaz dou semnale ale interfeei RS-232C: RTS (Request To Send) CTS (Clear To Send)
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.
43
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
44
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 RS-232C
De exemplu se poate utiliza un transceiver MAX3222
45
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
46
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 .
47
RS-422
Diferenele de tensiune dintre cele dou fire se ncadreaz n intervalul4 V i 12 V
48
Interfa RS-422 bidirecional
49
RS-485 RS-485 este o variant a RS-422 utilizat pentru legarea dispozitivelor ntr-
o 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
50
Conectarea unui MAX3483 la un MC
51
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