osnove mikroprocesorske...

41
Osnove mikroprocesorske elektronike doc. dr. Marko Jankovec Asinhrone serijske komunikacije

Upload: others

Post on 09-Jan-2020

17 views

Category:

Documents


3 download

TRANSCRIPT

Osnove mikroprocesorske elektronikedoc. dr. Marko Jankovec

Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

Zaporedna (serijska) vodila

• UART

• RS-232

• RS-485

• RS-422

• MIDI

• DMX-512

• …

• 1Wire

• USB

• SATA

• CAN

• LIN

• Ethernet

Asinhrona

• SPI

• IIC (I2C)

Sinhrona

• Enosmerni prenos (simplex)

• Izmenični dvosmerni prenos (half-duplex)

• Sočasni dvosmerni prenos (full-duplex)

Smer prenosa

• enojna

• simetrična

Tip linije

22.5.2013Asinhrone serijske komunikacije

2

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 3

Pretvorba iz vzporednega v zaporedno vodilo

22.5.2013Asinhrone serijske komunikacije

Q

QSET

CLR

D

Q

QSET

CLR

D

Q

QSET

CLR

D

Q

QSET

CLR

D

D3=1 D2=0 D1=1 D0=1

clk

1011

Q

QSET

CLR

D

Q

QSET

CLR

D

Q

QSET

CLR

D

Q

QSET

CLR

D

clk

1011

D3=1 D2=0 D1=1 D0=1

reset

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 4

Asinhrona serijska komunikacija (UART)

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 5

Asinhrona serijska komunikacija (UART)

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 6

Težave pri neusklajenih urah

22.5.2013Asinhrone serijske komunikacije

Sprejemnik vzorči na sredini vsakega bita

Ura vzorčenja sprejemnika je prepočasna. Prebrana vrednost je napačna!

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 7

Pariteta bitov

22.5.2013Asinhrone serijske komunikacije

• Izračun paritete bitov: ▫ Pomeni vsoto vseh bitov po modulu 1

p(10110011) = 1^0^1^1^0^0^1^1=1

▫ Pomeni tudi lihost in sodost števila enic v podatku p(10110011) = 5 enic = liho število = 1

• Tipi paritete▫ Soda (even): 𝑝 = 𝑏1^𝑏2^𝑏3^…𝑏𝑛▫ Liha (odd): 𝑝 = 𝑏1^𝑏2^𝑏3^…𝑏𝑛

• Oddajnik izračuna pariteto sporočila in jo pošlje na koncu kot dodatni bit▫ 101100111

• Sprejemnik izračuna pariteto in jo primerja s sprejeto vrednostjo▫ 101100011▫ p(10110001)=0, napaka!!

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

Možnosti asinhrone serijske komunikacije• Liha ali soda pariteta • 1 ali 2 stop bita

• Standardne hitrosti prenosa (baudrate)▫ 2400▫ 4800▫ 9600▫ 19200▫ 38400▫ 57600▫ 115200

22.5.2013Asinhrone serijske komunikacije

8

𝑝𝑙𝑖ℎ𝑎 11010011 = 1

𝑝𝑠𝑜𝑑𝑎 11010011 = 00 1 0 0 1 0 0 0

start podatki pariteta

stop biti

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 9

Smer prenosa podatkov

22.5.2013Asinhrone serijske komunikacije

Enosmerni prenos

Izmenično

dvosmerni prenos

Sočasni

dvosmerni prenos

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

USART vmesnik pri AVR

22.5.2013Asinhrone serijske komunikacije

10

• Full duplex

• Baud rate generator

• 5,6,7,8,9 bitov podatkov

• 1 ali 2 stop bita

• Liha ali soda pariteta

▫ generacija

▫ preverjanje

• Detekcija

▫ prepisa prejšnjega podatka (dataoverrun)

▫ napake stop bita (framing error)

• Digitalni filter

▫ 16x ali 8x vzorčenje vsakega bita

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 11

Hitrost prenosa (baud rate)

22.5.2013Asinhrone serijske komunikacije

• Vzorčenje vhodnih podatkov

Način delovanja Izračun hitrosti Izračun vrednosti UBRR

Normalni (U2X=0)𝐵𝐴𝑈𝐷 =

𝑓𝑂𝑆𝐶16 𝑈𝐵𝑅𝑅 + 1

𝑈𝐵𝑅𝑅 =𝑓𝑂𝑆𝐶

16 𝐵𝐴𝑈𝐷− 1

Dvojna hitrost (U2X=1)𝐵𝐴𝑈𝐷 =

𝑓𝑂𝑆𝐶8 𝑈𝐵𝑅𝑅 + 1

𝑈𝐵𝑅𝑅 =𝑓𝑂𝑆𝐶

