Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll LIN, CAN Asynkron/synkron seriell överföring Programmering av USART-krets

Relevanta dokument
Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1

Tentamen med lösningsförslag

Seriekomunikation. CAN ett kommunikationsprotokoll för realtidssystem. Seriekomunikation -forts. Seriekomunikation -forts

Dataöverföring på Parallell- och serieform MOP 11/12 1

Projektlaboration 4, synkronisering av klockan

Tentamen med lösningsförslag

GPIO - General Purpose Input Output

Tillförlitlig dataöverföring Egenskaper hos en länk Accessmetoder. Jens A Andersson

Programmering av inbyggda system. Seriekommunikation. Viktor Kämpe

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Ulf Assarsson. Grafisk display + seriekommunika3on (USART) Läromoment: USART Grundläggande C-programmering del 2

GPIO - General Purpose Input Output

MAC-(sub)lagret. Nätlagret. Datalänklagret. Fysiska lagret LLC MAC. LLC = Logical Link Control-sublager MAC = Media Access Control-sublager

Datakommunikation i fordon

Maskinorienterad programmering

Bussar och I/O. samt. vad kan man göra med NEXYS3

Laborationer onsdag/fredag. Laborationer onsdag/fredag. Tillförlitlig dataöverföring Multiplexering Lokala nät (inledning) Labbmanual

Instuderingsfrågor ETS052 Datorkommuniktion

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Enkla datatyper minne

Tillförlitlig dataöverföring Egenskaper hos en länk Accessmetoder. Jens A Andersson

Datorbaserad mätteknik

Produkter och tjänster inom fordonsel

Övning 7. Timer, serieport

Föreläsning 3. Datakodning (Data encoding) Mål (fortsättning) Länk Mottagare. Sändare

Lösningar till tentan i ETS052 Datorkommunikation

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Arduinokurs. Kurstillfälle 4

Assemblerprogrammering för ARM del 2

Grundläggande datavetenskap, 4p

Tillförlitlig dataöverföring. Jens A Andersson

Modbus Seriell Kommunikation

Tentamen med lösningsförslag

Lokala nät Ethernet o 802.x. (Maria Kihl)

Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Tentamen med lösningsförslag

FX2N-232-IF, kommunikationsmodul KI00055F

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Kapitel 3 o 4. Tillförlitlig dataöverföring. (Maria Kihl)

Lokala nät (forts ) Ethernet o 802.x Stora nät och behovet av nätprotokoll IP. Felkorrektion. Att bekräfta paket. Jens A Andersson (Maria Kihl)

Vad är kommunikation? Vad är datorkommunikation? Dataöverföring; Inledning

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

DA HT2011: F18. Länklagret och uppkopplingstekniker Ann-Sofi Åhn

Bussar och I/O. samt. vad kan man göra med NEXYS3. Nexys3. Prog + spänningsmatning. Expansionskort

Kihl & Andersson: , 4.5 Stallings: , , (7.3)

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

LTH, Institutionen för Elektro- och Informationsteknik (EIT)

Länkhantering (feldetektering, felhantering, flödeskontroll) Maria Kihl

6 Lågnivåprogrammering

Kommunikationssystem grundkurs, 2G1501 Övningar modul 1 Dataöverföring & fysisk infrastruktur 1 Dataöverföring

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

Föreläsning 4. Multiplexering (1/2) Multiplexering (2/2) Multiplexering Närnät

Övningar modul 1 - Dataöverföring & fysisk infrastruktur

BSR Diagnostic tool Communcation over CAN and K-line bus

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Access till nätet. Maria Kihl

Grundstruktur. Grundstruktur

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Klassdeklaration. Metoddeklaration. Parameteröverföring

Datakommunikation med IR-ljus.

(Lösningsförslag finns sist i denna fil.)

Kapitel 3 o 4 Att skicka signaler på en länk Tillförlitlig dataöverföring. Att göra. Att sända information mellan datorer

OH Slides E: Local Area Networks. Repeater. Vanliga LANtopologier. Några av IEEE 802 protokollen. Hub. Ring. Stjärnnät. Buss

Denna genomgång behandlar följande:

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Tentamen med lösningsförslag

Assemblerprogrammering, ARM-Cortex M4 del 3

Examples on Analog Transmission

Dokumentation för funktionsblocksbibliotek MwaCOMLI

6. Blandade uppgifter

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

LTH, Institutionen för Elektro- och Informationsteknik (EIT) ETS052 Datorkommunikation Sluttentamen: , 14-19

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Allt om datalogging och datakommunikation!

Arduinokurs. Del 1 - Vett och etikett. Talsystem. Binärt ettor och nollor

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3

