osnove mikroprocesorske...
TRANSCRIPT
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