8 𝐵𝐴𝑈𝐷− 1

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 12

Dopustne napake hitrosti

22.5.2013Asinhrone serijske komunikacije

• Za 8 podatkovnih bitov brez paritete, 1 stop bit

▫ ±2% napaka frekvence za normalen način

▫ ± 1.5 % napaka za dvojno hitrost

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 13

Inicializacija USART

22.5.2013Asinhrone serijske komunikacije

• ATmega324 ima dva neodvisna USART vmesnika

▫ USARTn (n=0 ali 1)

void USART_Init( unsigned int baud )

{

/* Set baud rate */

UBRRHn = (unsigned char)(baud>>8);

UBRRLn = (unsigned char)baud;

/* Enable receiver and transmitter */

UCSRnB = (1<<RXENn)|(1<<TXENn);

/* Set frame format: 8data, 2stop bit */

UCSRnC = (1<<USBSn)|(3<<UCSZn0);

}

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 14

Oddaja podatka

22.5.2013Asinhrone serijske komunikacije

• Najprej je potrebno preveriti, če slučajno ne teče oddaja podatka (UDREn – USART Data Register Empty)

• Oddaja podatka se začne v trenutku vpisa vrednosti v UDRn register

void USART_Transmit( unsigned char data )

{

/* Wait for empty transmit buffer */

while ( !( UCSRnA & (1<<UDREn)) );

/* Put data into buffer, sends the data */

UDRn = data;

}

• Ko je podatek oddan, se sproži prekinitev TXCn (Transmitcomplete), če je omogočena

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 15

Sprejem podatka

22.5.2013Asinhrone serijske komunikacije

• Najprej je potrebno preveriti, če je podatek prispel (RxCn- Receive Complete)

• Nato čim prej preberemo podatek v registru UDRn

unsigned char USART_Receive( void )

{

/* Wait for data to be received */

while ( !(UCSRnA & (1<<RXCn)) );

/* Get and return received data from buffer */

return UDRn;

}

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 16

Asinhrona serijska vodila

22.5.2013Asinhrone serijske komunikacije

• RS-232▫ Enosmerni ali dvosmerni prenos▫ Enojna linija▫ Najbolj razširjen standard serijske komunikacije

• RS-485▫ Enosmerni prenos▫ Simetrična linija▫ Namenjena za dolge povezave

• RS-422▫ Dvosmerni prenos▫ Simetrična linija▫ Namenjena za dolge povezave

• MIDI▫ Dvosmerni prenos▫ Galvansko ločeni signali▫ Za glasbene inštrumente

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 17

RS-232

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 18

RS-232

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 19

RS-232 električni nivoji

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

Signal

DCD

RD

TD

DTR

GND

DSR

RTS

CTS

RI

RS-232 povezava med DTE in DCE

Pin

1

2

3

4

5

6

7

8

9

22.5.2013Asinhrone serijske komunikacije

20

Pin

1

2

3

4

5

6

7

8

9

DTE (računalnik) DCE (naprava)

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 21

RS-232 signali

22.5.2013Asinhrone serijske komunikacije

Signal Pomen Opis

TD Transmit Data Pošiljanje podatkov.

RD Receive Data Sprejemanje podatkov.

GND Ground Signalna masa za vse signale.

DTR Data Terminal Ready DTE (računalnik) javi, da je pripravljena za komunikacijo

DSR Data Set Ready DCE (naprava) javi kdaj pripravljena za komunikacijo.

RTS Request to Send DTE (računalnik) javi napravi, da želi poslati podatke.

CTS Clear To Send DCE (naprava) javi računalniku, da lahko sprejme podatke.

DCD Data Carrier Detect DCE (naprava) javi, da je modemska zveza po telefonski liniji vzpostavljena.

RI Ring Indicator DCE (naprava) javi, da zvoni telefon in da se bo zveza vzpostavila.

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 22

RS-232 protokol

22.5.2013Asinhrone serijske komunikacije

• Strojno usklajevanje (Hardware handshaking)

TD,RD

DTR

DSR

RTS

CTS

TD/RD

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 23

RS-232 protokol

22.5.2013Asinhrone serijske komunikacije

• Podatkovno usklajevanje (Xon/Xoff)▫ Uporabno, če je vsebina sporočil tekstovna (ASCII)

▫ Dva specialna ASCII znaka, ki jih DCE sporoči DTE (ali obratno) če je sposoben sprejemati sporočilo

• Zmanjša število potrebnih povezav na 3▫ TD, RD in GND

Koda Pomen ASCII DEC Hex Tipkovnica

Xoff Zaustavi prenos DC3 19 0x13 CTRL+S

Xon Nadaljuj prenos DC1 17 0x11 CTRL+Q

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 24

Nastavitve RS-232 serijskega vmesnika na PC

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