Sekvensnät vippor, register och bussar

Kapitel 5: Lokala nät Ethernet o 802.x. Felkorrektion. Att bekräfta paket. Jens A Andersson (Maria Kihl)

Adressrum, programmerarens bild

LiTH Lab1: Asynkron seriell dataöverföring via optisk länk Laboration 1. Asynkron seriell dataöverföring via optisk länk

Trådlös kommunikation En introduktion av Open Systems Engineering AB

Industriell Datakommunikation

Kihl & Andersson: , Stallings: , 12.1, 12.2, 13.1, 13.3

DATALINK-NÄTVERK. Hårdvarubyggklossar

EDI022. Digitala Projekt. Rapport. Björn Åkesson 5/20/2011

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

KomSys Repetition. Emma Fitzgerald

Kihl & Andersson: , 3.1-2, (ej CDM) Stallings: 3.1-4, 5.1, 5.2, 5.3, 8.1, 8.2

Allmänt om Modbus. Modbus

BiDisp2 PRODUKTIONSSYSTEM. Robust och flexibel display för industriella tillämpningar

Styrteknik: Binära tal, talsystem och koder D3:1

Maskinorienterad programmering

Digital kommunikation. Maria Kihl

Maskinorienterad Programmering LP3-2017/2018

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Transkript:

Seriekommunikation Ur innehållet: Nätverkstopologier Nätverksprotokoll LIN, CAN Asynkron/synkron seriell överföring Programmering av USART-krets Läsanvisningar: Arbetsbok kapitel 7 Seriekommunikation 1

Parallell överföring + god bandbredd - många ledare ger dyrare överföringsmedia mycket snabbt vid korta avstånd Seriekommunikation 2

Seriell överföring + få ledare ger enklare (billigare) överföringsmedia - sämre bandbredd överföringshastighet efter prestandakrav Seriekommunikation 3

Nätverkstopologi Strukturer för hur datorer kopplas i hop, ofta ser man kombinationer av de olika varianterna. Olika protokoll har utvecklats för olika strukturer, exvis: RS232 (punkt till punkt) Ethernet (mask, stjärna) Token ring (ring) USB (träd) CAN, LIN (buss) Seriekommunikation 4

Nätverksprotokoll Kommunikationsmedia Ett "kommunikationsprotokoll" är en uppsättning regler som tillsammans entydigt specificerar hur datautbytet (datakommunikationen) ska gå till. Protokollen baseras oftast på någon speciell nätverkstopologi och förutsätter någon speciell accessmetod. Med acessmetod (åtkomstmetod) menar man den policy som används när en nod behöver skicka data och därför måste använda kommunikationsmediat. De vanligaste är: Master/Slave CDMA, Collission Detect, Multiple Access CRMA, Collission Resolution, Multiple Access TDMA, Time Division, Multiple Access "token, ring-protokoll Seriekommunikation 5

Protokoll i fordonstillämpningar Mirror Lock Lock Window lift Power Train Instruments Seat Heating Heating Infotainment systems Central body control Climate Roof Heating Trunk Steering wheel panel Very high performance High performance Medium performance Lock Lock Seat Mirror Mirror Heating Lock Seat Seat Universal motor Universal panel Interior lights Low end performance Seriekommunikation 6

LIN, typiska tillämpningar Roof: (high amount of wiring) Rain Sensor, Light Sensor, Light Control, Sun Roof (Rain Sensor needs to be interrogated every 10-20ms) Door/window/seat: Mirror,Central ECU, Mirror, Switch, Window Lift, Seat Control Switch, Door Lock, etc. Steering Wheel: (very many controls are going to be positioned on the steering wheel) Climate: many Small Motors Control Panel Cruise Control, Wiper, Turning Light, Optional: Climate Control, Radio, Telephone, etc. Seat: many Seat Position Motors, Occupancy Sensor, Control Panel Seriekommunikation 7

LIN, kommunikation (master/slave) master control unit polling master task slave task slave control unit slave task slave control unit slave task inter-frame spacing synch Identifier field next synch field Master Task Response spacing 2 byte 1 byte data block parity time Slave Task time Seriekommunikation 8

CAN, Controller Area Network Bus topology CSMA/CR (Carrier sense, Multiple Access/ Collision Resolution) Feldetekteringsmöjlighet Stödjer atomic broadcast Twisted pair Maximum 1 Mbit/s ARB CTRL DATA CRC ACK EOF Arbitration (identifier) Control information 0-8 bytes Checksum Acknowledge End of frame MESSAGE FRAME SOF ARB CTRL DATA CRC ACK EOF Seriekommunikation 9

