DIY Personal Fabrication Drahtgebundene Kommunikation Juergen Eckert – Informatik 7.
-
Upload
waltraud-heimberger -
Category
Documents
-
view
105 -
download
0
Transcript of DIY Personal Fabrication Drahtgebundene Kommunikation Juergen Eckert – Informatik 7.
DIY
Personal Fabrication
Drahtgebundene Kommunikation
Juergen Eckert – Informatik 7
Fahrplan
• UART• SPI• TWI
Kommunikation Grundlagen (1/2)
• Taster und LED (siehe Bsp. vor Weihnachten) sind einfache Schnittstellen zur Kommunikation
• Kommunikation = Austausch von Signalen (z.B. Licht oder Spannung)
• Signal– Information in Form einer physikalischen Größe– Kategorisierungstupel:
• Wert: kontinuierlich oder diskret• Zeit: kontinuierlich oder diskretheute
Kommunikation Grundlagen (2/2)
• Leitungskodierung bei binären Signalen = Zuordnung der Signalwerte zu 0 oder 1
• Übertragungsart:– Parallel: mehrere Bits gleichzeitig– Seriell: zeitlich aufeinander folgende Bits
• Weitere Eigenschaften:1. Synchron (selbsttaktend) oder asynchron: Sendertakt wird
mit übermittelt2. Gleichstromfrei: Kein bestimmter Pegel in Ref zu GND3. Bandbreitenbedarf: Breite des Frequenzbands, um Signal
zu übertragen.
Leitungskodierung (1/2)• Non-Return-To-Zero (NRZ):
„1“ = High, „0“ = Low, ¬(1), unipolar: ¬(2), polar: (2)✓• NRZ-Invert (NRZI):
„1“ = Wechsel, „0“ = kein Wechsel, ¬(1), ¬(2), verpolungssicher• Bipolar:
„0“ = Nullpegel, „1“ = alternierend Low und High, ¬(1), (2) ✓• Manchester-Kodierung:
Pegelwechsel in Taktmitte, „1“ = High→Low, „0“ = Low→High, (1) , ¬(2), ✓benötigt doppelte Bandbreite, Verwendung bei Ethernet
• Differentielle Manchester-Kodierung: Pegelwechsel in Taktmitte und zusätzliche Taktwechsel am Flankenanfang,„1“ = kein Wechsel, „0“ = Wechsel, (1) , (2) , nochmal höhere Bandbreite, ✓ ✓Verwendung bei Token Ring
(Hier: High und Low sind Symbole die Spannung repräsentieren)
Leitungskodierung (2/2)
NRZI
1 0 1 0 1 1 0 01
Unipolares NRZ
Bipolar
Manchester-Kodierung
DifferentielleManchester-
Kodierung
Polares NRZ
Bitsequenz
Referenz
Übertragungssystem
• Systemtheorie: mathematisches Modell zur Beschreibung des Übertragungsverhaltens
• Signalübertragung (Pegelwechsel) benötigt Energie (je höher die Freq. desto mehr)
• Bandbreitenbeschränkung (min. und max. Freq.)– Signalverzerrung– Idealisiert: Freq. 0..fC unverändert, höhere Freq. stark
gedämpft. (Low Pass Filter)
Übertragungs-system
Eingangssignal Ausgangssignal
s1(t) s2(t)
Theorie (Fourierreihen, Fouriertransformation, Abtasttheorem, ...) siehe RK Vorlesung[Hier (aus Zeitgründen) Daumenregel: Signal auf das Medium geben und mit Oszi überprüfen]
Serielle Schnittstelle (1/2)
• Meist genutztes Interface (DIY/HACKs)• EIA-232 (RS-232, V.10) in 1962– Punkt-zu-Punkt Verbindung (1:1)– Asynchron– Geschwindigkeit in Baud = Symbolrate ≠
Bits/s• Neuere serielle Schnittstellen:– Ethernet– USB– S-ATA– ...
max. Baud
max. Länge
2400 900m4800 300m9600 152m19200 15m57600 5m115200 <2m
Foto: Wikipedia
Alle Differenziell:• 2 Leitungen übertragen das gleiche Signal,
eine Leitung ist invertiert (Ursprung: RS485)• Hohe Toleranz gegenüber el-mag. Störungen
Differenzielle Signalübertragung(Einschub)
Foto: Wikipedia
Serielle Schnittstelle (2/2)
• RS-232: NRZ polar, mit TTL Logik: unipolar– TTL „1“ = 3.3V oder 5V und „0“ = 0V
• Baudrate mussbekannt sein
• Üblich: 8N1(ohne Parity)
• 5-9 bit• LSB first
Foto: Wikipedia
t
Universal Asynchronous Receiver Transmitter (UART)
• Hardware in fast jedem Mikrocontroller
Manchmal auch USART: S steht für synchronous, also alternative Konfigurationsart
Atmel AVR
AVR: 1Byte Puffer
Andere bietenmehr Hardware-Support (Puffer)
Hardware UART (Bsp: AVR) (1/3)
Programmier Tutorial:• Hardware wird mittels Bits in Register kontrolliert• Beschreibung siehe Datenblatt
void USART_Init( unsigned int baud ) {
/* Set baud rate */UBRRH = (unsigned char)(regbaud>>8);UBRRL = (unsigned char)regbaud;/* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN);/* Set frame format: 8data, 2stop bit */UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
} Trick: Sender 8N2, Empfänger 8N1→Empfänger hat 1bit mehr Zeit zur Verarbeitung
Hardware UART (Bsp: AVR) (2/3)
• Aktives warten bis das Register frei ist• Daten in Register schreiben.• Mikrocontroller kann andere Sachen erledigen
während der UART die Daten versendet
void USART_Transmit( unsigned char data ) {
/* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) )
;/* Put data into buffer, sends the data */ UDR = data;
}
Hardware UART (Bsp: AVR) (3/3)
• Schreib- und Lesezugriff auf Register kann unterschiedliche Resultate haben (Bsp: UDR)– AVR UART ist Full Duplex
(senden und empfangen gleichzeitig)
unsigned char USART_Receive( void ) {
/* Wait for data to be received */while ( !(UCSRA & (1<<RXC)) )
;/* Get and return received data from buffer */ return UDR;
}
UART und Interrupts
• UART kann Interrupt nach dem Versenden oder Empfangen eines Bytes auslösen. → Kein aktives Warten notwendig!
• Komplexere MCUs haben FIFO Warteschlangen oder DMA Controller→ Interrupt nur noch alle n Bytes
Software UART (= pain)
• Hardware bietet viele Vorteile:Geschwindigkeit, Interrupts, Fehlererkennung,...
• Wenn mehr UARTs benötigt werden als vorhanden kann der UART auch in Software mittels GPIO Pins implementiert werden.– „Semi-Software“ Lösungen (Kombination aus
Interrupts und Timer) möglich– Sonst idR Half-Duplex
• Umgangssprachlich: Bit-Banging
Software UART (AVR304)TX RX
Hier: Kein Stop Bit Test
Serielle Schnittstelle in der Praxis
• RS232 Service- und Konfigurationsschnittstelle– Heutzutage sonst eher unüblich– Heute: TTL oder CMOS UART (auf den Pegel achten!)
• Debugging:– 2 weitere UARTS (die 2 Empfangsleitungen)– Bus Pirate– Oszilloskop (2 Kanal)– Logic Analyzer
• Verwendung in Modulen– GPS, Bluetooth, WiFi, ...Für Modultest:USB nach Seriell Adapter (z.B. mittels FTDI)
Punkt-zu-Punkt Verbindung
• Jedes Modul benötigt dedizierte Hardware (Pins)
Mikrocontroller ModulTX
TX RX
RX
Binary Unit System (BUS)
• Datenübertragung zwischen mehreren Teilnehmern über einen gemeinsamen Übertragungsweg
• Aktive Konten: Master– Greifen selbstständig auf den BUS zu
• Passive Knoten: Slave• Varianten– Single-Master (1:n) Bsp: SPI– Multi-Master (m:n) Bsp: TWI (aka. I2C)
(weiterhin seriell)
Serial Peripheral Interface (SPI)
• Synchronous Serial Port (SSP) • Master-Slave Paradigma (1:n)• Full Duplex• „Lockerer“ Standard
SCLK (Clock)MISO (Master In Slave Out)MOSI (Master Out Slave In)Andere Namen mögl. (SDI/SDO)
Von Motorola
Foto: Wikipedia
SPI Topologie
Fotos: Wikipedia
Kaskadierung (Daisy-Chain)• Slave nur über Vorgänger
ansprechbar• Benötigt wenig IOs• Bsp. APA102 LEDs
Stern• Jeder Slave benötigt dedizierte
Slave Select (SS) Leitung• Schneller bei beliebigen Zugriff• Meist verbreitet
Leitungskodierung (1/2)
• Unipolares NRZ für alle Leitungen• 4 Modi basieren aus Kombination von– Clock Polarität (CPOL)– Clock Phase (CPHA)
Folgen des lockeren Standards:• Keine festgelegt Bit- und Byte-Order– MSB oder LSB first– Little oder Big Endian
• Keine festgelegt Bitanzahl (üblich 8-16bit)
Siehe Datenblatt
Leitungskodierung (2/2)
Foto: Wikipedia
Rot
Blau
SPI in der Praxis
• Mikrocontroller– Hardware Unterstützung– Software Mode einfacher als UART
(zumindest als Master)• Debugging– Bus Pirate– Oszilloskop (2-4 Kanäle)– Logic Analyzer
• Verwendung– SD-Karte (MMC)– So gut wie jeder Chip
Für Chiptest:Bus Pirate
Foto: dangerousprototypes.com
Single- vs. Multi-Master (1/2)
• Single-Master– Alle Kommunikation wird vom Master initiiert– Zentrale Kommunikation
Beispiel SPI: • Clock Leitung wird nur vom Master getrieben• Paralleler Zugriff auf die Clock Leitung kann Hardware
beschädigen• Bus-Arbiter (lat.: „Richter“) kann Zugriff regeln– Komplex / Aufwendig
Single- vs. Multi-Master (2/2)
• Multi-Master– Mehrere aktive Konten auf dem geteilten Bus– Dezentrale Kommunikation
Arbitrierung (Zugriffsregelung auf den Bus) • Bus-Arbiter (de-) zentral Komponente (High
Level)• Auf Leitungsebene (Low Level)
Multi-Master Medienzugriff
• SPI: Clock HI Leitung Clock LOW ⚡️⚡️⚡️⇨ ⇦• Dominantes und Rezessives Bit– Verhindern von Hardwarebeschädigung wenn
unterschiedliche Signals auf der Leitung– Dominantes Bit verdrängt rezessives Bit
• Bekannte Beispiele:– CAN-BUS (Automobilbereich, 1987)– I2C
Inter-Integrated Circuit (I2C)
• Philips Semiconductors (heute NXP), 1982• Schaltungsinterne Kommunikation (zwischen ICs)• Ab Mitte der 1990er lizenzierte Drittanbieter• Two-Wire-Interface (TWI) lizenzfreie alternative– 2006 I2C Patent abgelaufen
• TWI = I2C ≈ SMBus– System Management Bus gedacht für stromsparende
PCs
Physikalische Schicht I2C
• Datenleitung: SDA, Taktleitung SCK (Half Duplex)• Buszugriff mittels Open-drains– Low dominant, High rezessiv
• High Zustand mittels Pull-Up Widerstande– High-Speed:
Konstant StromSenke
Foto: Lammertbies
Medienzugriff I2C
• Start Kondition (S): SDA , SCL=1⤵︎︎��• Bit übertragen (BX) (MSB zuerst):– Sender: Pegel auf SDA während SCL=0– Empfänger: SDA sampeln nachdem SCL ⤴︎�
• Stop Kondition (P): SDA , SCL=1⤴︎�
Foto: Wikipedia
Transferschicht
• Zwischen Start und Stop beliebig viele Bits• Byteweise Übertragung• 9 Bit pro Byte: Letztes Bit = Bestätigung des
Empfängers (ACK = „0“ = Low)• Erstes Byte nach Start:– 7 Bit Adressierung: 112 Adressen (16 reserviert)• Erweiterung auf 10 Bit (mittels 2. Adressbyte)
– 8. Bit Kommunikationsrichtung • Master lesen oder schreiben
Beispiel: AT24CXX EEprom (=persistenter Speicher)
Adress-Pins
Lesen
Schreiben
(Zuvor muss der Lese-Pointer gesetzt werden) Fotos: Datenblatt
I2C/TWI in der Praxis
• Siehe SPI Folie
• Anwendung:– „Low Power“ / „Langsame“ ICs
UART / I2C / SPI im VergleichUART I2C/TWI SPI
Leitungen 1-2 2 2-3 +1 je Chip
Konnektivität 1:1 m:n 1:n
Distanz Einige Meter Einige Zentimeter < 1m
Geschwindigkeit 1200-115k2 Baud(Einige Mbaud)
100-400 kbit/s(Bis zu 5Mbit/s)
>> 10Mbit/s
Synchronität - + +
Für große Entfernungen empfiehlt sich ein höheres Spannungspotential und/oder ein differenzielles Signal
Nächstes mal bei DIY
• Drahtlose Kommunikation (Crash Kurs)• ISO OSI Referenzmodell