RD

TD

DTR

GND

DSR

RTS

CTS

RD

TD

DTR

GND

DSR

RTS

CTS

RS-232 povezava med DTE in DTE (null modem)

Pin

1

2

3

4

5

6

7

8

9

22.5.2013Asinhrone serijske komunikacije

25

Pin

1

2

3

4

5

6

7

8

9

DTE (računalnik) DTE (računalnik)

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

RD

TD

GND

RD

TD

GND

RS-232 povezava brez usklajevanja

Pin

1

2

3

4

5

6

7

8

9

22.5.2013Asinhrone serijske komunikacije

26

Pin

1

2

3

4

5

6

7

8

9

DTE (računalnik) DTE (računalnik)

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

RD

TD

DTR

GND

DSR

RTS

CTS

RD

TD

DTR

GND

DSR

RTS

CTS

RS-232 povezava z delnim usklajevanjem (partial handshaking)

Pin

1

2

3

4

5

6

7

8

9

22.5.2013Asinhrone serijske komunikacije

27

Pin

1

2

3

4

5

6

7

8

9

DTE (računalnik) DTE (računalnik)

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

RD

TD

DTR

GND

DSR

RTS

CTS

RD

TD

DTR

GND

DSR

RTS

CTS

RS-232 povezava s samousklajevanjem(loop back handshaking)

Pin

1

2

3

4

5

6

7

8

9

22.5.2013Asinhrone serijske komunikacije

28

Pin

1

2

3

4

5

6

7

8

9

DTE (računalnik) DTE (računalnik)

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

RS-232 rezime

Prednosti Slabosti

• Zahteva minimalno dve signalni liniji in maso

• Sočasno dvosmerni prenos (fullduplex)

• detekcija napak

• Dodatni signalne linije omogočajo usklajevanje komunikacije –handshaking

• Je industrijski standard

• Podpirajo ga vsi mikrokrmilniki

• Razdalja v praksi do 20 m

• Občutljivost na motnje zaradi nihanja potenciala mase

• Komunikacija med dvema napravama - ne omogoča mrežne povezave

• Potrebne višje napetosti (± 12 V)

• Nizka prenosna hitrost

22.5.2013

29Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E

Pretvornik napetostnih nivojev• Max-232 in njegove izpeljanke

• http://www.maxim-ic.com/datasheet/index.mvp/id/1798

22.5.2013Asinhrone serijske komunikacije

30

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 31

USB-RS232 pretvornik

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 32

Neposredna povezava FT232R na mikrokrmilnik

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 33

Primer kode za komunikacijo z FT232R

22.5.2013Asinhrone serijske komunikacije

//reverzna logika: 0 = aktivno, 1=neaktivno

#define FT_RTS PINB.0 //FTDI signalizira, da je pripravljen sprejeti znak

#define FT_CTS PORTB.1 //uC signalizira, da je pripravljen sprejeti znak

void FT_putchar(unsigned char c)

{

while (FT_RTS); //počakaj dokler FTDI ne signalizira RTS

while ( (UCSRA & 1<<UDRE)==0 ); //počakaj, dokler UDR ni prazen

UDR=c; //pošlji znak

}

unsigned char FT_getchar(void)

{

FT_CTS=0; //signaliziraj CTS

while ( (UCSRA & 1<<RXC)==0 ); //počakaj, dokler ne pride podatek

FT_CTS=1; //postavi CTS

return(UDR); // vrni vsebino registra UDR

}

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 34

RS-422 in RS-485

22.5.2013Asinhrone serijske komunikacije

• Diferencialna povezava prek sukanega vodnika

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 35

RS-422 in RS-485 gonilnik

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 36

Primerjava

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 37

Logični nivoji

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 38

Pretvornik RS-232 -> RS-485

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 39

USB-RS-485 pretvornik

22.5.2013Asinhrone serijske komunikacije

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 40

RS-485 protokol

22.5.2013Asinhrone serijske komunikacije

• Ni standardiziran

• Ena naprava je gospodar (Master), ostale so sužnji (Slaves)

• Gospodar mora nasloviti želeno napravo▫ naprava nato sprejema ukaze in pošilja podatke

▫ Vloga gospodarja se lahko menja

• Primer protokola

Podatek STX Naslov prejemnika

Naslov pošiljatelja

Število podatkov

Podatki CRC ETX

Št.znakov

1 2 2 4 Maks.4096

2 1

O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 41

MIDI – Musical Instrument Digital Interface

22.5.2013Asinhrone serijske komunikacije

• Definirana hitrost 31250 baud

• Galvanska ločitev

• Tokovna zanka

• Enosmerni prenos po dveh žicah brez usklajevanja

220

220

Vcc

TXD

Vcc

Vcc

220

270

Vcc

RXD