CAN, detektering av busskrock Idle bus (recessive level) Bus transceivers Open collector Bus level: Recessive (bit) 1 Dominant (bit) 0 Bus level +5V R 1 1 NodeA Node B Seriekommunikation 10

CAN, detektering av busskrock Two nodes transmitting same level (1) transmit 1 transmit 1 receive 1 Bus level +5V I R = 0 receive 1 1 1 1 I A = 0 Node A 1 1 Node B 1 I B = 0 Seriekommunikation 11

CAN, detektering av busskrock transmit 0 receive 0 +5V R Bus level: 0V I R =I A transmit 1 receive 0 Node A Node B 0 0 0 1 1 0 1 1 I A I B =0 Node B avbryter sändning eftersom den mottagna biten skiljer sig från den sända Seriekommunikation 12

CAN, arbitrering Arbitration field (identifier med prioritet) EXEMPEL: Tre noder startar samtidigt Node A sänder: $257 (0010 0101 0111) Node B sänder: $360 (0011 0110 0000) Node C sänder: $25F (0010 0101 1111) Bit nummer SOF 1 2 3 4 5 6 7 8 9 10 11 12 13 Bus level D D D R D D R D R D R R R R Node A 0 0 0 1 0 0 1 0 1 0 1 1 1 1 Node B 0 0 0 1 1 Aborts Node C 0 0 0 1 0 0 1 0 1 1 Aborts Seriekommunikation 13

Asynkron överföring, Startbitsdetektering Protokollet anger en ledig -nivå på kommunikationsledningen. Då nivån växlar tolkas detta som en startbit (t 0 ). Mottagaren läser därefter av ledningen ( samplar ) efter ett halvt bitintervall (t 1 ) och därefter ytterligare hela bitintervall (t 2,t 3,t 4 osv). Observera att sändare och mottagare på förhand måste veta vilken bitrate som används. Seriekommunikation 14

Klocksynkronisering Även om bitraten är den samma kan skillnader i klockor orsaka en förskjutning av mottagarens sampling som så småningom resulterar i att fel bitintervall samplas... Genom att specificera maximalt antal bitar som skickas vid ett tillfälle, en ram, kan man också bestämma en största tillåten differens och därmed också acceptera skillnader hos sändares respektive mottagare klockor. Seriekommunikation 15

RS232, 9-bitars ram Exempel på hur en ram kan se ut Bitarnas betydelse definieras mera exakt av protokollet Exempelvis, RS232 : ASCII-tecknet z (= 01111010=0x7A, LSB först) överförs då på följande sätt Seriekommunikation 16

Synkron överföring Gemensam klocksignal och data EXEMPEL: Manchester kodning, bitlängden bestäms av positiva flanker, nivån i mitten av biten anger 0 eller 1. Metoden kallas RZ (Return to Zero) Kräver bara en ledning men minskar bandbredden. Seriekommunikation 17

Synkron överföring Klocksignal och data på skilda ledningar Kräver två ledningar men ökar bandbredden. Används för enklare tillämpningar, industristandarder: SPI (Serial Peripheral Interface) I 2 C använder denna teknik. Seriekommunikation 18

USART Universal Synchronous/Asynchronous Receiver/Transmitter Fysiskt gränssnitt (transceiver) RS232 (PtoP, duplex) LIN (asynkron buss) USART IR(trådlöst) Smartcard (synkron buss) Seriekommunikation 19

USART RS232 Ofta kommuniceras UTF8 (ASCII-) tecknen "Terminal"- konsollfönster Det finns 8 olika seriekretsar... Fysiskt gränssnitt (transceiver) Terminal Programmerarens bild USART RS232 Seriekommunikation 20

USART programmerarens bild, som en struct... Registeruppsättning typedef struct tag_usart { volatile unsigned short sr; volatile unsigned short Unused0; volatile unsigned short dr; volatile unsigned short Unused1; volatile unsigned short brr; volatile unsigned short Unused2; volatile unsigned short cr1; volatile unsigned short Unused3; volatile unsigned short cr2; volatile unsigned short Unused4; volatile unsigned short cr3; volatile unsigned short Unused5; volatile unsigned short gtpr; } USART; #define USART1 ((USART *) 0x40011000) Seriekommunikation 21

