Lucrare de Laborator CD – Nr. 3
Transmisia Seriala. Dispozitive UART/USART
1.
Introducere
1.1 Scopul lucră rii
Scopul lucrării de laborator est e acela de a familiariza studenții cu aspectele practice de bază pentru utilizarea în aplicații a comunicației de date folosind transmisia serială bazată pe dispozitive de tip
UART/USART (Universal Asynchronous Receiver Transmitter/ Universal Synchronous-Asynchronous Receiver Transmitter). Astfel de dispozitive sunt intergrate în structuri de tip SoC (System on Chip). 1.2 Utilizarea magistralei RS232
Principiul de funționare, logica de transmisie au ramas aceleași chiar dacă dispozitivele recente sunt apte să lucreze pe 16, 32 sau 64 de biți și sunt pă rti componente ale microcontrollerelor/procesoarelor de ultima oră, putând fi programate pe baza unui sistem de registre mai complex. 2.
Brevier Teoretic
2.1 Comunicația serială vs paralelă
Într-un sistem de comunicație digital, transmisia datelor se poate face in 2 moduri: serial si paralel. Dacă în primul mod datele se transmit pe un singur fir, bit cu bit, in cel de-al doilea mod, cel paralel, datele se pot transmite pe mai multe fire conectate în paralel (informația este transmisă simultan pe mai multe fire).
– Comunicația paralelă vs serială Fig 1 – Comunicația
1
Lucrare de Laborator CD – Nr. 3
Diferențele între cele 2 tipuri de transmisie sunt prezentate in urmatorul tabel: Caracteristicile transmisiei
Transmisie serială
Transmisie paralelă
Descriere Viteza de transmisie Distanta de transmisie Aplicabilitate
Transmisie bit cu bit
Mai mulți biți transmiș i simultan Ridicată Scazută
Mediul de transmisie
Scazută Ridicată Comunicația între microcontroller-e
Retele de calculatoare Un singur canal pe care sunt transmiși biț ii, unul cate unul
Circuite integrate Memorii (RAM) Biții transmiși simultan pe mai multe canale paralele
2.2 Diferențe între UART și USART
Deși adesea noțiuniile sunt confundate între ele modulele UART SI USART diferă prin prezența sau
absenta semnalului de tact (clock) pentru sincronizarea intre circuite. Prin semnalul de tact se poate realiza în cazul USART-ului transimisa numai a datelor utile fară a mai fi nevoie de date auxialiare transmise pe langă, date precum Start bit, Parity bit etc. Din punct de vedere operațional orice circuit USART poate sa functioneze si in modul asincron. Comparând cele două moduri ajungem la urmatorul tabel: UART
USART (Mod sincron)
Are nevoie doar de linia de date
Are nevoie de linia de date și de o sursa de clock
Rata de transimisie a datelor poate varia
Rata de transmisie a datelor este fixă
Comunicatie Full duplex
Comunicatie Half duplex
Viteza de transfer maximă este in jurul a 115200 Permite viteze mai mari de transfer bps
Endianness (Big and Little Endian)
Endianness-ul se referă la ordinea octețiilor atât în memorie cât și în transmisia de date. Distingem două abordări: 1) Big endian, adesea denumit format Motorola în cadrul căruia cel mai cel mai semnificativ octet (MSB) este stocat sau transmis primul. 2) Little Endian denumit și format Intel în cadrul căruia cel mai cel mai puț in semnificativ octet (LSB) este stocat sau transmis primul. Iulstrarea celor două concepte se regăsește în Fig 2.
2
Lucrare de Laborator CD – Nr. 3
Fig 2 Diferența între little și big endian
La ora actuală nu s-a impus niciuna dintre abordări în detrimentul celeilalte astfel că în practică pot aparea probleme la conectarea diferitelor circuite în cazul in care nu se ține cont de oridinea cerută de către producător. 2.3 Aspecte generale despre comunicații prin RS232
Un sistem de comunicaţii de date are urmatoarele parţi componente: Sursa - echipamentul care generează datele; o o Destinaţia - echipamentul care primeşte datele; Canalul de comunicaţie (mediul). o Echipamentul sursă poate fi uneori şi receptor, sau invers. Din acest punct de vedere avem
urmatoarele tipuri de transmisii: 1. Transmisia simplex. Pe canal, datele se transmit într un singur sens. Exemplu: transmisia Radio TV clasică. 2. Transmisia duplex (sau full duplex). Pe canal, datele se transmit concomitent în ambele sensuri. Echipamentele sunt concomitent sursa şi receptor. Exemplu: telefonie, reţele de calculatoare. 3. Transmisia semiduplex. Pe canal, datele se transmit în ambele sensuri, dar nu concomitent, ci în intervale de timp distincte. Exemplu: interfoane, staţii radio mobile. Un model general a unui sistem de comunicaţii de date este aşa numitul sistem de comunicaţii cu 7 parţi
(Fig.3). Unde: 1 DTE
2
3
5
4
DCE
6
DCE Fig.3
1,7 - DTE (Data Terminal Equipment) este un terminal de comunicaţii de date 3,5 - DCE (Data Communication Equipment) este un modem 2,6 - sunt interfeţele dintre DTE şi DCE 3
7 DTE
Lucrare de Laborator CD – Nr. 3
Prin interfaţa înţelegem o specificaţie, un standard, prin care su nt definite caracteristicile mecanice, electrice şi logice prin care doua echipamente se interconectează. În sens mai larg, adesea, prin interfaţa se înţelege dispozitivul hardware care implementează funcţionalitaţile definite anterior. 4 - este canalul de comunicaţie. Ne propunem, în continuare, sa prezentăm pe scurt interfaţa serială standardizata sub acronimul RS232. Standardul a fost elaborat iniţial în SUA de catre organismul EIA (Electronic Industry Association). Ulterior, el a fost adoptat şi în Europa, sub denumirea V24, de catre CCITT. Un exemplu de comunicație RS232 este ilustrat (Fig. 4), iar semnificatiile funcționale in Tabel, mai jos:
Fig. 4 Comunicatie RS232
4
Lucrare de Laborator CD – Nr. 3
Tabel cu specificații funcționale:
5
Lucrare de Laborator CD – Nr. 3
Nivelel de tensiune sunt: - 25V ÷ - 3V pentru “1” logic şi + 3V ÷ + 25V pentru “0” logic.
Fig. 5 Nivelele de tensiune și valorile logice asociate 2.4 Structura USART 8251.
O schema bloc si o implementare (utilizare) hardware este redată în fig. 6 a), respectiv fig. 6 b):
Fig. 6 a) 6
Lucrare de Laborator CD – Nr. 3
Fig. 6 b) Interfața permite transferul sincron sau asincron. Formatul datelor in transferul asincron este (fig.7):
Fig. 7 Caracteristici: Sincronizare la nivel de caracter prin bitul START, 5 – 8 biţi de date, Opţional bit de paritate, 1, 1.5, 2 biţi de STOP. Informația între procesor (microcontroler) si 8251 se schimba pe baza unor registre tampoan pentru
receptie si emisie. Structura lor este conform fig. 8.
Fig.8 Recepţia: Pentru creşterea vitezei, a fost implementat conceptul de suprapunere (fig. 9). 7
Lucrare de Laborator CD – Nr. 3
Fig. 9 Suprapunerea la receptie.
Tamponul pentru recepţie este alcătuit din 2 registre, RA şi RB;
Datele sunt preluate de pe linia seriala în registrul RB, se elimina informaţia de cadrare, şi, dupa asamblarea unui caracter, acesta este transferat în registrul RA şi, simultan, este activat terminalul RXRDY şi rangul cu acelaşi nume din registrul de stare. Prin acest semnal, circuitul anunţa microprocesorul ca are un caracter asamblat pe care
poate sa i-l ofere.
Microprocesorul va trebui sa preia conţinutul registrului RA în timpul cât se asambleaza
un nou caracter în registrul RB. Dacă nu este îndeplinită aceasta cerinţa, vechiul caracter se pierde, întrucât în RB se va
transfera noul caracter şi circuitul va detecta eroare de ritm şi va poziţiona un rang din registrul de star e, anunţând astfel exteriorul că a aparut aceasta eroare. În acest fel, s – a realizat suprapunerea între timpul necesar preluării şi asamblă rii unui caracter de pe linia serială cu timpul necesar cit irii caracterului asamblat de către
microprocesor. Semnalul RXRDY este dezactivat doar de un semnal activ pe linia /RD, ceea ce corespunde unei citiri din partea microprocesorului.
Suprapunerea este ilustrata în fig.10.
Emisia:
Fig. 10
Tamponul pentru transmisie este alcătuit din 2 registre, TA şi TB (vezi fig.5). Unitatea centrala încarca un caracter în registrul TA, circuitul îl transfera în registrul TB,
de unde caracterul este serializat şi transmis pe linie. Dupa transferul conţinutului registrului TA în TB, circuit ul activeaza semnalul TXRDY
comunicând microprocesorului ca poate prelua un nou caracter.
Simultan este activat şi rangul cu acelaşi nume di n registrul de stare. 8
Lucrare de Laborator CD – Nr. 3
Dezactivarea terminalului TXRDY se face de primul front al semnalului /WR care corespunde operaţiei de scriere a unui nou caracter de catre microprocesor.
Terminalul TXRDY este activat la îndeplinirea condiţiilor descrise mai sus doar daca transmisia poate avea loc, adica rangul TXE din cuvântul de comanda este 1 şi terminalul
/CTS = 0; De remarcat ca rangul TXRDY din registrul de stare este activat indiferent de starea
rangului TXE şi a terminalului /CTS. Terminalul TXE este activat atunci când caracterul din TB a fost serializat şi transmis,
indicând microprocesorului ca tamponul de transmisie este gol. Daca microprocesorul nu scrie o noua data în registrul TA, pâna când circuitul a terminat
de serializat caracterul din TB, acesta va detecta eroare de ritm la transmisie şi va poziţiona rangul corespunzator din registrul de stare. De remarcat ca eroarea de ritm la recepţie este distructiva, în sensul ca se pierd caractere
pe când la transmisie nu este distructiva, provocând doar scaderea vitezei transmisiei.
Semnalele TxRDY şi RxRDY pot fi surse de cereri de întrerupere.
Exemple de conexiuni:
Fig. 11 Conexiune cu protocol hardware folosind RDS/CTS si DTR/DSR
Fig. 12 Conexiune cu număr minim de fire pentru protocol soft X-ON/X-OFF
9
Lucrare de Laborator CD – Nr. 3
Programarea circuitului se face pe baza unei logici illustrate în fig.13.
Fig.13 Structura cuvantului de mod pentru transmisie asincrona este: cea din fig. 14, cuvantul de comanda este în fig.15, iar cuvântul de stare în fig. 16.
Fig.14 10
Lucrare de Laborator CD – Nr. 3
Fig. 15
Fig.16 Utilizarea în cadrul proiectelor de electronică industrială şi comunicatii a numeroase componente comune precum: Microcontroller (uC), LCD, EEPROM, RAM, Real Time Clock, Convertoare analognumerice sau numeric-analogice, diferiti senzori (de temperatura, de presiune etc.) a determinat necesitatea dezvoltării acestei interfețe, sub forma unor noi circuite. EXEMPLU DE IMPLEMENTARE Pentru schema din fig. 5 b) să se realizeze o interfaţa seriala cu circuitul 8251 transferul facându– se prin program. Datele iniţiale ale transferului sunt: 8 biţi de date, fară paritate, 2 biţi de STOP, factor de
multiplicare 16, Rata de transfer: 9600 bps. 11
Lucrare de Laborator CD – Nr. 3
Sunt relevante:
Rutina de programare a circuitului specializat,
Rutinele de emisie şi recepţie.
Rezolvare: Adresele de port: 00H pentru date şi 02H pentru comenzi/ stari;
Rutina de programare: MOV AL,0CEH ; cuvânt de mod OUT 02H,AL MOV AL,15H ; cuvânt de comandă OUT 02H,AL Rutina de emitere caracter: AL,02H ; citire şi testare rang TxRDY din cuvântul d e stare Emite: IN RCR AL,1 JNC Emite MOV AL,CL ; se preia data din registrul CL OUT 00H,AL RET
Recept:
Rutina de recepţie caracter: AL,02H ; citire şi testare rang RxRDY din cuvântul de stare IN
RCR JNC IN MOV RET
AL,2 Recept AL,00H ; se preia data de la 8251 CL,AL ; se depune data în registrul CL
2.5 Structura USART a microcontroller-ului Atmega328p.
USART-ul prezent pe microcontroller-ul ATMEGA328P prezintă urmatoarele caracteristici: - Operare Full Duplex (Independent Serial Receive and Transmit Registers) - Operare în mod sincron si asincron - Suportă cadre cu 5, 6, 7, 8, sau 9 biți de date și 1 sau 2 biți de stop - Generarea și verificarea din HW a bitului de paritate - Detectia de “OverRun” la nivel de date - Detectia erorilor de format - Filtrarea automată a zgomotelor (include detecția de biti falși d e start și un filtru trece jos) O schemă bloc este redată în fig. 17 și o implementare (utilizare) descrisă în continuare.
12
Lucrare de Laborator CD – Nr. 3
Fig. 17 Se observa trei zone principale: a) Generatorul de tact; b) Emitatorul; c) Receptorul. Schema bloc a generatorului de tact este ilustrat in fig. 18.
13
Lucrare de Laborator CD – Nr. 3
Unde semnalele sunt:
Generatorul de tact are scopul de a genera tactul pentru transmisie și r eceptie și poate fi configurat în modurile: asincron normal, asincron double speed, sincron master si sincron slave. În modurile asincrone și sincron master generatorul fi cel care determina baud rate-ul, setarea registrului aferent se fa ce confrom cu urmatoarea formulă (în tabelul ce urmează):
Formatul datelor in transferul asincron este (fig.19):
14
Lucrare de Laborator CD – Nr. 3
Fig.19 Pentru transferul sincron se poate alege, funcție de aplicație, ca citirea și scrierea să se facă pe front urcător sau pe front coborâtor al semnalului de clock. Modul de operare sincron este ilustrat in fig. 20.
Fig.20 Dacă este nevoie de utilizarea unui bit de paritate acesta se poate fi par sau impar și se defineste prin operația de sau pe biții de data
Pentru a avea loc citirea și scrierea de date perifericul de USART trebuie itițializat, un exemplu de inițializare este urmatorul:
15
Lucrare de Laborator CD – Nr. 3
Pentru a asigura transmisia sau receptia tuturor datelor se poate proceda in două moduri polling sau întrerupere. Pentru citirea prin polling pașii ce trebuie urmați sunt descrisi in diagrama din fig. 21 a) de mai jos.
Fig. 21 Diagrama se ”traduce” în cod în felul următor:
Pentru scrierea datelor și verificarea scrierii prin polling, pasii ce trebuie urmati sunt descriși î n diagrama din fig. 21 b). Diagrama se ”traduce” in cod in felul urmator:
Detectia de erori se face prin intermediul registrului UCSRnA, astfel se pot determina erori de paritate, suprapuneri de date, și de format. Documentatia completă a microcontroller-ului Atmega 328p se gaseste la urmatorul link: http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328328P_datasheet.pdf 16
Lucrare de Laborator CD – Nr. 3
3. Parte practica
1. Consider ând transmisia serială asincronă să se deseneze diagrama de timp pentru transmisia codului ASCII pentru caracterele A, Q având urmatoarele caracteristici: a) 8 biti de date, 1 stop bit, fară bit de paritate b) 8 biti de date, 1 stop bit, paritate even 2. Folosind placa de dezvoltare Arduino sau simularea în mediul Proteus să se realizeze transmisia/recepția de mesaje pe interfața USART prin polling si prin intrerupere 4. Tema proiect
Să se realizeze in mediul Proteus comunicația serială între 2 microcontrolere Arduino328p in modul
asincron. Să se realizeze în mediul Proteus comunicația RS232 folosind circuitul MAX232, înregistrand secvența de date și nivelele de tensiune. BIBLIOGRAFIE 1. Doc umentație Interfața USART 8251 . 2. Documentație circuite 8253, Max 232, 74LS138.
3. Documentatie Atmega328p 4. Proiectarea microsistelelor digitale - Note de curs (M. Popa) OBSERVAȚII (i) - La examinarea de final de curs NU este nevoie ca studenţii să memorize poziţia fiecărui bit de
programare. Întrebarea de la test va fi asociată cu un text care va conţine toate datele necesare rezolvării. (ii)- Nu se poate proiecta o aplicaţie cu datele furnizate de acest material, pentru că modulul este didactic şi nu conţine detalii privind variaţia în timp a semnalelor, valorile lor logice în care semnalele su nt active, etc. Pentru proiectare este nevoie de consultarea foilor de catalog.
17