USART Dataregister Läsning: RDR, Receive data register Innehåller det senast anlända tecknet från serielänken USART Statusregister Skrivning TDR, Transmit data register Tecken som skickas ut på serielänken Bit 7 ;TXE, Transmit data register empty är 1 om TDR tomt (ledigt) är 0 om tecken håller på att skickas (upptaget) nollställs vid skrivning till DR OUTCHAR(c): // Vänta tills TXE är 1 // Skriv 'c' till dataregistret Bit 5 ; RXNE, Receive data register not empty är 1 om nytt tecken finns i RDR är 0 om inget nytt tecken nollställs vid läsning från DR TSTCHAR: réturnera c // Är RXNE=1? // Nej, c = 0 // Ja, läs c från dataregistret // Returnera c Seriekommunikation 22

EXEMPEL: Enkla in- och utmatningsrutiner med USART Skapa funktioner: void _outchar(char c) som matar ut ASCII-tecknet 'c' till en terminal. char _tstchar(void) som kontrollerar om något tecken anlänt från terminalen, i så fall returnerar detta, annars returneras 0. char _inchar(void) som väntar tills något tecken anlänt från terminalen, och returnerar detta. Vi löser på tavlan... Seriekommunikation 23

USART feldetektering Bit 3 ORE: Overrun Error Denna bit sätts av hårdvaran om ett nytt tecken anländer samtidigt som det finns ett oläst tecken i dataregistret ("overrun error"). Ett avbrott genereras om RXNEIE = 1 i USART_CR1. Det återställs av en läsning från USART_SR följt av en läsning från USART_DR. 0: Inget förlorat tecken 1: Mottaget tecken är överskrivet (förlorat) Bit 1 FE: Framing Error Denna bit sätts av hårdvara när ett ramfel, oftast orsakat av förlorad synkronisering, upptäckts. Biten återställs av en läsning från USART_SR följt av en läsning från USART_DR. 0: Inget ramfel upptäcks 1: Ramfel eller BREAK-ram detekterad Bit 2 NF: Noise detection Flag Denna bit sätts av hårdvara när störningar i form av brus upptäcks i en mottagen ram. Biten återställs av en läsning från USART_SR följt av en läsning från USART_DR. 0: Ingen störning detekterad 1: Störning detekterad Bit 0 PE: Parity Error Denna bit sätts av hårdvara när ett paritetsfel uppträder hos mottagaren. Biten återställs av en läsning från USART_SR följt av en läsning från USART_DR. Programmet måste vänta på att RXNE-biten ettställts innan PE-biten återställs. Ett avbrott genereras om PEIE = 1 i USART_CR1. 0: Inget paritetsfel 1: Paritetsfel Seriekommunikation 24

USART initiering (CR1, CR2 och CR3) Maskinorienterad programmering #define UE (1<<13) #define TE (1<<3) #define RE (1<<2) USART1->cr1 = UE TE RE; USART_CR2 innehåller huvudsakligen kontroll för funktioner då USART implementerar LIN-protokollet. USART_CR3 innehåller kontroll för handskakningssignaler (RS232) och för funktioner då USART implementerar SmartCard eller IR-protokoll. Seriekommunikation 25

USART initiering av "baudrate" EXEMPEL: Sätt baudrate hos MD407 till 115200 baud 1. Bestäm USART_BRR för baudrate 115200, OVER8=0 USARTDIV = f CK / (Baudrate 16) USARTDIV = 84 10 6 / (115 200 16) = 45,573 2. Konvertera till hexadecimala tal: 45 10 = 2D 16 0,573 10 9/16 3. Sätt baudrate-registret: USART1->brr = 0x2D9; void _init(void) { USART1->brr = 0x2D9; USART1->cr3 = 0; USART1->cr2 = 0; USART1->cr1 = UE TE RE; } Seriekommunikation 26

USART med avbrott Att överföra ett 10-bitars ord med bithastigheten 115200 baud tar ca 80 µs. Antag pessimistiskt att en genomsnittlig instruktion tar 4 klockcykler, cykeltiden (168 MHz är cirka 6 ns, dvs. en genomsnittlig instruktion något mindre än 24 ns. Det innebär att den väntetid som krävs mellan överföringen av två tecken motsvarar 80 10-6 /24 10-9, dvs. exekveringstiden för ca 3300 instruktioner. #define TXEIE (1<<7) #define TCIE (1<<6) #define RXNEIE (1<<5) Seriekommunikation 27

EXEMPEL: USART med avbrott Maskinorienterad programmering EXEMPEL: Skapa funktioner: void usart_outchar(char c) char usart_tstchar(void) void usart_init(void) som initierar USART-kretsen för avbrottsdriven kommunikation void usart_irq_routine(void) med en enkel 1-teckenbuffert för mottagare resp. sändare. Använd följande testprogram: void main(void) { char c; usart_init(); while( 1 ) { c = usart_tstchar(); if ( c ) usart_outchar(c); } } Vi löser på tavlan... Seriekommunikation 28